标签:负载 Http 请求 流程 RestTemplate 均衡 Ribbon
大概流程:
RestTemplate发起http请求,因为RestTemplate添加了@LoadBalanced注解,因此发起的Http请求会被LoadBalanceInterceptor拦截,通过Ribbon负载均衡,从eureka-server中获取服务列表,进行均衡选择,替换请求中的服务名,发送有效的Http请求。
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907174404285-1752635707.png)
Ribbon负载均衡具体流程:
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907180903998-338716413.png)
RestTemplate发起的Http请求会被LoadBalanceInterceptor拦截,在intercept方法中获取请求的URI,通过URI获取主机名称,也就是我们的服务名称。
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907180848663-1544995620.png)
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907182649522-981458520.png)
获取服务列表
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907184226793-1207800412.png)
选择服务
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907185032549-545045196.png)
交给父类进行出来
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907190008775-1454424367.png)
使用默认的Rule对象
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907191436422-369613176.png)
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907190239447-1207871471.png)
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907191903543-1262487124.png)
IRule接口的实现类
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907191541837-1580492390.png)
返回具体的服务ip以及端口,进行发起请求
![](/i/l/?n=22&i=blog/2018770/202209/2018770-20220907192016520-2072772924.png)
标签:负载,
Http,
请求,
流程,
RestTemplate,
均衡,
Ribbon
From: https://www.cnblogs.com/ggzs/p/16666673.html