Tengo una aplicación (basada en microservicios) que se ejecuta en kubernets con Istio 1.7.4
Los microservicios tienen sus propios mecanismos de compensación de transacciones en fallas de integración.
Pero Istio está reintentando las solicitudes, cuando algunas integraciones tienen respuestas de código de estado 503. Necesito deshabilitarlo (al menos en POST, que no es identitario).
Y deja que la aplicación se encargue de ello.
Pero lo he intentado de muchas maneras sin éxito. ¿Alguien me puede ayudar?
Documentación
retry predeterminado está codificado y su valor es igual a 2.El intervalo entre reintentos (más de 25 ms) es variable y lo determina automáticamente Istio, lo que evita que el servicio llamado se vea abrumado por las solicitudes. El comportamiento de reintento predeterminado para las solicitudes HTTP es reintentar dos veces antes de devolver el error.
Por cierto, inicialmente eran 10, pero se redujeron a 2 en Habilitar reintentos para códigos de estado específicos y reducir el número de reintentos a 2 confirmaciones.
puede ajustar su configuración de reintento por servicio en servicios virtuales sin tener que tocar su código de servicio. También puede refinar aún más su comportamiento de reintento agregando tiempos de espera por reintento, especificando la cantidad de tiempo que desea esperar para cada intento de reintento para conectarse con éxito al servicio.
Ejemplos
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings spec: hosts: - ratings http: - route: - destination: host: ratings subset: v1 retries: attempts: 3 perTryTimeout: 2s apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: no-retries-for-one-service spec: hosts: - one-service.default.svc.cluster.local http: - retries: attempts: 0 route: - destination: host: one-service.default.svc.cluster.local