javascript
带有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-基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上天揽月 下海捉鳖什么意思 上天揽月 下
- 下一篇: 中国双面柔性印刷电路板(FPC)市场趋势