1

私は、非同期、イベント駆動型、ノンブロッキング プログラミング モデルのNode.jsプログラミング パラダイムにかなり精通しています。私は現在、仮想マシンのクラウド コンピューティング エコシステム内でNode.jsの使用をどこまで拡張できるかを理解しようとしています。

Web ダッシュボードのサーバー側では、Node.js を http サーバーとして実行し、Cassandra データベースとやり取りしています。ユーザーは、ブラウザーのダッシュボードを介してクラウド サービスを操作します。クライアントとサーバーの間で開かれた Websocket により、サーバー側でユーザーのダッシュボードへのアクションを開始できます。

ユーザーのタスク アクティビティの一部は、ワークフロー アクティビティ用のクラウドベースの仮想マシンを生成することです。これらの VM は、システムのメインの Cassandra データベースと対話する必要があるアプリケーションを実行します。

次のNode.jsアーキテクチャ シナリオに関するフィードバックをお待ちしております。

仮想マシンがユーザーによって生成されると、VM は VM 上で実行されている Node.js インスタンスで開始されます。そのVM の Node.js インスタンスは、この VM、つまりNode- to-Node Websocket は、VM の Node.js インスタンスから確立されます。

VM の Node.js インスタンスは、VM 内で監視する一連のイベントを設定します。システムの Node.js インスタンスは、VM の Node.js インスタンスから監視する一連のイベントも設定しています。VM の Node.js インスタンス イベントがトリガーされて完了すると、必要な Cassandra DB アクションが開始されて完了します。システムの Node.js インスタンスは、VM からの特定のイベントも監視して、Cassandra DB アクションも開始します。

実際、私がここで質問しているのは、両方の Node インスタンスが同じバックエンド DB と通信する Websocket を介して Node.js-2-Node.js 通信チャネルを確立することは理にかなっていますか?

この構成では、システムの Node.js インスタンスと VM の Node. js インスタンス。

ここで説明していることは、非典型的で無意味なシナリオですか? このユース ケースで Node.js を使用するより良い方法はありますか? より適切なコンポーネント構成はありますか?

よろしく、 マーク

4

2 に答える 2

1

いいえ、違います。

WebSocket プロトコルは、WebSocket をサポートする Web ブラウザーがサーバー アプリケーションと通信できるようにする場合にのみ役立ちます。それ以外の点では特に興味深いものでも有用なものでもないため、Web ブラウザを使用しない通信には使用しないでください。

サーバー間の通信には通常の TCP ソケット ( netモジュールを使用) を使用します。

于 2013-11-10T17:52:05.230 に答える
0

WebSocket HTTP 拡張機能の目的は、ファイアウォールの背後に隠されている Web ブラウザーとの双方向通信を可能にすることです。WebSocket は、通常の HTTP リクエストに基づいて独自に構築されたプル スキームを置き換えます。

あなたの場合、通常の REST リクエストを送信することで、両方の Node.js インスタンスが互いに通信できるようにする方が理にかなっています。

さらに、データベースと通信する Node.js インスタンスを 1 つだけ作成し、それを介して通信する他のすべてのインスタンスを作成することを検討します。そうすれば、VM への Node.js のデプロイが簡素化されます。さらに、すべてのデータが 1 つのサーバーを通過するようにすると、複雑なビジネス ロジックのデバッグが容易になります。

WebSocket を使用するもう 1 つの欠点は、開いている接続が多数あることです。あなたの場合、ほとんどの場合、Node.js インスタンスのほとんどが休眠しているようです。彼らとのつながりを維持する意味はありません。

于 2013-11-10T18:38:27.087 に答える