1.认识Ribbon
是什么
基于Netflix Ribbon 实现的一套客户端负载均衡的工具
主要功能是提供客户端软件的负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置如连接超时,重试。
在配置文件中列出LoadBalancer后面的所有的机器,Ribbon会自动的帮你基于某种规则如:轮询,随机连接去连接这些机器。我们很同意使用Ribbon实现自定义的负载均衡算法
能干嘛
LoadBalance 是什么
即将用户的请求平摊的分配到多个服务上,从而达到系统的高可用
常见的负载均衡软件有Nginx,LVS
Ribbon和Niginx的区别
Nginx是服务器负载均衡,客户端所有的请求都会将给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。
Ribbon本地负载均衡,在调用微服务接口时,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而实现RPC远程调用
2.Ribbon中的负载算法
loadbalancer.RoundRobinRule
轮询算法,即依次遍历整个服务器列表,将请求的压力平摊到每个服务器上
loadbalancer.RandomRule
随机算法,随机生成一个数字,通过数字映射服务器,将请求发送到对应的服务器上
loadbalancer.RetryRule
先安装RoundRobinRule的策略获取服务,如果获取服务是被则在指定的时间会进行重试获取可用的服务。
WeightedResponseTimeRule
对RoundRobinRule的拓展,响应速度越快的实例选择权重越大,越容易被选择
BestAvailableRule
优先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
AvailabilityFilteringRule
先过滤掉故障实例,再选择并发量较小的实例
ZoneAvoidanceRule
默认规则,复合判断server所在区域的性能和server的可用性选择服务器