W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
當從 Consul、Eureka 或其他服務發(fā)現(xiàn)服務器發(fā)現(xiàn)服務時,DiscoveryClient 會發(fā)出可用 ServiceInstance 的列表。
默認情況下,Micronaut 使用此列表中的服務器自動執(zhí)行 Round Robin 客戶端負載平衡。這與重試建議相結合,為您的微服務基礎設施增加了額外的彈性。
負載平衡由 LoadBalancer 接口處理,該接口有一個 LoadBalancer.select() 方法,該方法返回一個發(fā)出 ServiceInstance 的 Publisher。
返回 Publisher 是因為選擇 ServiceInstance 的過程可能會導致網絡操作,具體取決于所采用的服務發(fā)現(xiàn)策略。
LoadBalancer 接口的默認實現(xiàn)是 DiscoveryClientRoundRobinLoadBalancer。您可以用另一種實現(xiàn)替換此策略,以自定義在 Micronaut 中處理客戶端負載平衡的方式,因為有許多不同的方法可以優(yōu)化負載平衡。
例如,您可能希望在特定區(qū)域中的服務之間進行負載平衡,或者在具有最佳總體響應時間的服務器之間進行負載平衡。
要替換 LoadBalancer,請定義一個替換 DiscoveryClientLoadBalancerFactory 的 bean。
事實上,這正是 Netflix Ribbon 支持所做的,在下一節(jié)中描述。
使用 CLI
如果您使用 Micronaut CLI 創(chuàng)建項目,請?zhí)峁?nbsp;netflix-ribbon 功能以在您的項目中配置 Netflix 功能區(qū):
$ mn create-app my-app --features netflix-ribbon
Netflix Ribbon 是 Netflix 使用的進程間通信庫,支持可定制的負載平衡策略。
如果您的應用程序執(zhí)行客戶端負載平衡的方式需要更大的靈活性,您可以使用 Micronaut 的 Netflix Ribbon 支持。
要將功能區(qū)支持添加到您的應用程序,請將 netflix-ribbon 配置添加到您的構建中:
Gradle | Maven |
|
|
LoadBalancer 實現(xiàn)現(xiàn)在將是 RibbonLoadBalancer 實例。
可以使用配置中的功能區(qū)命名空間設置功能區(qū)的配置選項。例如在您的配置文件中(例如 application.yml):
Configuring Ribbon
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
每個發(fā)現(xiàn)的客戶端也可以在 ribbon.clients 下配置。例如給定一個 @Client(id = "hello-world") 你可以配置 Ribbon 設置:
Per Client Ribbon Settings
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
默認情況下,Micronaut 為每個將 Ribbon 與 Micronaut 的 DiscoveryClient 集成的客戶端注冊一個 DiscoveryClientServerList。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: