微服务技术--认识微服务

news2025/7/7 20:10:45

技术栈:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZ5I5Q04-1671717226154)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221120503366.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-biIWADbM-1671717226159)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221120644023.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUpj99eJ-1671717226159)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221121347389.png)]

  • 认识微服务

    • 服务架构演变

      • 单体架构

        • 将业务的功能集中在一个项目中开发,打成一个包部署
        • 优点:
          • 架构简单
          • 部署成本低
        • 缺点:
          • 耦合度高
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqEDCvr6-1671717226160)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221150750575.png)]
      • 分布式架构

        • 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
        • 优点:
          • 降低服务耦合
          • 有利于服务升级拓展
        • 问题:
          • 服务拆分粒度如何?
          • 服务集群地址如何维护?
          • 服务之间如何实现远程调用?
          • 服务健康状态如何感知?
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rAxglusl-1671717226161)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221150921484.png)]
      • 微服务是一种良好架构设计的分布式架构方案

        • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
        • 面向服务:微服务对外暴露业务接口
        • 自治:团队独立,技术独立,数据独立,部署独立
        • 隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题
        • 缺点架构非常复杂,运维,监控,部署难度提高
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CSHoSl8b-1671717226163)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221150959884.png)]
    • 微服务技术对比

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8SgRKzO-1671717226164)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221152244913.png)]

      • 企业需求[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9Ot50rp-1671717226164)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221152635857.png)]

    • SpringCloud

      • SpringCloud是目前国内使用最广泛的微服务框架。官网地址:SpringCloud官网

      • SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZmst11J-1671717226165)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221153319614.png)]

      • SpringCloud与SpringBoot的版本兼容性关系如下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kntnal5h-1671717226165)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221153638862.png)]

  • 分布式服务架构案例

    • 服务拆分及远程调用

      • 服务拆分注意事项

        1. 不同微服务,不要重复开发相同业务
        2. 微服务数据独立,不要访问其它微服务的数据库
        3. 微服务可以将自己的业务暴露为接口,供其它微服务调用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STBls3EO-1671717226166)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221154207816.png)]
      • 拆分Demo[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4aUuCY61-1671717226167)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221154446023.png)]

      • 拆分服务之后产生的问题:在8080端口服务查询订单时并没有将用户信息一起返回[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsSimrnW-1671717226168)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221224139080.png)]
        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwu6xBJA-1671717226168)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221224123143.png)]

      • 解决问题(微服务远程调用):[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8m0aLung-1671717226169)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221224706756.png)]

      • 注册RestTemplate:在order-service的模块中注册RestTemplate

        @Configuration
        public class RestTemplateConfig {
        
            /**
             * 创建RestTemplate并注入Spring容器
             * @return
             */
            @Bean
            public RestTemplate restTemplate(){
                return new RestTemplate();
            }
        }
        

        在查询订单时发送http请求用户信息

        @Service
        public class OrderService {
        
            @Autowired
            private OrderMapper orderMapper;
        
            @Autowired
            private RestTemplate restTemplate;
            public Order queryOrderById(Long orderId) {
                // 1.查询订单
                Order order = orderMapper.findById(orderId);
                // 2.利用RestTemplate发起http请求,查询用户
                // 2.1.url路径
                String url ="http://localhost:8081/user/"+order.getUserId();
                // 2.2发送http请求,实现远程调用
                User user = restTemplate.getForObject(url, User.class);
                // 3.封装user到Order
                order.setUser(user);
                // 4.返回
                return order;
            }
        }
        

        这样就可以在查询订单消息的同时查询用户信息,解决了微服务远程调用

        微服务调用方式:

        • 基于RestTemplate发起的http请求实现远程
        • http请求做远程调用是与语言无关的调用,只要知道对方的ip,端口,接口路径,请求参数即可。

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCqBCN2P-1671717226169)(C:\Users\20745\AppData\Roaming\Typora\typora-user-images\image-20221221231503391.png)]

    • 提供者与消费者

      • 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其它微服务)
      • 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
      • 提供者与消费者角色其实是相对的
      • 一个服务可以同时是服务提供者和服务消费者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑盒测试用例设计 - 场景法

原理 现在的软件几乎都是用时间触发来控制流程的。测试时,可以以生动的描述出触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基…

[洛谷]P2234 [HNOI2002]营业额统计

[洛谷]P2234 [HNOI2002]营业额统计一、问题描述题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示二、问题分析1、算法标签2、思路分析三、代码实现一、问题描述 [洛谷]P2234 [HNOI2002]营业额统计 题目描述 Tiger 最近被公司升任为营业部经理,他上任后…

微服务系列 - Zookeeper下篇:源码解析

前言 关于zookeeper的入门到精通请阅读:微服务系列 - Zookeeper上篇 注:本内容仅用于个人学习笔记,如有侵扰,联系删除 参考文档:https://blog.csdn.net/mjb740074431/article/details/120173792 一、算法基础 Zook…

@Configuration注解

1.作用 Configuration注解的作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。 2.基础运用 Configuration注解最常见的搭配使用有两个:Bean和Scope Bean:等价于Spring中的bean标签用于注册bean对象的&#xff…

SpringBoot 过滤器、拦截器、监听器对比及使用场景

