色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例

瀏覽:2日期:2023-04-09 17:58:29

使用resilience4j的庫和Spring Boot設(shè)計(jì)高彈性的微服務(wù)。

微服務(wù)本質(zhì)上是分布式的。當(dāng)您使用分布式系統(tǒng)時(shí),請(qǐng)始終記住這一第一法則- 網(wǎng)絡(luò)中可能發(fā)生任何事情。處理任何此類意外故障可能很難解決。故障可能是任何東西-應(yīng)用程序,硬件或網(wǎng)絡(luò)等。

系統(tǒng)從故障中恢復(fù)并保持正常運(yùn)行的能力使系統(tǒng)更具 彈性。它還避免了下游服務(wù)的任何級(jí)聯(lián)故障。

重試模式:

在微服務(wù)體系結(jié)構(gòu)中,當(dāng)有多個(gè)服務(wù)(A,B,C和D)時(shí),一個(gè)服務(wù)(A)可能依賴于另一服務(wù)(B),而另一服務(wù)(B)又可能依賴于C,依此類推。有時(shí)由于某些問題,服務(wù)D可能無法按預(yù)期響應(yīng)。服務(wù)D可能引發(fā)了某些異常,例如內(nèi)存不足 錯(cuò)誤或內(nèi)部服務(wù)器錯(cuò)誤。此類異常被級(jí)聯(lián)到下游服務(wù),這可能導(dǎo)致不良的用戶體驗(yàn),如下所示。

使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例

有時(shí),當(dāng)google.com對(duì)我們不起作用時(shí),我們只是不放棄。我們假設(shè)頁面下次可以正常工作,并且大多數(shù)情況下都會(huì)刷新頁面,因此只需刷新頁面即可。間歇性網(wǎng)絡(luò)問題非常普遍。在微服務(wù)領(lǐng)域,我們可能正在運(yùn)行同一服務(wù)D的多個(gè)實(shí)例,以實(shí)現(xiàn)高可用性和負(fù)載平衡。如果其中一個(gè)實(shí)例可能有問題,并且無法正確響應(yīng)我們的請(qǐng)求,則如果我們重試該請(qǐng)求,則負(fù)載均衡器可以將請(qǐng)求發(fā)送到運(yùn)行狀況良好的節(jié)點(diǎn)并正確獲得響應(yīng)。因此,使用“重試”選項(xiàng),我們有更多機(jī)會(huì)獲得正確的響應(yīng)。

使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例

讓我們考慮這個(gè)簡單的應(yīng)用程序來解釋此重試模式。

使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例

如上所述,我們有多個(gè)微服務(wù) 產(chǎn)品服務(wù)充當(dāng)產(chǎn)品目錄并負(fù)責(zé)提供產(chǎn)品信息 產(chǎn)品服務(wù)取決于評(píng)級(jí)服務(wù)。 評(píng)分服務(wù)維護(hù)產(chǎn)品評(píng)論和評(píng)分。 由于擁有大量數(shù)據(jù)而速度慢是眾所周知的。 每當(dāng)我們查看產(chǎn)品詳細(xì)信息時(shí),產(chǎn)品服務(wù)就會(huì)將請(qǐng)求發(fā)送到評(píng)分服務(wù),以獲取該產(chǎn)品的評(píng)論。 我們還有其他服務(wù),例如帳戶服務(wù),訂單服務(wù)和付款服務(wù)等,與本文的討論無關(guān)。 產(chǎn)品服務(wù)是一項(xiàng)核心服務(wù),沒有它,用戶將無法啟動(dòng)訂單工作流程。

設(shè)置:

<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-spring-boot2</artifactId> <version>1.6.1</version></dependency>

產(chǎn)品服務(wù)負(fù)責(zé)根據(jù)用戶搜索條件提供產(chǎn)品列表。它是即使在關(guān)鍵負(fù)載下也應(yīng)該啟動(dòng)和響應(yīng)的核心服務(wù)之一。如果下降,將嚴(yán)重影響收入。由于此服務(wù)取決于評(píng)級(jí)服務(wù),因此我們不希望任何網(wǎng)絡(luò)問題或評(píng)級(jí)服務(wù)不可用性影響此產(chǎn)品服務(wù)。這就是使用 resilience4j 庫的目的。

