一、Ribbon简介
Netfilx发布的负载均衡器,是一个基于http、tcp的客户端负载均衡工具,具有控制http、tcp客户端的行为,为ribbon配置服务提供者的地址后,ribbon就可以经过springCloud的封装实心客户端负载均衡的服务调用。
二、准备工作
我们继续使用上一篇的工程,我们给Mall_WechatService服务分别分配不同的端口多次启动。如何多次启动?
IDEA打开工程,点击Edit Configuations
点击进去之后,我们想让哪个工程多次启动,点击左边工程名称,然后把Single instance only勾选给去掉。
现在我们更改Mall_WechatService的运行端口于8010和8020并分别启动。
三:Feign默认实现的负载均衡
由于Feign默认实现了Ribbon,所以我们在服务提供端(Mall_WechatService)返回值里面加入运行端口的信息。直接运行上一节当中的Feign调用服务的代码,打开浏览器,输入http://localhost:8011/sayFeignHello,可以看到控制台打印如下的信息,可以看到返回的端口信息交替显示。
四:Ribbon的配置
上面我们看到端口号交替显示出来,是因为Ribbon默认的负载均衡策略是轮询,Ribbon一共有七种负载均衡的策略:
我们可以使用非常简单的配置来修改Ribbon负载均衡的策略,官方文档这么说的:
因此,我们只需要在我们的服务消费者的application.yml中加入下面的配置,就可以把负载均衡的策略修改为随机。
mall-wechatservice:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
我们运行3个Mall_WechatService实例分别于8010、8020和8030端口,运行服务调用程序Mall_ManagerService,打开浏览器,输入http://localhost:8011/sayFeignHello,可以看到控制台打印如下的信息,可以看到返回的端口信息随机显示。