強力な保証でこれを行うことは困難ですが、不可能ではありません。ここに1つのソリューションの詳細について書きました:https://www.alechenninger.com/2020/05/building-kafka-like-message-queue-with.html
例はJavaですが、重要な部分はアルゴリズムです。
それはいくつかのテクニックに帰着します:
- 各プロセスはロックの取得を試みます
- 各ロック(または各変更)には、フェンシングトークンが関連付けられています。
- 各変更の処理はべき等である必要があります
- 変更を処理している間、トークンは順序付けられた、効果的に1回限りの更新を保証するために使用されます。
詳細については、ブログ投稿をご覧ください。