目录
Ribbon是什么
Ribbon是一套客户端负载均衡工具
其实现原理是在配置文件中列出LoadBalancer(负载均衡)的所有机器,Ribbon会自动帮你基于某种规则(简单轮询,随机连接)等去连接这些机器,我们也可以很容易的自定义Ribbon的负载均衡算法
负载均衡的简单分类
负载均衡通过将用户的请求平摊分配到多个服务上,达到系统的HA(高可用)
- 集中式LB
在服务的消费方和提供方之间是有独立的负载均衡器,如Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方
- 进程式LB
它只是一个类库,集成与消费方进程,消费方通过它来获取到服务提供方的地址。Ribbon属于进程式负载均衡器
Ribbon工作原理
如何更改Ribbon默认算法
首先Ribbon默认使用的是简单轮询。
修改算法分两种情况,第一种是你用其他Ribbon算法,第二种是完全使用你自己定义的算法。
使用Ribbon提供的其他算法
使用其他Ribbon算法你需要在客户端的ConfigBean类中往spring容器中注入一种特定的Ribbon算法规则即可。另外,你需要在RestTemplate上开启负载均衡的注解
自定义负载均衡算法
如果你想完全自定义算法。首先需要在启动类的上一级新建一个配置类,不能和启动类同级
其次,仍需确保RestTemplate开启了负载均衡的支持
然后在DIYRibbon文件夹中新建一个config配置类,比如叫KuangRule,里面写个方法,返回自定义的算法DiyLB。
写完再在DiyRibbon文件夹下新建一个具体的算法类,里面写DiyLB算法的具体实现
最后,在项目的启动类下加上@RibbonClient注解,括号里写生产者服务名+ 自定义配置类的类路径
启动测试,下面用随机算法举例,当然之所以使用的db_source会变是因为,我搞了3个提供方,每个提供方对应一个数据库~