Ribbon负载均衡
一、负载均衡是一个算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用。
二、Ribbon提供了轮询、随机两种负载均衡算法(默认是轮询)可以实现从地址列表中使用负载均衡算法获取地址进行服务调用
三、需求:可以使用RestTemplate访问http://user-service/user/8获取服务数据。
可以使用Ribbon负载均衡:在执行RestTemplate发送服务地址请求的时候,使用负载均衡拦截器拦截,根据服务名,在服务地址列表中获取服务地址的时候,使用Ribbon负载均衡算法从服务地址列表中选择一个服务地址,访问该地址获取服务数据。
四、总结
Ribbon其实就是一个软负载均衡,依赖EurekaClient客户端组件,Ribbon就是负载均衡算法 + RestTemplate
Ribbon在工作分成两步
第一步选择EurekaServer,它优先选择在同一个区域内负载较少的Server
第二步再根据用户指定策略,在从Server取到的服务注册列表中选择一个地址
Ribbon自身的负载均衡算法(10种算法)
1) RoundRobinRule(轮询算法)
2) RandomRule(随机算法)
3) RetryRule():先按照RoundRobinRule的策略获取服务,如果获取失败则在制定时间内进行重试,获取可用的服务
4) BestAviableRule():会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
5) WeightedResponseTimeRule():根据平均响应的时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够会切换到WeightedResponseTimeRule