¿Cuáles son las ventajas de una arquitectura basada en encuestas sobre una arquitectura basada en eventos?

Respuesta corta y famosa: depende del contexto .

Respuesta larga en palabras amplias:

Las arquitecturas basadas en eventos solo son útiles cuando obviamente son el camino a seguir . Las arquitecturas basadas en eventos son eficientes en algunos escenarios, y las arquitecturas basadas en encuestas son en otros.

1. La creación de eventos suele ser costosa . De hecho, la mayoría de las plataformas incluso crean sus llamados mecanismos de eventos además de los mecanismos de votación. Estas plataformas solo proporcionan ilusiones de sistemas controlados por eventos. Son abstracciones sobre las encuestas, y se aplica la ley de abstracción permeable.

2. Los sistemas controlados por eventos generalmente asumen una comunicación bidireccional : para poder recibir notificaciones cuando sucede algo, debe poder enviar la respuesta al cliente. Esto no es posible para un gran porcentaje de los sistemas que usamos hoy en día, por ejemplo, todos los sistemas basados ​​en Solicitud-respuesta como HTTP están en esta categoría. Para estos sistemas, lo que hace posible el manejo de eventos es el sondeo detrás de escena.

3. Mantener una conexión viva todo el tiempo es costoso e imposible en algunas circunstancias. Un servicio de larga duración consumirá recursos para mantener la conexión abierta mientras no sea necesaria.

4. Las arquitecturas basadas en eventos suponen que los clientes están listos para recibir el evento todo el tiempo . En caso de sondeo, es más probable que reciba destinatarios que no fallan por sus respuestas. Tiene más casos extremos y escenarios de falla de los que preocuparse.

5. Las arquitecturas basadas en eventos son a menudo complejas de implementar, comprender y mantener . El evento controlado es multiproceso y asíncrono por naturaleza, donde ambos multiplican la complejidad polinomialmente.

Como últimas palabras, las arquitecturas dirigidas por eventos son “no nos llames, te llamaremos” donde las encuestas son “sigue llamándonos”. Se trata de mentalidad / contexto primero, no funcionales después.

Acoplamiento

El sistema basado en eventos conecta al cliente y al servidor (el cliente conoce al servidor y el servidor conoce al cliente), lo que dificulta el escalado.

Costo

La arquitectura basada en eventos es más eficiente al retener más recursos (estructuras de datos que se asignan al cliente) y, por lo tanto, no es tan eficiente en recursos.

Complejidad

La arquitectura basada en eventos tendrá que lidiar con la tolerancia a fallas en ambos lados (el cliente debe abordar la falla del servidor; el servidor debe manejar la falla del cliente).

Grandes respuestas, pero me gustaría agregar un punto importante.

Responsabilidad

En la arquitectura de sondeo, la responsabilidad de hacer que las cosas funcionen recae en usted (lado del sondeo), en contraste con la función basada en eventos, la responsabilidad recae en el otro lado (editor del evento). Esto puede ser un factor importante para decidir la arquitectura, especialmente cuando se trata de un sistema que no es confiable y no está bajo su control.

Debe ir a votar cuando la granularidad del evento que le preocupa es demasiado pequeña. En tales casos, la latencia en la detección de eventos es una sobrecarga significativa en comparación con el tiempo de ejecución del evento.

Ventajas

  • Fácil de codificar
  • Fácil de comprender
  • Fácil de diseñar y hacerlo lógicamente correcto

More Interesting

¿Qué partes del ecosistema de Java son las más valiosas a partir de 2014?

¿Cuáles son los diferentes tipos de herramientas para desarrolladores?

¿Cómo se gestiona un proyecto de código abierto tan grande como Linux sin tener un equipo de gestión central a cargo?

¿Es bueno aprender herramientas de flujo de trabajo / BPM para un desarrollador / codificador con más de 5 años de experiencia?

¿Puedo convertirme en un excelente ingeniero de software si trabajo en una empresa pequeña?

¿Cuáles son los métodos de desarrollo de software más populares utilizados hoy en día?

Soy un desarrollador de software que trabaja en una empresa decente. Un año después de obtener mi maestría en Ciencias de la Computación, he perdido completamente el interés en el campo. ¿Cómo puedo cambiar radicalmente mi carrera profesional para hacerme más feliz?

Cómo ganarme la vida con la programación en 2017 desarrollando mi propio proyecto

¿Es válida la compresión si los datos después de la compresión no son útiles? Podemos recuperar los datos originales por descompresión.

¿Cuál es una descripción clara de una arquitectura MVC?

¿Cómo convertir hardware a software? Es decir, ¿cuál es el sistema intermediario que le permite ingresar código para que lo ejecute un robot?

¿Cuál es el papel de un ingeniero de soporte de aplicaciones?

¿Qué tan útiles son las recomendaciones personales con respecto a las habilidades particulares de los ingenieros?

¿Cuáles son las diferencias en los hábitos de trabajo entre los desarrolladores estadounidenses, chinos e indios?

¿Qué tipo de prueba de software se usa generalmente en mantenimiento de software?