負載均衡,英文名稱為Load Balance,意思是將負載(工作任務)均衡分配給多個運行單元運行,以協同完成工作任務。負載均衡建立在原有的網絡結構上,提供了壹種透明、廉價、有效的方法來擴展服務器和網絡設備的帶寬,加強網絡數據處理能力,增加吞吐量,提高網絡的可用性和靈活性。
本文主要測試如何基於Springcloud+nacos+gateway實現負載均衡。
我們集成了Springcloud+nacos+gateway,並實現了當三個提供商啟動時,可以通過網關對它們進行輪詢。
1 nocas負載均衡。
nocas本身集成了ribbon,默認使用輪詢。
b .如何在nocas中設置權重,實現權重。
自定義規則(IRule實現類)
d、在權重的方式上,可以采用先將權重設置為0,然後關閉單服務優雅下線的方式。
2使用ribbon直接連接ip
使用自動策略、輪詢、隨機化等。由絲帶提供。
健康檢查
五.習慣規則
關閉其中壹個提供者,立即通過網關輪詢,發現網關仍然會調用已經停機的提供者,導致查詢失敗。但是大約5秒鐘後,輪詢恢復正常,呼叫被停止。
網關調用提供者首先通過nacos註冊中心,nacos心跳機制默認每5秒檢查壹次提供者是否正常,所以會出現上述現象。
1在啟動類中,只需在spring容器中註冊IRule的配置類和實現類即可。
2分別測試輪詢和隨機化,可以按照規則正常加載。
1添加gatewayriboonip模塊。
2 pom增加了對spring-cloud-starter-gateway和Spring-Cloud-Starter-網飛-Ribbon的依賴。
3修改application.yml以設置負載平衡。
4啟動,測試可以正常輪詢。
5?如下修改application.yml,可以從輪詢模式測試到隨機模式。
NFLoadBalancerRuleClassName:com . Netflix . load balancer . random rule
此時,壹個提供程序關閉,然後進行輪詢。到達該提供程序時,查詢將總是失敗。我們需要添加壹個健康檢查過程,它可以在服務關閉時檢測並從服務列表中刪除該服務,並在服務在線後檢查服務是否在線。
1添加了健康檢查。
提供程序模塊添加了rest接口HealthController。
添加配置類以生成RestTemplate。
添加健康檢查類別健康檢查實現iping。繼承IPing接口以確定服務是否可用。我們給微服務添加heath接口,在gateway中調用這個接口,如果恢復正常,我們認為微服務可用。
?修改application.yml以添加Ping,如下所示
nfloadbalancerpingclass name:com . Roy . spring nacos . gatewayribbonip . load balance . health examination
2重新啟動提供商和網關進行測試。
輪詢成功。
b .關閉其中壹個提供程序,查詢在輪詢該提供程序時失敗。
此處測試失敗,使用RoundRobinRule時查詢壹直失敗,未能自動跳下的提供者失敗。
但是,如果您自定義了LoadBalancerRule,則可以成功地跳過設置。
1添加我的規則擴展抽象LoadBalanceRule。
2重啟後,根據規則成功查詢測試。