我們在 Weblogic 14c 集群中有 4 個節點,所有 4 個節點都由負載均衡器前置。從 UI 服務呼叫轉到此集群中的一個節點,基于某些條件,從服務代碼呼叫另一個 3rd 方服務。但是,3rd 方服務在任何時候都只接受 3 個連接(即只能發出 3 個請求),因此例如:如果來自 UI 的 4 個不同請求到達 4 個不同的節點,并且如果所有 4 個請求都呼叫了 3rd 方服務,則其中一個會失敗,在這種情況下,我們不想向用戶拋出錯誤訊息,例如再試一次或其他什么。我們如何優雅地處理這種情況,即除了執行緒之外,還有其他更好的選擇來實作重試機制嗎?如果沒有,請提出任何其他更好的主意。
ps 3rd 方服務不能增加他們這邊打開的連接總數。
uj5u.com熱心網友回復:
Weblogic 包含一個分布式單例服務:http : //developsimler.blogspot.com/2012/03/weblogic-clusters-and-singleton-service.html
有了這個,你可以有一個分布式的單例倒計時鎖存器來控制整個集群對 3rd 方服務的呼叫次數。
uj5u.com熱心網友回復:
如果您收到來自 3rd 方服務的特定例外并且一個服務呼叫足夠快,您可以在同一個前端呼叫中重試并決定重試多少次(可能延遲時間很短)
您在標簽中提到了 spring,所以我假設您正在使用它。
我自己沒有這樣做,但顯然 spring 有一個重試機制:org.springframework.retry.annotation.Retryable
https://fullstackdeveloper.guru/2020/09/29/how-to-retry-service-calls-in-spring-boot/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327879.html
下一篇:漏洞復現之MS17_010
