J'ai lu récemment sur la recherche d' événements et j'aime vraiment les idées qui se cachent derrière, mais je suis coincé avec le problème suivant.
Supposons que vous ayez N processus simultanés qui reçoivent des commandes (par exemple des serveurs Web), génèrent des événements en conséquence et les stockent dans un magasin centralisé. Supposons également que tous les états d'application transitoires soient conservés dans la mémoire des processus individuels en appliquant séquentiellement les événements du magasin.
Supposons maintenant que nous avons la règle commerciale suivante: chaque utilisateur distinct doit avoir un nom d'utilisateur unique.
Si deux processus reçoivent une commande d'enregistrement d'utilisateur pour le même nom d'utilisateur X, ils vérifient tous les deux que X ne figure pas dans leur liste de noms d'utilisateurs, la règle valide pour les deux processus et ils stockent tous les deux un événement «nouvel utilisateur avec le nom d'utilisateur X» dans le magasin .
Nous sommes maintenant entrés dans un état global incohérent car la règle métier est violée (il y a deux utilisateurs distincts avec le même nom d'utilisateur).
Dans un système de style RDBMS traditionnel à serveur N <-> 1, la base de données est utilisée comme point central de synchronisation, ce qui permet d'éviter de telles incohérences.
Ma question est la suivante: comment les systèmes basés sur des événements abordent-ils généralement ce problème? Traitent-ils simplement toutes les commandes de manière séquentielle (par exemple, limitent-elles à 1 la quantité de processus pouvant écrire dans le magasin)?