Я читав про пошук подій останнім часом і дуже люблю ідеї, які стоять за ним, але я застряг у наступній проблемі.
Скажімо, у вас є N одночасних процесів, які отримують команди (наприклад, веб-сервери), генерують події в результаті і зберігають їх у централізованому магазині. Припустимо також, що всі перехідні стану додатків зберігаються в пам'яті окремих процесів шляхом послідовного застосування подій з магазину.
Скажімо, у нас є таке ділове правило: кожен окремий користувач повинен мати унікальне ім’я користувача.
Якщо два процеси отримують команду реєстрації користувача для одного і того ж імені користувача X, вони обидва перевіряють, чи X відсутній у їхньому списку імен користувачів, правило перевіряється для обох процесів, і вони обидва зберігають в магазині подію "новий користувач з ім'ям X" .
Зараз ми вступили в непослідовну глобальну державу, оскільки правило бізнесу порушено (є два різних користувачів з однаковим іменем користувача).
У традиційній системі N-сервера <-> 1 стиль RDBMS база даних використовується як центральна точка синхронізації, що допомагає запобігти подібним невідповідностям.
Моє запитання: як системи джерел подій зазвичай підходять до цієї проблеми? Чи просто вони обробляють кожну команду послідовно (наприклад, обмежте кількість процесу, який можна записати в магазин до 1)?