ノードで worker_threads を作成しており、それらをカスタム WorkerPool に収集しています。すべてのワーカーは固有の worker.threadId を持っているため、固有です。私のアプリには特定のワーカーを終了する機能があります - WorkerPool に terminateById() メソッドがあります。
したがって、node.js インスタンスが 1 つあれば、すべて問題ありません。しかし、docker-swarm または Kubernetes を使用しようとしている場合、n 個の異なる WorkerPool インスタンスが存在することになります。したがって、たとえば、1 つのノード インスタンスでいくつかのワーカーを作成し、現在 1 つを終了しようとしています。これは、threadId (またはワーカーを識別するための他の一意のデータ) を使用したリクエストがあることを意味します。たとえば、ロード バランサーがこのリクエストに別のノード インスタンスを使用することを選択した場合、このインスタンスにはワーカーがありません。
最初は、ワーカーの一意のインデックスを userId+ThreadId のようなものに変更して、たとえば redis に保存できると思いました。しかし、Worker.findByThreadID() のような情報は見つかりませんでした。複数のノードインスタンスがある場合、状況で何ができますか?
更新: ロード バランサーのスティッキー セッションに関する情報を見つけました。つまり、Cookie を使用して特定のユーザーを特定のノード インスタンスに貼り付けることができますが、私の場合、ワーカーが終了するまでこの貼り付けをアクティブにする必要があります。それは何日も続くことができます