1.Ribbon负载均衡
Ribbon 是 Netflix 公司开源的一款负载均衡组件,负载均衡的行为在客户端发生(客户端行为,将负载均衡的策略绑定到客户端上,客户端会维护一份服务提供者列表,通过客户端负载均衡策略分发到不同的服务提供者)。
Feign 底层集成了 Ribbon,不用额外的配置,开箱即用
2.如何获取注册中心服务实例
- 负载均衡客户端在初始化时向 Nacos 注册中心获取服务注册列表信息
- 根据不同的 IPing 实现,向获取到的服务列表 串行发送 ping,以此来判断服务的可用性。没错,就是串行,如果你的实例很多,可以 考虑重写 ping 这一块的逻辑
- 如果服务的可用性 发生了改变或者被人为下线,那么重新拉取或更新服务列表
- 当负载均衡客户端有了这些服务注册类列表,自然就可以进行 IRule 负载均衡策略
3.服务列表定时维护
针对于服务列表的维护,在 Ribbon 中有两种方式,都是通过定时任务的形式维护客户端列表缓存
- 使用 IPing 的实现类 PingUrl,每隔 10 秒会去 Ping 服务地址,如果返回状态不是 200,那么默认该实例下线
- Ribbon 客户端内置的扫描,默认每隔 30 秒去拉取 Nacos注册中心的服务实例,如果已下线实例会在客户端缓存中剔除