第 2 节 Ribbon负载均衡
2.1 关于负载均衡
负载均衡一般分为服务器端负载均衡和客户端负载均衡
所谓服务器端负载均衡,比如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法将请求路由到目标服务器处理。
所谓客户端负载均衡,比如我们要说的Ribbon,服务消费者客户端会有一个服务器地址列表,调用方在请求前通过一定的负载均衡算法选择一个服务器进行访问,负载均衡算法的执行是在请求客户端进行。
Ribbon是Netflix发布的负载均衡器。Eureka一般配合Ribbon进行使用,Ribbon利用从Eureka中读取到服务信息,在调用服务提供者提供的服务时,会根据一定的算法进行负载。
修改负载均衡策略:
2.2 Ribbon核心源码剖析
Ribbon工作原理:
- 老规矩:SpringCloud充分利用了SpringBoot的自动装配特点,找spring.factories配置文件
LoadBalancerAutoConfiguration 类中配置
装配验证:
自动注入:
注入restTemplate定制器:
为resTemplate对象设置loadBalancerInterceptor
到这里,我们明白,添加了注解的RestTemplate对象会被添加一个拦截器LoadBalancerInterceptor,
该拦截器就是后续拦截请求进行负载处理的。