Microservices architectures are distributed. This means more requests on the network, increasing the chance of transient failures like network congestion.
Adding retry policies for requests helps build resiliency in a services architecture. Often, this retry logic is built into source code. But with Istio, you can define retry policies with a traffic rule, offloading this logic to your services’ sidecar proxies. This can help you standardize around the same policies across many services, protocols, and programming languages.
In this example, all inbound requests to the
helloworld service try 5 times, and an attempt is marked as failed if it takes longer than 2 seconds to complete.
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