リトライロジック

マイクロサービスアーキテクチャは分散されています。これは、ネットワーク上のリクエストが増えることを意味し、ネットワークの輻輳などの一時的な障害の可能性が高まります。

リクエストにリトライポリシーを追加すると、サービスアーキテクチャの回復性を構築するのに役立ちます。多くの場合、このリトライロジックはソースコードに組み込まれています。しかし、Istioでは、トラフィックルールを使用してリトライポリシーを定義して、このロジックをサービスのサイドカープロキシに任せることができます。これは、多くのサービス、プロトコル、およびプログラミング言語にわたって同じポリシーを中心に標準化するのに役立ちます。

Diagram

この例では、helloworld サービスへのすべての内向きのリクエストが5回試行され、完了までに2秒以上かかる場合、試行は失敗としてマークされます。

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: helloworld
spec:
  host: helloworld
  subsets:
  - name: v1
    labels:
      version: v1
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: helloworld
spec:
  hosts:
  - helloworld
  http:
  - route:
    - destination:
        host: helloworld
        subset: v1
    retries:
      attempts: 5
      perTryTimeout: 2s