¿Cuál es el enfoque recomendado para dejar de llamar de manera proactiva a uno de los servicios sobrecargados del cliente en una arquitectura orientada a servicios?

Necesitas pocas cosas:

  • disyuntor para manejar problemas cuando el servicio falla o agota el tiempo por cualquier razón; necesitará registrar sus errores pero devolver algún tipo de respuestas predeterminadas (no esperaría que Amazon se bloquee si algo falla con su motor de recomendaciones, ¿verdad?); es posible que desee echar un vistazo a Hystrix
  • capacidad de escindir nuevas instancias del servicio si los usuarios los están golpeando; Los contenedores Docker realmente ayudan aquí
  • descubrimiento de servicios para que las nuevas instancias sean fácilmente accesibles una vez que se inician; Una vez más, recomendaría lo que Netflix está haciendo aquí con Eureka
  • finalmente necesitará un equilibrador de carga en el lado del cliente como Ribbon (preferiblemente compatible con su descubrimiento de servicio)

Una vez que tenga todo en su lugar, puede llamar a varias instancias del mismo servicio para evitar golpearlas en primer lugar. Si alguno de esos servicios resulta problemático, Hystrix lo ayuda a ignorarlo por algún tiempo (podría mejorar) y si los problemas continúan, se eliminará del registro de servicios.

Nuestros desarrolladores de Neoteric tienen la mayor parte cubierta en nuestra pila. No dude en consultarlo y contactarme / nosotros si tiene alguna pregunta.

Puede usar patrones como Circuit Breaker o Retry y sus hermanos (Retry Forever, Wait and Retry). Obviamente, desea evitar que esto suceda en primer lugar mediante el uso de una o más estrategias, como el uso de CDN, cachés, cachés del lado del cliente, etags o incluso respuestas estándar de respaldo cuando está en peligro, lo que puede ayudar a prevenir solicitudes innecesarias y / o sobrecargar servicios que ya podrían estar cargados. Las bibliotecas como Polly pueden ayudarlo (esta es específicamente para aplicaciones .net, pero hay cosas similares para Java)

Los interruptores automáticos son uno de esos patrones que se pueden usar para evitar que su servicio se vea afectado cuando está en apuros. Más detalles aquí Disyuntores: ¡Descansa antes de que te rompa!