微服务中负载均衡实现

负载均衡组件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