一、关系图理解 二、区别 1.过滤器 过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁 可以对请求的URL进行过滤, 对敏感词过滤 挡在拦截器的外层 实现的是 javax.servlet.Filter 接口,是 Servlet 规范的一部分 在请求进入容器后,但…

Java 线程的六种状态及其简易转换

1.Java中线程的状态分为六种 NEW:初始状态,线程被创建,但是还没有调用start()方法。 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态笼统地称作“运行中”。 BLOCKED:阻塞状态,表示线程阻塞于…

IJCAI-2022 多级发射方法的脉冲神经网络

原文链接:CSDN-脉冲神经网络(SNN)论文阅读(四)-----IJCAI-2022 多级发射方法的脉冲神经网络 Multi-Level Firing with Spiking DS-ResNet: Enabling Better and Deeper Directly-Trained Spiking Neural Networks目录说…

SAP UI5 Smart Table 和 Smart Filter Bar 的联合使用方法介绍试读版

本教程第 147 个步骤,我们介绍了 SAP UI5 Smart Table 控件的用法: SAP UI5 应用开发教程之一百四十七 - SAP UI5 SmartTable 控件的使用介绍 如下图所示: 本步骤我们在 Smart Table 本身的基础上再进一步,学习如何将 Smart Tab…

占道摆摊经营监控报警系统 yolov5

占道摆摊经营监控报警系统通过Python基于yolov5深度学习网络模型,对城市道路区域实时检测,当yolov5模型检测到有流动摊点摆摊违规经营时,立即抓拍告警。Yolo模型采用预定义预测区域的方法来完成目标检测,具体而言是将原始图像划分…

[java]-JDBC

JDBC 是 Java 连接数据库的一种方式,它是一种 Java API,可以用于连接数据库,并且可以访问数据库中的数据。 JDBC 原理 JDBC 是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库!每…

USB TO SPI(上海同旺电子)调试器调试MCP4822

所需设备: 1、USB TO SPI(上海同旺电子); 2、MCP4822:双通道12 位电压输出DAC; 特性 • MCP4802:双通道8 位电压输出DAC • MCP4812:双通道10 位电压输出DAC • MCP4822:双通道12 位电压输出DAC • 轨对…

React18:创建React项目(自动)

文章目录使用步骤项目目录结构Node_modulesPublicSrcPackage.Json总结使用步骤 打开命令行进入到项目所在目录使用如下命令:npx create-react-app 项目名 注意:项目名不能带大写字符 项目目录结构 项目目录结构如下: react-app├─ no…

网络实验之RIPV2协议(二)

一、RIPV2协议和实验简介 RIP-2是一种无类别路由协议(Classless Routing Protocol),支持路由标记,在路由策略中可根据路由标记对路由进行灵活的控制。报文中携带掩码信息,支持路由聚合和CIDR(Classless Int…

MMIM(2021 EMNLP)分级互信息最大化

论文题目(Title):Improving Multimodal Fusion with Hierarchical Mutual Information Maximization for Multimodal Sentiment Analysis 研究问题(Question):提出了一个名为 (MMIM),它在层次上…

Centos7下安装Nginx及配置SSL

文章目录1.官网下载Nginx2.安装依赖包3.安装Nginx4.启动Nginx5.防火墙放开端口6.Nginx的SSL模块安装7.SSL证书准备8.Nginx配置SSL1.官网下载Nginx ​ 去官网下载需要的nginx压缩包,地址:http://nginx.org/en/download.html,此处下载最新稳定…

DFS——剪枝

文章目录概述优化搜索顺序排除等效冗余可行性剪枝最优性剪枝例题小猫爬山木棒总结概述 优化搜索顺序 不同的搜索顺序会产生不同的搜索树形态,与可行性剪枝结合,去除非法状态,按照一定顺序可使规模大幅度减小。 例: 给定一个无重复…

JavaSE第6篇:面向对象上

一、面向对象 1、面向对象:人关注对象、人关注具体事物信息 2、对象: 只要是客观存在的事物皆为对象 面向对象程序设计的重点是类的设计 设计类就是设计类的成员 思考:人把大象装进冰箱 ? 面向过程POP思想:强调的是过程(动…

Web前端开发入门学习分享

Web前端开发入门学习分享 1&#xff1a;如何开始学习Web前端 首先你需要学习html的各个标签&#xff0c;掌握其用法和规范&#xff0c;明白其作用。 开始学习css的使用&#xff0c;你先学习在html页面中为标签增加css样式&#xff0c;其次是将css写在网页的<head></…

【记录】chmod修改组属性失效问题

记录一次chmod命令修改文件夹失效问题。 1.问题描述 有一个普通用户的目录test权限是750&#xff0c;使用chmod将文件权限修改成770发现同组的其他用户无法在该目录创建文件。 2.问题原因 给目录设置acl权限导致chmod在修改文件权限时失效【其实不是失效了】 调研发现&#…

超1.58亿人将“血拼”,超级星期六购物节即将到来

超1.58亿人将“血拼”&#xff01;美国超级星期六购物节即将到来&#xff01;亚马逊出手整治“远仓近送”&#xff01;据美国零售联合会的年度消费者调查结果显示&#xff0c;在今年圣诞节前的最后一个星期六&#xff08;即超级星期六&#xff09;&#xff0c;将有1.58亿人发生…