着信要求を受け取り、これらの要求を複数のノード (仮想マシン) に転送する node.js アプリを作成しました。
各リクエストの送信先を決定するロジックは非常に単純ですが、複数の CPU (ノード プロセス) で使用すると、競合状態に陥ることがあります。
基本的に、node.js アプリは特定の要件を持つ「START」コマンドを受け取ります (例: Linux ノードへの送信)。ノードのリストを配列に保持し、配列をループして、要件に適合するノードを選択します。次に、そのノードを使用不可としてマークし、最初のノードが使用している間、他の START リクエストが同じノードを選択しないようにします。
リストは Redis に保存されますが、2 つの START リクエストが同じ要件で送信されると、アプリが両方のリクエストに同じノードを割り当てるという競合状態が発生する可能性があります。これは私が望むものではありません。
https://github.com/errorception/redis-lockを使用してみましたが、うまく機能せず、時々問題が発生します。
この問題に取り組む方法について誰かが推奨事項を持っている場合は、大歓迎です!