Robienie tego z silnymi gwarancjami jest trudne, ale nie niemożliwe. O szczegółach jednego rozwiązania pisałem tutaj:https://www.alechenninger.com/2020/05/building-kafka-like-message-queue-with.html
Przykłady są w Javie, ale ważną częścią jest algorytm.
Sprowadza się to do kilku technik:
- Każdy proces próbuje uzyskać blokadę
- Każdy zamek (lub każda zmiana) ma powiązany token ogrodzenia
- Przetwarzanie każdej zmiany musi być idempotentne
- Podczas przetwarzania zmiany token jest używany do zapewnienia uporządkowanych, skutecznych jednorazowych aktualizacji.
Więcej szczegółów w poście na blogu.