1.ILoadBalancer 负载均衡器,基于IRule 接口实现负载均衡算法,在这个接口里可以自定义负载均衡算法
Class MyRule Implements IRule{
}
来实现特定的规则往特定的服务上分发
很少需要定制负载均衡算法,除非是hash分发的那种场景,不过分布式系统中尽量减少hash分发情况
2.Ribbon内置服务站均衡规则
1)RoundRobinRule:系统内置的默认负载均衡,直接轮训
2)AvailabilityFilteringRule :这个rule会考察服务器性能
3)带权重的规则,如果某个服务器响应时间长,权重降低,减少访问
4)ZoneAvoidanceRule:根据区域或服务器进行负载均衡,就是基于机房的
5)BastAvaiable:忽略连接失败的服务器,尽量找到并发低的服务器来请求
6)RandomRule:随机找一个服务器
3. ribbon里定时ping服务器的接口
@LoadBalanced注解
这个注解的意思是,将一个RestTemplate 标志位底层采用LoandBalancerClient来执行实际的HTTP请求
支持负载均衡
AsynLoadBalancerAutoConfiguration 带有Asyn 的可以猜想到时异步调用,可能根本没用到
LoadBalancerAutoConfiguration :专门为Ribbon 搞得一个配置类
RestTemplateCustomizer : 专门对RestTemplate 进行定制化的一个组件
内置RestTemplate 拦截器insterceptor拦截器。里边有一些Retry的代码,就是对RestTemplate 调用
重试
Ribbon 负载均衡原理
ribbon 需要配合Eureka一起使用,从Eureka中拿到服务器列表,然后基于服务器列表调用