1.负载均衡是一个算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用。
在SpringCloud中提供了负载均衡器(负载均衡组件)
Ribbon提供了两种负载均衡算法,默认是轮询,可以实现从地址列表中获取一个地址进行服务调用。
轮询:顺序获取
随机:随机获取
2.Ribbon的实现原理
在执行RestTemplate发送服务地址请求的时候,使用负载均衡拦截器拦截,根据服务名获取服务地址列表,使用Ribbon负载均衡算法从服务地址列表中选择一个服务地址,访问该地址获取服务数据。
如果我们使用的不是RetryTemplate的话,实际是Ribbon里定义了一个LoadBalanceIntercepter负载均衡器,这个类继承了ClientHttpRequestIntercepter,私有化了一个LoadBalanceClient,通过servierId和request进行解析,最终获取实际的地址进行访问。
3.应用
RestTemplate添加@LoadBalanced注解
4.修改负载均衡策略
默认为轮询,修改为随机。
{服务名称}:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
兄弟们想要验证的话可以参考一心同学的博客