一、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,可以看到控制檯打印如下的信息,可以看到返回的端口信息隨機顯示。