2

私は、 WAMPルーターを複数のマシンにスケールアウトすることについて多くのことを考えてきました。特に、バックアップ システムを持たずに 1 つのシステムに依存することは、ライブ シナリオでは少し難しいように思われるためです。

複雑なマスター ノードの選択とそれに付随するすべてを行わないようにするために、私は次のアイデアを思いつきました。フィードバックを得たいと思っています。

ルーターは、次のような情報を共有する必要があります。

認証

  • セッション ID

RPC

  • 単純な登録を使用するときに、クライアントが既に uri に登録されているかどうかを確認します
  • パターンベースの登録のための転送呼び出し
  • メタ API 情報

パブ/サブ

  • ネットワーク内のすべてのクライアントにイベント メッセージを提供する
  • メタ API 情報

すべてのルーター間に接続が必要です。接続とトラフィックを低く抑えるために、リング インフラストラクチャを用意することをお勧めします。

   +----------------+    +-----------------+    +--------------+
   |                |    |                 |    |              |
+-->  First Router  +---->  Second Router  +---->  Nth Router  +--+
|  |                |    |                 |    |              |  |
|  +----------------+    +-----------------+    +--------------+  |
|                                                                 |
+-----------------------------------------------------------------+

すべてのルーターには、次のルーターに接続される独自のクライアントがあります。クライアントから送信された CALL または PUBLISH の受信メッセージ ID を格納することにより、ルーターはラウンドトリップを識別できます。別のルーターからの着信はそのまま処理されます。Yields は正しい INVOCATION.Request|id を持ち、正しいルーターに転送できます。

ルーターの紛失

このインフラストラクチャでは、すべてのルーターに対して静的で同一の構成が必要になります。これは、動的スケーリングが機能しないことを意味しますが、そのためリーダーの選出は必要ありません。ルーターが強制終了された場合、次のルーターはルーターのリストから接続されます。一定のポーリングにより、ルーターがオンラインに戻ったかどうかを確認できます。

私はこれについて深い調査を行っていません。ですから、そのためのインプットをいただければ幸いです。

4

1 に答える 1