ribbon底层执行流程源码剖析与组件功能详解

首先说句闲话,最近入职新公司,在负责一个呼叫中心的一个项目,还在搭建框架。我用了2天时间搭建 了一套框架

包含:springcurity jwt 

mybaties-plus 采用了底层的租户的代码

采用了aop封装日志和消息通知

言归正传

restTemplet 这个上面加上@loadBalance这个注解就可以实现负载均衡的,到底如何实现的

按照以前spring的惯性,都是采用aop切面的方式。当然这次也不例外

点入loadBalance这个注解,里面啥也么有。看了一个寂寞

所以,在它的附近找找

找到一个LoadBalanceAutoConfigration 这个注解

ribbon底层执行流程源码剖析与组件功能详解_第1张图片

 这个注解类说明,

loadBalanerClient.class 

loadBalanceCltent.class

如果2个条件同时存在

里面有个loaderBalanceInterCepter 里面有一个Interpter的数据

ribbon底层执行流程源码剖析与组件功能详解_第2张图片

 

clentHttpRequstIntercepter ->实现了serviceIntanceChooser 的返回了一个serviceIntance

选择:

ribbon底层执行流程源码剖析与组件功能详解_第3张图片

 

loadbalanceClent请求具体的方法

ribbon底层执行流程源码剖析与组件功能详解_第4张图片

 

里面有excuse  里面recouctruUrl主动加上ip:port的方法

ribbon底层执行流程源码剖析与组件功能详解_第5张图片

 

具体的实现 excuse的方法是

RibbonLoadBalanceClent实现了loadBalanceClent的接口

里面server里面有一个chooseService 显示:

baseLoadBalancer

NoOploadBancer

ZoneAwareBancer

ribbon底层执行流程源码剖析与组件功能详解_第6张图片

 

 

你可能感兴趣的:(sping,学习历程)