私は、 WAMPルーターを複数のマシンにスケールアウトすることについて多くのことを考えてきました。特に、バックアップ システムを持たずに 1 つのシステムに依存することは、ライブ シナリオでは少し難しいように思われるためです。
複雑なマスター ノードの選択とそれに付随するすべてを行わないようにするために、私は次のアイデアを思いつきました。フィードバックを得たいと思っています。
ルーターは、次のような情報を共有する必要があります。
認証
- セッション ID
RPC
- 単純な登録を使用するときに、クライアントが既に uri に登録されているかどうかを確認します
- パターンベースの登録のための転送呼び出し
- メタ API 情報
パブ/サブ
- ネットワーク内のすべてのクライアントにイベント メッセージを提供する
- メタ API 情報
すべてのルーター間に接続が必要です。接続とトラフィックを低く抑えるために、リング インフラストラクチャを用意することをお勧めします。
+----------------+ +-----------------+ +--------------+
| | | | | |
+--> First Router +----> Second Router +----> Nth Router +--+
| | | | | | | |
| +----------------+ +-----------------+ +--------------+ |
| |
+-----------------------------------------------------------------+
すべてのルーターには、次のルーターに接続される独自のクライアントがあります。クライアントから送信された CALL または PUBLISH の受信メッセージ ID を格納することにより、ルーターはラウンドトリップを識別できます。別のルーターからの着信はそのまま処理されます。Yields は正しい INVOCATION.Request|id を持ち、正しいルーターに転送できます。
ルーターの紛失
このインフラストラクチャでは、すべてのルーターに対して静的で同一の構成が必要になります。これは、動的スケーリングが機能しないことを意味しますが、そのためリーダーの選出は必要ありません。ルーターが強制終了された場合、次のルーターはルーターのリストから接続されます。一定のポーリングにより、ルーターがオンラインに戻ったかどうかを確認できます。
私はこれについて深い調査を行っていません。ですから、そのためのインプットをいただければ幸いです。