日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

带有Netflix Ribbon的Spring Cloud Rest Client-基础知识

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带有Netflix Ribbon的Spring Cloud Rest Client-基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在較早的博客文章中,我介紹了Spring Cloud世界中REST客戶端的各種選項。 所有選項圍繞著基于Netflix OSS的名為Ribbon的組件,該組件處理與承載服務的不同實例之間的調用負載平衡,處理故障轉移,超時等有關的方面。在此,我將介紹幾種自定義基礎Ribbon組件行為的方法。與Spring Cloud結合使用,并進行更全面的自定義。

創建一個休息客戶

回顧一下,首先考慮需要調用簡單服務的情況:

使用Spring進行此調用的典型方法是注入RestTemplate并使用它通過以下方式進行此調用:

public class RestTemplateBasedPongClient implements PongClient {@Autowiredprivate RestTemplate restTemplate;@Overridepublic MessageAcknowledgement sendMessage(Message message) {String pongServiceUrl = "http://serviceurl/message";HttpEntity<Message> requestEntity = new HttpEntity<>(message);ResponseEntity<MessageAcknowledgement> response = this.restTemplate.exchange(pongServiceUrl, HttpMethod.POST, requestEntity, MessageAcknowledgement.class, Maps.newHashMap());return response.getBody();}}

這里沒有什么特別的。 但是,當使用Spring Cloud時,相同的代碼會有所不同,現在RestTemplate內部使用Netflix OSS Ribbon庫進行調用。 這很有幫助,因為典型的調用流程是首先找到運行該服務的實例,然后在這些實例之間對調用進行負載平衡并保持此狀態。

帶功能區的其他客戶端

讓我稍微談一下功能區,功能區使用一種稱為“命名客戶端”的抽象來控制遠程服務調用的行為–遠程服務調用的名稱,在Eureka上注冊的服務,服務調用的超時,重試多少次這些是通過配置文件指定的,并且條目通常沿著這些行,請注意,此處的“命名客戶端”是“ samplepong”,并且屬性具有此前綴:

samplepong.ribbon.MaxAutoRetries=2 samplepong.ribbon.MaxAutoRetriesNextServer=2 samplepong.ribbon.OkToRetryOnAllOperations=true samplepong.ribbon.ServerListRefreshInterval=2000 samplepong.ribbon.ConnectTimeout=5000 samplepong.ribbon.ReadTimeout=90000 samplepong.ribbon.EnableZoneAffinity=false samplepong.ribbon.DeploymentContextBasedVipAddresses=sample-pong samplepong.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

回到Spring Cloud,它通過Url主機名非常巧妙地支持“命名客戶端”的概念,因此RestTemplate調用現在看起來像這樣:

ResponseEntity<MessageAcknowledgement> response = this.restTemplate.exchange("http://samplepong/message", HttpMethod.POST, requestEntity, MessageAcknowledgement.class, Maps.newHashMap());

URL中的“ samplepong”是“命名客戶端”,可以通過使用此前綴指定屬性來對基礎功能區的行為進行任何自定義。 由于這是Spring Cloud應用程序,因此可以按照以下方式以yaml格式明確指定屬性:

samplepong:ribbon:DeploymentContextBasedVipAddresses: sample-pongReadTimeout: 5000MaxAutoRetries: 2

結論

這涵蓋了Spring Cloud如何抽象出基礎Ribbon庫以提供非常直觀的外觀以在Cloud環境中進行遠程服務調用的基礎知識。 在一些自定義項上,我已經瀏覽了一些細節,我將在較新的文章中介紹這些細節。

  • 這是我的github存儲庫 ,其中包含我在本文中使用的代碼。

翻譯自: https://www.javacodegeeks.com/2015/12/spring-cloud-rest-client-netflix-ribbon-basics.html

總結

以上是生活随笔為你收集整理的带有Netflix Ribbon的Spring Cloud Rest Client-基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。