マイクロサービスアーキテクチャは分散されています。これは、ネットワーク上のリクエストが増えることを意味し、ネットワークの輻輳などの一時的な障害の可能性が高まります。
リクエストにリトライポリシーを追加すると、サービスアーキテクチャの回復性を構築するのに役立ちます。多くの場合、このリトライロジックはソースコードに組み込まれています。しかし、Istioでは、トラフィックルールを使用してリトライポリシーを定義して、このロジックをサービスのサイドカープロキシに任せることができます。これは、多くのサービス、プロトコル、およびプログラミング言語にわたって同じポリシーを中心に標準化するのに役立ちます。
この例では、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