Ribbon是NetFlix发布的负载均衡器,有助于控制HTTP和TCP客户端的行为.为Ribbon配置服务提供者地址列表后,Ribbon配置服务提供者地址列表后,Ribbon默认为我们提供了许多负载均衡算法,例如轮询,随机等,当然我们也可以为Ribbon自定义负载均衡算法
在SpringCloud中,Ribbon与Eureka配合使用的时候
Ribbon可以自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法请求其中一个服务提供者实例
Ribbon其实就是使用负载均衡算法:轮询,随机等,进行对Eureka中注册的多个同类服务提供者进行访问
这样实现了负载均衡操作
实现步骤:
先给项目引入ribbon所需要的依赖,然后使用RestTemplate进行远程调用
其中RestTemplate的@Bean之后记得贴@LoadBalanced注解(给予这个RestTemplate负载均衡的能力)
默认是轮询规则
我们将RestTemplate的远程调用地址使用Eureka中映射的项目名,这样能够让Ribbon调用多个项目
但是实际上Ribbon本身还是会将虚拟主机名映射成微服务的网络地址
Ribbon底层原理:
1.请求发送到服务器,现在开始轮询
debug放行 到LoadBalancerInterceptor类中
其中intercept方法中获取服务器的URI和服务器名称
这里调用了RibbonLoadBalancerClient类中的execute方法
其中ILoadBalancer获取一个负载均衡器
Server根据负载均衡器算法在Server列表中选中指定的Server 此时已经获取到了整个url的信息
包括ip地址和端口