我對 Istio 很陌生,不是 Kubernetes 的專家,盡管我使用過后者。我恭敬地請求您的理解和比您通常包含的更多細節。
為簡單起見,假設我有兩個服務,Java/SpringBoot。服務 A 監聽來自外部世界的請求,服務 B 監聽來自服務 A 的請求。服務 B 是可擴展的,有時可能會回傳 503。我希望服務 A 以可配置的非編程方式重試對服務 B 的呼叫。這是我嘗試遵循的博客/鏈接,我認為它非常相似。
https://samirbehara.com/2019/06/05/retry-design-pattern-with-istio/
兩個問題:
這似乎很明顯,但如果我想定義一個虛擬可重試服務,我是將它添加到專案的現有 application.yml 檔案中,還是有一些其他檔案可以用于networking.istio.io/v1alpha3?
我會在 yaml/repo 中為服務 A 或服務 B 定義重試配置嗎?無論哪種方式,我都能想到構建 Istio 的原因。
謝謝,樵夫
uj5u.com熱心網友回復:
如果回傳的可擴展服務503,那么添加一個虛擬服務就像博客示例一樣,serviceB并serviceA連接到virtualServiceB將重試的服務是有意義的ServiceB
現在,為了使它作業(從集群內):
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: serviceB
spec:
hosts:
– serviceB
http:
– route:
– destination:
host: serviceB
retries:
attempts: 3
perTryTimeout: 2s
這行:
hosts:
– serviceB
將告訴默認的 Istio 網關(網狀網路)將所有流量路由到serviceB,而 不是virtualServiceB首先路由到ServiceB. 然后您將重試從virtualServiceB到serviceB。
希望這可以幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/457711.html
標籤:Kubernetes istio
上一篇:一個微服務架構中有多少臺服務器?
