の複数のインスタンスがRedisMqServer
互いにつまずくという問題が発生しています。1 つのサーバーを停止すると、他のサーバーが停止します。これを実装した方法は明らかに間違っていますがRedisMqServer
、この状況でどのように使用するべきかを特定できません。
当社のインフラストラクチャは次のもので構成されています。
- マスター/スレーブ構成の 2 つの Redis サーバー
- 負荷分散された 2 つの API インスタンス (以下「API A」と呼びます)
- 負荷分散された 2 つの API インスタンス (以下「API B」と呼びます)
API A と B は、ServiceStack.Redis を使用RedisMqServer
して同期メッセージと非同期メッセージの両方を相互に送信する 2 つの独立したアプリケーションです。ServiceStack のオープン ソース v3 リビジョンを使用しています。
RedisMqServer
非同期通信は双方向で行われるため、両方の API が構成されています。
RedisMqServer
が破棄されると、チャネルでメッセージが送信されますSTOP
。mq:topic:in
その結果、サーバーはすべてのチャネルからサブスクライブを解除し、要求の処理を停止します。
ただし、このチャネルは API A と API B の両方で使用されているため、どちらかを停止するともう一方も停止します。
のインスタンスごとに単一の Redis サーバー インスタンスを使用することになっていますRedisMqServer
か?
各 API は、常に単一の Redis サーバーにのみ接続していることに注意してください。スレーブ サーバーは、マスターが使用できなくなった場合にのみ接続されます。