欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(Spring Cloud回顾)

程序员文章站 2022-07-15 10:17:17
...
  • Spring Cloud服务协作流程图

Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(Spring Cloud回顾)

(1)在微服务启动时,会向服务发现中心上报自身实例信息,这里ServiceB 包含多个实例。每个实例包括:IP地址、端口号信息。

(2)微服务会定期从Nacos Server(服务发现中心)获取服务实例列表

(3)当ServiceA调用ServiceB时,ribbon组件本地服务实例列表中查找ServiceB的实例,如获取了多个实例如

Instance1、Instance2。这时ribbon会通过用户所配置的负载均衡策略从中选择一个实例。

(4)最终,Feign组件会通过ribbon选取的实例发送http请求。

采用Feign+Ribbon的整合方式,是由Feign完成远程调用的整个流程。而Feign集成了Ribbon,Feign使用Ribbon

完成调用实例的负载均衡。

  • 负载均衡(Ribbon)

服务器端负载均衡

Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(Spring Cloud回顾)

负载均衡器中维护一个可用的服务实例清单,当客户端请求来临时,负载均衡服务器按照某种配置好的规则(负载均衡算法)从可用服务实例清单中选取其一去处理客户端的请求。这就是服务端负载均衡。

例如Nginx,通过Nginx进行负载均衡,客户端发送请求至Nginx,Nginx通过负载均衡算法,在多个服务器之间选择一个进行访问。即在服务器端再进行负载均衡算法分配。

客户端服务负载均衡

Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(Spring Cloud回顾)

Ribbon就属于客户端负载均衡。在ribbon客户端会有一个服务实例地址列表,在发送请求前通过负载均衡算法选择一个服务实例,然后进行访问,这是客户端负载均衡。即在客户端就进行负载均衡算法分配。

Ribbon是一个客户端负载均衡器,它的责任是从一组实例列表中挑选合适的实例,如何挑选?取决于负载均衡策略 。

Ribbon核心组件IRule是负载均衡策略接口,它有如下实现,大家仅做了解:

  1. RoundRobinRule(默认):轮询,即按一定的顺序轮换获取实例的地址。
  2. RandomRule:随机,即以随机的方式获取实例的地址。
  3. AvailabilityFilteringRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,以及并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;
  4. WeightedResponseTimeRule: 根据平均响应时间计算所有服务的权重,响应时间越快,服务权重越大,被选中的机率越高;刚启动时,如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够时,会切换到WeightedResponseTimeRule
  5. RetryRule: 先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在指定时间内会进行重试,获取可用的服务;
  6. BestAvailableRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;
  7. ZoneAvoidanceRule: 默认规则,复合判断server所在区域的性能和server的可用性选择服务器;

可通过下面方式在spring boot 配置文件中修改默认的负载均衡策略

account‐service.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

account-service 是调用的服务的名称,后面的组成部分是固定的。

  • Feign

Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。Feign的英文表意为“假装,伪装,变形”, 可以理解为将HTTP报文请求方式伪装为简单的java接口调用方式。

详情请参考:https://blog.csdn.net/qq_28497823/category_9581324.html