Ribbon介绍和使用

Ribbon是Netflix公司提供的一个在Spring Cloud中免费使用的客户端负载均衡器组件

它在集群中为各个客户端之间的通信提供支持,可以控制、管理HTTPTCP客户端的负载均衡。

Ribbon从Eureka注册获取访问服务提供者地址列表后,就可基于某种负载均衡算法,自动地帮助服务消费者去请求。

如图所示,展示了Ribbon获取服务清单并实现请求的流程。

 

 

Ribbon提供了一系列完善的配置选项,如连接超时、重试算法等。Ribbon还内置了可插拔、可定制的负载均衡组件。

 

在第9章中我们使用了RestTemplate 进行服务之间的访问,并且在配置的Bean上使用了@LoadBalanced注解,其实这时候RestTemplate 默认使用了Ribbon的负载均衡策略

Ribbon除了和RestTemplate结合实现客户端负载均衡之外,同样也被集成到了Feign中,当使用@FeignClient的时候,Feign也默认使用了Ribbon进行网络请求的负载均衡。

 

下面我们通过一个实例来看一下Ribbon负载均衡的使用。我们还是使用订单服务 调用 商品服务来测试和查看Ribbon的负载均衡。

首先我们启动一个Eureka注册中心和一个订单服务,然后配置两个名字一样但是端口号不一样(一个是7001,另外一个是7003)的商品服务

如图所示:

 

然后在 GoodsController中添加日志输出,用来确定调用的接口,如程序清单12-1所示。

 

 

然后启动商品服务,并在浏览器中访问两次订单接口,共需要查询6个商品,所以需要调用6次商品服务,然后在控制台中可以看到商品服务调用情况是轮询调用,而不是所有接口都在一个服务中调用,如图所示。

 

 

 

 

因此,我们了解到Ribbon的负载均衡策略默认为轮询调用服务清单中的服务。

posted @ 2022-12-14 14:21  cnetsa  阅读(310)  评论(0编辑  收藏  举报