Ribbon基本使用 簡介 Ribbon是一個客戶端負載均衡工具,封裝Netflix Ribbon組件,能夠提供客戶端負載均衡能力。 理解Ribbon最重要的就是理解客戶端這個概念,所謂客戶端負載均衡工具不同于Nginx(服務端負載均衡),Ribbon和應用程序綁定,本身不是獨立的服務,也不存儲服務列表,需要負載均衡的時候,會通過應用程序獲取注冊服務列表,然后通過列表進行負載均衡和調(diào)用。 Nginx獨立進程做負載均衡,通過負載均衡策略,將請求轉(zhuǎn)發(fā)到不同的服務上 客戶端負載均衡,通過在客戶端保存服務列表信息,然后自己調(diào)用負載均衡策略,分攤調(diào)用不同的服務 基本使用 Ribbon的負載均衡有兩種方式 和 RestTemplate 結(jié)合 Ribbon+RestTemplate 和 OpenFeign 結(jié)合 Ribbon的核心子模塊 ribbon-loadbalancer:可以獨立使用或者和其他模塊一起使用的負載均衡API ribbon-core:Ribbon的核心API 訂單服務集成Ribbon 訂單遠程桌面服務調(diào)用商品服務 配置過程 分兩步 在訂單服務中導入ribbon的依賴 <!--ribbon--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency> 配置 RestTemplate 訂單服務調(diào)用商品服務 訂單服務調(diào)用商品服務的鏈接 不能寫成ip+端口號,需要寫成商品服務的服務名稱 參數(shù)調(diào)優(yōu) 主要調(diào)整請求的超時時間,是否重試 如果業(yè)務沒有做冪等性的話建議把重試關掉:ribbon.MaxAutoRetriesNextServer=0 # 從注冊中心刷新servelist的時間 默認30秒,單位msribbon.ServerListRefreshInterval=15000# 請求連接的超時時間 默認1秒,單位msribbon.ConnectTimeout=30000# 請求處理的超時時間 默認1秒,單位msribbon.ReadTimeout=30000# 對所有操作請求都進行重試,不配置這個MaxAutoRetries不起作用 默認false#ribbon.OkToRetryOnAllOperations=true# 對當前實例的重試次數(shù) 默認0# ribbon.MaxAutoRetries=1# 切換實例的重試次數(shù) 默認1ribbon.MaxAutoRetriesNextServer=0 如果MaxAutoRetries=1和MaxAutoRetriesNextServer=1請求在1s內(nèi)響應,超過1秒先同一個服務器上重試1次,如果還是超時或失敗,向其他服務上請求重試1次。 那么整個ribbon請求過程的超時時間為:ribbonTimeout = (ribbonReadTimeout + ribbonConnectTimeout) * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1 |
|