我首先為resilience4j創(chuàng)建一個(gè)配置, 如下所示。在這里,我們將超時(shí)明確設(shè)置為3秒。我們可以在特定的超時(shí)時(shí)間內(nèi)添加多個(gè)服務(wù)。 我們可以有多種服務(wù)配置,如下所示。 對(duì)于ratingService,我們將最多進(jìn)行3次重試,延遲5秒。 retryExceptions:這些是我們將重試的異常。這是一個(gè)數(shù)組字段。您可以配置多個(gè)例外。 ignoreExceptions:有些異常我們可能不想重試。例如,一個(gè)錯(cuò)誤的請(qǐng)求就是一個(gè)錯(cuò)誤的請(qǐng)求。重試沒有意義。因此,我們忽略了這一點(diǎn)。

resilience4j.retry: instances: ratingService: maxRetryAttempts: 3 waitDuration: 5s retryExceptions:- org.springframework.web.client.HttpServerErrorException ignoreExceptions:- org.springframework.web.client.HttpClientErrorException someOtherService: maxRetryAttempts: 3 waitDuration: 10s retryExceptions:- org.springframework.web.client.HttpServerErrorException- java.io.IOException

代碼:

@Servicepublic class RatingServiceClient { private final RestTemplate restTemplate = new RestTemplate(); @Value('${rating.service.endpoint}') private String ratingService; @Retry(name = 'ratingService', fallbackMethod = 'getDefault') public CompletionStage<ProductRatingDto> getProductRatingDto(int productId){Supplier<ProductRatingDto> supplier = () -> this.restTemplate.getForEntity(this.ratingService + productId, ProductRatingDto.class) .getBody();return CompletableFuture.supplyAsync(supplier); } private CompletionStage<ProductRatingDto> getDefault(int productId, HttpClientErrorException throwable){return CompletableFuture.supplyAsync(() -> ProductRatingDto.of(0, Collections.emptyList())); }}

代碼解釋:

@Retry表示resilience4j將對(duì)該方法執(zhí)行應(yīng)用重試邏輯。 name = ratingService 表示 resilience4j 將使用yaml中的ratingService配置。 當(dāng)main方法由于某種原因失敗時(shí),將使用fallbackMethod。

總結(jié)

重試模式 是用于設(shè)計(jì)彈性微服務(wù)的最簡單的微服務(wù) 設(shè)計(jì)模式之一。引入重試可以解決與網(wǎng)絡(luò)相關(guān)的問題。

源代碼可 在此處獲得。

超時(shí)模式源碼可在此處獲得。

以上就是使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 玖玖精品在线 | 久久精品视频免费在线观看 | 免费在线看黄网址 | 久久99精品视频 | 欧美a在线 | 伊人久热这里只有精品视频99 | 欧美另类精品一区二区三区 | 国产精品揄拍一区二区 | 国产在线综合一区二区三区 | 免费看成人毛片 | 亚洲在线播放视频 | 国产综合精品一区二区 | 欧洲一级片 | 美女扒开双腿让男人桶 | 免费看成人毛片 | 男女性关系视频免费观看软件 | 亚洲欧美另类自拍第一页 | 日韩在线精品 | 免费国产不卡午夜福在线观看 | 久久www免费人成看国产片 | 免费高清欧美一区二区视频 | 99视频福利| 在线免费观看精品 | 亚洲高清在线视频 | 亚洲成人网页 | 美女大片高清特黄a大片 | 特级a欧美孕妇做爰片毛片 特级a欧美做爰片毛片 | 久久精品国产99国产 | 国产三级香港三韩国三级 | 91精品一区二区综合在线 | 99久久精品免费看国产高清 | 亚洲视频在线观看视频 | 国产真实女人一级毛片 | 国产精品久久国产三级国电话系列 | 成年人三级黄色片 | 久 在线播放| 久久免费播放视频 | 欧美日韩看看2015永久免费 | 国产伦精品一区二区三区无广告 | 中文字幕有码在线播放 | 色琪琪一本到影院 |