0

Node.jsで記述されたサービスとRubyで記述されたワーカーに複数のフロントエンドがあります。さて、問題はそれらをどのように通信させるかです。負荷を処理するためにワーカーの動的プールを維持する必要があり(負荷が上昇するとより多くのワーカーを生成します)、Node.jsフロントエンドを介してユーザーによってアップロードされたワーカーに画像を送信するため、メッセージは非常に大きくなります。優れたスケーリングが必要なため、キューイングソリューションについて考えましたが、以下を提供する既存のソリューション(または誤解されたガイド)は見つかりませんでした。

  1. フォールバックメカニズム。私がこれまでに見つけたソリューションには、単一障害点(メッセージブローカー)があり、フォールバックを提供する方法はありません。
  2. シリアル化。したがって、ブローカーが失敗してもタスクは失われません。
  3. 大きなメッセージを渡す機能。
  4. RubyとNode.js用のEasyAPI
  5. キューサイズを追跡してワーカープールを再配置できるようにするAPI。
  6. できれば軽量。

たぶん私のアプローチは間違っていますか?たぶん私はキューを使うべきではありませんが、他の方法で使うべきですか?または、上記の要件に適合するキューイングソリューションがありますか?

4

3 に答える 3

1

スケーリングするにはキューが必要であり、このキューを監視して「ワーカー」を生成できることは間違いありません。

Apache ActiveMQは非常に堅牢で、RESTプロトコルをサポートしています。Rubyクライアントもキューにアクセスできます。

ApacheActiveMQを使用したRESTfulキューに関する興味深い記事

于 2012-04-18T11:25:04.820 に答える
1

一日の終わりに、私はZeroMQキューソリューションを採用しました。非常に高速で堅牢かつ軽量な実装。独自のブローカーを作成する必要がありましたが、それがこのソリューションの唯一の短所です。

于 2012-06-29T21:09:48.153 に答える
0

redisのパブリッシュ/サブスクライブでトリックを実行する必要があります

http://redis.io/topics/pubsub

于 2012-04-17T06:09:56.463 に答える