SpringCloud - Ribbon 客户端负载均衡工具

回到顶部(go to top)

1. Ribbon是什么?

 

多个“微服务提供者”在eureka集群里注册服务,然后消费者要调用服务时,通过ribbon从eureka集群里查询到可用的服务列表(分别有8001,8002,8003)

然后根据ribbon的load balance算法,选择一个进行调用

 

 

 

 

 

回到顶部(go to top)

2. Ribbon能干嘛?

 

 

回到顶部(go to top)

3. 在客户端集成Ribbon, Eureka

3.1 导入ribbon,eureka包

为啥需要eureka包,上节说了ribbon集成在客户端,客户端需要从注册中心获取哪些地址可用。因此需要eureka。

 

 

3.2 eureka配置 + 开启eureka

注意: Ribbon的负载均衡虽然是在前端做的,但是目的依然是为了load balance在微服务提供者上,而不是eureka server集群上...这里不要迷惑!!!

因为博主之前做了eureka集群,所以下方截图里eureka server有3个,反而微服务提供者提供者只有1个。所以容易造成误解,误以为load balance是在eureka server上。

这里应该多加几个“微服务提供者”来提提现ribbon的作用。

 

在主配置文件application.yml中,做eureka配置:

 

 在主程序开启eureka:

 

 

3.3 在RestTemplate bean中配置@LoadBalanced

由于客户端的所有请求都是通过RestTemplate (SpringCloud - RestTempleate使用)这个bean来访问微服务的,因此只要在这里加上@LoadBalanced即可。

 

 

3.4 客户顿controller的变化

重点:

在整合eureka和ribbon后,这里直接写“服务名”即可,而不必要关注IP和端口
(注意:这里应该多写几个“服务名”一样的“服务提供者”,才能提现ribbon的作用)

 

 

 

 

 

 

 

 

回到顶部(go to top)

4. Ribbon的负载均衡算法

所有的负载均衡算法,都是如下的继承链:

IRule 接口--> AbstractLoadBalancerRule 抽象类--> 实现类

 

 

默认的负载均衡算法是:轮训,8001, 8002, 8003轮着来

 

 

 

4.1 启用其他负载均衡算法 

 

 

不用默认的“轮询”,改用其他算法时要注意(官方建议):不要把LB算法的java config文件放在与@SpringBootApplcation主函数相同的目录(包括其子目录)下面,以避免@ComponetScan直接把LB算法的java config文件扫描进入,使得所有的@RibbonClients共享。

应该让每个@RibbonClients自己选择用什么LB算法。

 

 

LB算法的java config文件:

 

 

@SpringBootApplication函数显示注解@RibbonClient:

 

 

 

 

 

 

 

4.2 自定义负载均衡算法

所有的负载均衡算法,都是如下的继承链:

IRule 接口--> AbstractLoadBalancerRule 抽象类--> 实现类

 

重写方法即可

 

posted on   frank_cui  阅读(136)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示