2011-12-13 6 views
0

すべてのMySQL操作でリアルタイムで実行されるJavaアプリケーションからnode.jsサーバー(websocketサーバーが行う)を通知する必要があります。Java/MySQLからnode.jsを通知する最も効率的な方法は何ですか?

私は最良の選択肢を探していますし、これまでに思い付いた:

a)はMySQLの上のトリガ
は、MySQLは、その後、それ自身で、プッシュするのWebSocketサーバに信号を送りますクライアントへの更新。

B)は、Javaアプリケーションのコールサーバ
Javaはクライアントに新しいデータをプッシュするためにどのような/のNode.jsに信号を送ります。

私はMySQLがシグナリングの作業負荷を処理していると想定しています.Node.jsがJavaアプリケーション(時間に敏感です)の方が効率的です。

第3の代替手段はありますか?以下の説明よりも優れていますか?

答えて

0

まず、どのエンティティ/アクティビティが論理的に信号を生成しているかを判断する必要があります。それは実際にはMySQL上の挿入物か、Javaアプリケーションによって実行される挿入物かです。 MySQL DBを変更する他のアプリケーションはありますか?もしそうでなければ、私は個人的にnode.jsサーバーが待ち受ける待ち行列(別のプロセス)にすべてのイベントを投稿します。 JavaとNode.jsの両方のクライアントを持つキューを使用すると、ここで役立ちます。このようにして、データベースへの負荷は最小限に抑えられ、アーキテクチャーはDB /アプリケーションに依存しません(MySQLを使用するすべてのアプリケーションからキューへの更新をポストしていると仮定します)。

このようなキューの例は、Beanstalkdです。

2

JavaとNode間の通信チャネルを作成するには、RedisまたはZeroMQのようなものを使用する必要があります。 Javaはそのチャネルを介してメッセージを送信し、Nodeはそれを傍受してMySQLにプッシュし、完了したら応答します。

Javaが応答を待つことはなく、ノードとMySQL間の非同期通信(コールバックとトリガーを使用)が原因で、Javaが応答を待たずに済んでいるようです。

関連する問題