微服务中负载均衡实现
负载均衡组件Ribbon的工作流程
Ribbon源码解析
1.Ribbon拦截请求,获取应用名称
Ribbon提供一个拦截器LoadBalancerInterceptor,远程调用的请求都会被拦截器拦截。
LoadBalancerInterceptor在配置类LoadBalancerAutoConfiguration中定义
2.通过应用名获取服务列表
每个serviceName都对应一个自己的SpringContext上下文信息,然后通过ILoadBalancer.class从上下文信息中获取LoadBalancer
ZoneAwareLoadBalancer负载均衡器是在RibbonClientConfiguration中定义
3.从列表中获取具体服务
ZoneAwareLoadBalancer定义了获取服务的方法,但是该方法最终调用的是父类BaseLoadBalancer chooseServer方法,需要配置的负载策略(默认均衡策略),选择具体服务地址
相关代码:
狐小E, 企业数字化建设的全景攻略 https://www.hixiaoe.com