微服务中负载均衡实现

负载均衡组件Ribbon的工作流程
微服务中负载均衡实现_第1张图片

Ribbon源码解析
1.Ribbon拦截请求,获取应用名称
在这里插入图片描述

Ribbon提供一个拦截器LoadBalancerInterceptor,远程调用的请求都会被拦截器拦截。

LoadBalancerInterceptor在配置类LoadBalancerAutoConfiguration中定义
微服务中负载均衡实现_第2张图片

2.通过应用名获取服务列表
每个serviceName都对应一个自己的SpringContext上下文信息,然后通过ILoadBalancer.class从上下文信息中获取LoadBalancer
微服务中负载均衡实现_第3张图片

微服务中负载均衡实现_第4张图片

ZoneAwareLoadBalancer负载均衡器是在RibbonClientConfiguration中定义
微服务中负载均衡实现_第5张图片

3.从列表中获取具体服务
ZoneAwareLoadBalancer定义了获取服务的方法,但是该方法最终调用的是父类BaseLoadBalancer chooseServer方法,需要配置的负载策略(默认均衡策略),选择具体服务地址
相关代码:
微服务中负载均衡实现_第6张图片

狐小E, 企业数字化建设的全景攻略 https://www.hixiaoe.com

你可能感兴趣的:(ribbon)