美文网首页java面试
Spring Cloud微服务架构 - 服务消费者rest+ri

Spring Cloud微服务架构 - 服务消费者rest+ri

作者: AKyS佐毅 | 来源:发表于2018-02-11 16:03 被阅读52次

服务消费者

  • 消费者模式包含:

    • 1、服务直连模式:

      • 简洁明了,无法保证服务的可用性,平台语言无关性,生产环境比较少用。
    • 2、客户端发现模式:

      • 1、服务实例启动后,将自己的位置信息提交到服务注册表。
      • 2、客户端从服务注册表查询,来获取可用的服务实例。
      • 3、客户端自行使用负载均衡算法从多个实例中选择一个使用。
    • 3、服务端发现模式

      • 特殊就在于是服务端实现负载均衡。


  • 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。

这里我们使用ribbon ,实现服务的转发功能,从而实现负载均衡。

  • 在Spring Cloud框架中,负载均衡服务本身也要作为一个发现客户端注册到Eureka服务器上。客户发起一个请求时,需要在Eureke服务器上发现负载均衡服务,负载均衡服务通过RestTemplate调用微服务的接口时,会通过Ribbon进行负载均衡。这样,不同的服务请求会由负载均衡机制分别调用微服务的不同实例。
  • ribbon 是一个客户端负载均衡器,可以简单的理解成类似于 nginx的负载均衡模块的功能。ribbon是一个为客户端提供负载均衡功能的服务,它内部提供了一个叫做ILoadBalance的接口代表负载均衡器的操作,比如有添加服务器操作、选择服务器操作、获取所有的服务器列表、获取可用的服务器列表等等。

  • Ribbon的工作原理
    分为两步:

    • 1、 第一步有限选择Eureka Server,它优先选择在同一个Zone且负载较少的Server,
    • 2、 第二步在根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多重策略,例如轮询round robin、随机Random、根据相应时间加权等。

项目中如何配置

  • 新建项目Server-Ribbon项目

  • application.yml 配置信息

  • pom文件配置

  • 启动类注入
  • 首先先使用ribbon提供的LoadBalanced注解加在RestTemplate上面,这个注解会自动构造LoadBalancerClient接口的实现类并注册到Spring容器中。

  • 接下来使用RestTemplate进行rest操作的时候,会自动使用负载均衡策略,它内部会在RestTemplate中加入LoadBalancerInterceptor这个拦截器,这个拦截器的作用就是使用负载均衡。

在浏览器上多次访问http://localhost:8764/hi?name=AKyS,浏览器交替显示:

hi AKyS,i am from port:8762

hi AKyS,i am from port:8763
  • 当sercvice-ribbon通过restTemplate调用service-consumer的hi接口时,因为用ribbon进行了负载均衡,会轮流的调用service-consumer:8762和8763 两个端口的hi接口。这样就能实现交替服务的提供。

微信扫码关注java架构,获取Java面试题和架构师相关题目和视频。

相关文章

网友评论

    本文标题:Spring Cloud微服务架构 - 服务消费者rest+ri

    本文链接:https://www.haomeiwen.com/subject/dqoktftx.html