• SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断


    1 远程服务资源的调用

      1.1 古老的套路

        在微服务出现之前,所有的远程服务资源必须通过RestTemplate或者HttpClient进行;但是这两者仅仅实现了远程服务资源的调用,并未提供负载均衡实现,所以程序员必须自己实现负载均衡功能;而且当远程服务是集群部署时,利用RestTemplate或者HttpClient封装的客户端必须配置好远程服务的先关信息。

        技巧01:利用Spring5.X 提供的WebClient可以实现响应式访问远程服务资源

          技巧02:利用RestTemplate和WebClient封装客户端的参考博文:参考博文01  参考博文02  

        缺点01:需要自己实现负载均衡功能

        绝点02:封装客户端时必须配置好远程服务的信息,如果远程服务是集群部署时工作量时巨大的;而且一旦远程服务信息变动,客户端也必须进行变动

      1.2 微服务套路

        微服务出现过后,封装的客户端不需要配置远程服务的信息,因为这些信息都有注册中心统一帮我们进行管理,也不需要自己实现负载均衡功能;基于SpringCloud的微服务之间的通讯方式主要通过 ribbon + restTemplate 或者 feign 实现

        技巧01:利用 ribbon + restTemplate 实现时其实和只用RestTemplate实现的区别就在于不用配置远程服务的信息,而且提供了负载均衡功能

        技巧02:ribbon 负责获取注册中心的远程服务信息以及提供负载均衡功能

    2 Ribbon知识点

      daigengxin.......

    3 Feign知识点

      待更新........

    4 项目准备

      4.1 注册中心 Eureka Server

        创建一个单例的服务注册中心

      4.2 服务提供者 Eureka Client

      4.3 服务消费者 Eureka Client 

    5 利用 Ribbon + RestTemplate 实现

      利用 Ribbon + RestTemplate 调用远程服务资源

      技巧01:先启动服务注册中心

      5.1 创建远程服务Restful API

        在服务提供的服务中提供一个Restful API接口供服务消费方调用

      5.2 集群部署服务提供方

        将服务提供方打包后在不同的端口启动即可,本案例直接利用IDEA进行集群部署

         5.2.1 打开应用配置

        5.2.2 复制一份原来的配置

        5.2.3 修改配置信息

          只需要修改配置名称和启动端口即可

        5.2.4 分别启动两个配置即可

          技巧01:每个配置启动前可以修改相关的内容信息,这样做的目的是为了开发阶段可以看到效果;生产中时不能更改内容信息的,因为时集群嘛,内容肯定需要保持一致

          技巧02:如果项目中利用了devtools依赖,请注释掉,并关闭IDEA的自动编译功能

        5.2.5 到注册中心控制面板查看信息

          可以看到一个应用在两个端口启动了

        5.2.6 分别访问restful API

      5.3 编写远程调用控制类

        在服务消费方利用RestTemplate调用服务提供方提供的资源数据,参考文档

         》配置RestTemplate的Bean

        》利用RestTemplate调用

          技巧01:远程服务的信息直接利用远程服务的应用名代替,应用名就是spring.application.name的值

      5.4 通过消费者服务调用远程资源测试

        技巧01:ribbon默认使用轮询来实现负载均衡功能

    6 利用 Feign 实现

      技巧01:feign默认集成了ribbon

      技巧02:在需要使用feign的服务中需要引入feign依赖在启动类上添加@EnableFeignClients注解

            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>

      6.1 创建远程服务Restful API

        请参见5.1

      6.2 编写远程调用接口

      6.3 编写远程调用的控制层

      6.4 通过消费者服务调用远程资源测试

       6.5 熔断

        参考博文

    7 本博文源代码

      点击前往

      

  • 相关阅读:
    hdu4276 依赖背包
    poj1155 依赖背包
    cf219d 基础换根法
    贪婪大陆——(树状数组)
    数星星(树状数组或者线段树)
    拓扑排序基础题——排序
    Codeforces Round #511 (Div. 1) T2 Little C Loves 3 II
    除虫药水(简单dp)
    烽火传递(单调队列优化dp,然而蒟蒻用一个优先队列做)
    ZOJ----3471Most powerful(简单状压dp)
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/9537751.html
Copyright © 2020-2023  润新知