IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 微服务技术--认识微服务 -> 正文阅读

[Java知识库]微服务技术--认识微服务

技术栈:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]

    • 提供者与消费者

      • 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其它微服务)
      • 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
      • 提供者与消费者角色其实是相对的
      • 一个服务可以同时是服务提供者和服务消费者
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:52:39  更:2022-12-25 10:57:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 18:23:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码