摘要:當(dāng)存在時(shí),負(fù)載均衡的和會(huì)自動(dòng)重試任何失敗的請(qǐng)求假設(shè)你的配置允許這樣做。啟用包括重試請(qǐng)求,由于請(qǐng)求的緩沖,請(qǐng)求會(huì)對(duì)服務(wù)器的資源產(chǎn)生影響。
重試失敗的請(qǐng)求
Spring Cloud Netflix提供了多種方式來(lái)發(fā)出HTTP請(qǐng)求,你可以使用負(fù)載均衡的RestTemplate、Ribbon或Feign。無(wú)論你如何選擇創(chuàng)建HTTP請(qǐng)求,總是有可能請(qǐng)求失敗,請(qǐng)求失敗時(shí),你可能希望自動(dòng)重試請(qǐng)求,要在使用Sping Cloud Netflix時(shí)這樣做,你需要在應(yīng)用程序的類(lèi)路徑中包含Spring Retry。當(dāng)存在Spring Retry時(shí),負(fù)載均衡的RestTemplates、Feign和Zuul會(huì)自動(dòng)重試任何失敗的請(qǐng)求(假設(shè)你的配置允許這樣做)。
退避策略默認(rèn)情況下,重試請(qǐng)求時(shí)不使用退避策略,如果要配置退避策略,則需要?jiǎng)?chuàng)建類(lèi)型為LoadBalancedRetryFactory的bean并覆蓋給定服務(wù)的createBackOffPolicy方法,如以下示例所示:
@Configuration public class MyConfiguration { @Bean LoadBalancedRetryFactory retryFactory() { return new LoadBalancedRetryFactory() { @Override public BackOffPolicy createBackOffPolicy(String service) { return new ExponentialBackOffPolicy(); } }; } }配置
將Ribbon與Spring Retry一起使用時(shí),可以通過(guò)配置某些Ribbon屬性來(lái)控制重試功能,為此,請(qǐng)?jiān)O(shè)置client.ribbon.MaxAutoRetries、client.ribbon.MaxAutoRetriesNextServer和client.ribbon.OkToRetryOnAllOperations屬性,有關(guān)這些屬性的說(shuō)明,請(qǐng)參閱Ribbon文檔。
啟用client.ribbon.OkToRetryOnAllOperations包括重試POST請(qǐng)求,由于請(qǐng)求body的緩沖,POST請(qǐng)求會(huì)對(duì)服務(wù)器的資源產(chǎn)生影響。
此外,你可能希望在響應(yīng)中返回某些狀態(tài)碼時(shí)重試請(qǐng)求,你可以通過(guò)設(shè)置clientName.ribbon.retryableStatusCodes屬性列出你希望Ribbon客戶端重試的響應(yīng)碼,如以下示例所示:
clientName: ribbon: retryableStatusCodes: 404,502
你還可以創(chuàng)建類(lèi)型為LoadBalancedRetryPolicy的bean,并實(shí)現(xiàn)retryableStatusCode方法以在給定狀態(tài)碼的情況下重試請(qǐng)求。
Zuul你可以通過(guò)將zuul.retryable設(shè)置為false來(lái)關(guān)閉Zuul的重試功能,你還可以通過(guò)將zuul.routes.routename.retryable設(shè)置為false來(lái)逐個(gè)路由地禁用重試功能。
上一篇:使用Sidecar支持多語(yǔ)言文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/74286.html
摘要:通用的抽象服務(wù)發(fā)現(xiàn)負(fù)載均衡和斷路器等模式適用于所有客戶端都可以使用的通用抽象層,獨(dú)立于實(shí)現(xiàn)例如,使用或發(fā)現(xiàn)。重試失敗的請(qǐng)求可以將負(fù)載均衡的配置為重試失敗的請(qǐng)求,默認(rèn)情況下,禁用此邏輯,你可以通過(guò)將添加到應(yīng)用程序的類(lèi)路徑來(lái)啟用它。 Spring Cloud Commons:通用的抽象 服務(wù)發(fā)現(xiàn)、負(fù)載均衡和斷路器等模式適用于所有Spring Cloud客戶端都可以使用的通用抽象層,獨(dú)立于實(shí)...
摘要:應(yīng)用程序可以立即利用或應(yīng)用程序開(kāi)發(fā)人員提供的其他外部屬性源,它還提取了一些與變化事件相關(guān)的額外有用特性。標(biāo)簽也可以以逗號(hào)分隔列表的形式提供,在這種情況下,列表中的項(xiàng)目將逐個(gè)嘗試,直到成功為止,在處理特性分支時(shí),此行為非常有用。 Spring Cloud Config Client Spring Boot應(yīng)用程序可以立即利用Spring Config Server(或應(yīng)用程序開(kāi)發(fā)人員提供...
摘要:創(chuàng)建自己的客戶端時(shí),你還負(fù)責(zé)為這些客戶端實(shí)施正確的連接管理策略,不正確地執(zhí)行此操作可能會(huì)導(dǎo)致資源管理問(wèn)題。維護(hù)模式的模塊將模塊置于維護(hù)模式意味著團(tuán)隊(duì)將不再向模塊添加新功能,將修復(fù)和安全問(wèn)題,還將考慮和審查來(lái)自社區(qū)的小型拉請(qǐng)求。 HTTP客戶端 Spring Cloud Netflix會(huì)自動(dòng)為你創(chuàng)建Ribbon、Feign和Zuul使用的HTTP客戶端,但是,你也可以根據(jù)需要自定義自己的...
摘要:還有就是重試次數(shù)如果太多的話會(huì)導(dǎo)致請(qǐng)求量加倍,給后端造成更大的壓力,設(shè)置合理的重試機(jī)制才是最關(guān)鍵的。今天我們來(lái)簡(jiǎn)單的了解下中的重試機(jī)制和使用。使用講解是對(duì)請(qǐng)求重試提供的一個(gè)。 前言 重試,我相信大家并不陌生。在我們調(diào)用Http接口的時(shí)候,總會(huì)因?yàn)槟撤N原因調(diào)用失敗,這個(gè)時(shí)候我們可以通過(guò)重試的方式,來(lái)重新請(qǐng)求接口。 生活中這樣的事例很多,比如打電話,對(duì)方正在通話中啊,信號(hào)不好啊等等原因,你...
摘要:內(nèi)部使用了的動(dòng)態(tài)代理為目標(biāo)接口生成了一個(gè)動(dòng)態(tài)代理類(lèi),這里會(huì)生成一個(gè)動(dòng)態(tài)代理原理統(tǒng)一的方法攔截器,同時(shí)為接口的每個(gè)方法生成一個(gè)攔截器,并解析方法上的元數(shù)據(jù),生成一個(gè)請(qǐng)求模板。的核心源碼解析到此結(jié)束了,不知道是否對(duì)您有無(wú)幫助,可留言跟我交流。 Feign是一個(gè)聲明式的Web服務(wù)客戶端。這使得Web服務(wù)客戶端的寫(xiě)入更加方便 要使用Feign創(chuàng)建一個(gè)界面并對(duì)其進(jìn)行注釋。它具有可插拔注釋支持,包...
閱讀 2551·2021-10-19 11:45
閱讀 2547·2021-09-30 09:56
閱讀 1526·2021-09-30 09:47
閱讀 650·2019-08-30 15:53
閱讀 1888·2019-08-30 15:44
閱讀 629·2019-08-30 12:52
閱讀 1143·2019-08-30 11:16
閱讀 1674·2019-08-29 16:36