负载均衡:Ribbon源码剖析(4)选举出一个服务后如何发出请求

侯乾 Lv4

这篇文章算是前面三篇的一个总结,从一个请求被执行的角度,将Spring以及Ribbon的关键组件串起来思考。

  • RestTemplate被加入针对Ribbon的定制的拦截器LoadBalancerInterceptor
  • LoadBalancerInterceptor中将请求委托给RibbonLoadBalancerClient
  • RibbonLoadBalancerClient调用真正的Ribbon组件完成请求
    • 负载均衡器ZoneAwareLoadBalancer
    • 负载均衡规则ZoneAvoidanceRule
  • request.getURI() –> ServiceRequestWrapper#getURI –> loadBalancer.reconstructURI在这里完成服务名到ip:port的替换
  • 实际上最后是ClientHttpRequestExecution发起HTTP请求

总结

![Ribbon执行请求流程 (1)](Ribbon执行请求流程 (1).jpg)

  • Title: 负载均衡:Ribbon源码剖析(4)选举出一个服务后如何发出请求
  • Author: 侯乾
  • Created at : 2020-05-05 12:02:11
  • Updated at : 2020-05-05 12:02:11
  • Link: http://houqian.github.io/2020/05/05/负载均衡:Ribbon源码剖析(4)选举出一个服务后如何发出请求/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
负载均衡:Ribbon源码剖析(4)选举出一个服务后如何发出请求