0

ServiceMix/ActiveMQ/Camelのクラスタを使ってデータを並列処理したい。最初にデータを分割してから、複数の JMS メッセージとブローカーの ActiveMQ ネットワークを介して配布することで、それを達成できるようです。

ただし、すべてのノードからのすべての結果を最終的に集約する必要があるというのが難しい部分です。私は現在、それを行う方法がわかりません。最終的には、すべての結果が 1 つのノードに到達する必要があります。

全体の流れは次のようになります。 (1) データを取得します。(2) それを管理しやすいチャンクに分割します。(3) ActiveMQ クラスターを介して、データのチャンクを分散 JMS キューにポストします。(4) データはすべてのノードで処理されます。

今、私が処理する方法がわからない部分:

(5)すべてのノードから処理されたデータを集約します。 (6) 集約された結果を使用した最後の処理ステップ。

                                                        > [Process data (node 1)] >
[Retrieve DATA] >>>[vm://]>>> [SPLIT] >>>[activemq://]>>> [Process data (node 2)] >>>[activemq://]>>> [AGGREGATE] >>>[vm://]>>> [FINALIZE DATA]
                                                        > [Process data (node 3)] >

ActiveMQ ブローカー ネットワークがすべてを問題なく配布している場合、どうすればそれを達成できますか? 最終的な集約ルートを 1 つのノードのみにデプロイしますか? それはSPOFを作成するので、それは好きではありません…</p>

ありがとう!

4

2 に答える 2

1

この使用例は、構成されたメッセージ プロセッサの eip http://camel.apache.org/composed-message-processor.htmlのように聞こえます。

Camel はスプリッタのみを使用した集計をサポートしているため、さらに簡単になります。スプリッターのみについては、上記のリンクを参照してください。

また、競合するコンシューマーを使用すると、複数のノードでデータを並行して処理できます: http://camel.apache.org/competing-consumers.html

次に、JMS 経由で要求/応答を実行して、応答メッセージがメッセージが集約されるキューに送り返されるようにする必要があります: http://camel.apache.org/request-reply.html

また、JMS を介した要求/応答に関する情報を調べてください。これを高速化できるいくつかのオプションがあります: http://camel.apache.org/jms

また、ActiveMQ ブローカーを配布するには、ブローカーのネットワーク (NOB) でブローカーを設定できます: http://activemq.apache.org/networks-of-brokers.html

于 2013-03-26T08:47:50.550 に答える
1

ええと、集約ステージで排他的なコンシューマーを使用できるようですね。その集約ルートをすべてのノードで実行できるはずです。

免責事項:ブローカーのネットワークでのこのソリューションについてはわかりません. しかし、おそらく試してみて、それが役立つかどうかを確認できます.

于 2013-03-18T04:52:21.267 に答える