Últimamente he estado leyendo sobre fuentes de eventos y realmente me gustan las ideas detrás de esto, pero estoy atascado con el siguiente problema .
Supongamos que tiene N procesos concurrentes que reciben comandos (por ejemplo, servidores web), generan eventos como resultado y los almacenan en un almacén centralizado. Supongamos también que todo el estado de la aplicación transitoria se mantiene en la memoria de los procesos individuales mediante la aplicación secuencial de eventos de la tienda.
Ahora, supongamos que tenemos la siguiente regla de negocios: cada usuario distinto debe tener un nombre de usuario único.
Si dos procesos reciben un comando de registro de usuario para el mismo nombre de usuario X, ambos comprueban que X no está en su lista de nombres de usuario, la regla se valida para ambos procesos y ambos almacenan un evento de "nuevo usuario con nombre de usuario X" en la tienda.
Hemos ingresado en un estado global inconsistente porque se viola la regla de negocios (hay dos usuarios distintos con el mismo nombre de usuario).
En un servidor tradicional de N < - > En un sistema de estilo RDBMS, la base de datos se utiliza como un punto central de sincronización que ayuda a evitar tales inconsistencias.
Mi pregunta es: ¿cómo suelen los sistemas de origen de eventos abordar este problema? ¿Simplemente procesan cada comando secuencialmente (por ejemplo, limitan la cantidad de proceso que puede escribir en la tienda a 1)?