ServiceMix 3.3.1 / Camel 2.1 /AMQ5.3アプリケーションをクラスタリングするためのオプションを決定しようとしています。大量のメッセージ処理を実行していますが、高可用性と水平方向のスケーラビリティを実現するためにクラスター化する必要があります。
これが基本的に私のアプリケーションが行うことです...HTTP->QUEUE-> PROCESS-> DATABASE-> TOPIC
from( "jetty: http: //0.0.0.0/inbound ").to( "activemq:inboundQueue");
from( "activemq:inboundQueue?maxConcurrentConsumers = 50").process(decode()).process(transform()).process(validate()).process(saveToDatabase()).to( "activemq:topic:ouboundTopic" );
したがって、ServiceMixとAcitveMQのクラスタリングページをすべて読みましたが、どちらに進むべきかまだわかりません。
HAにマスター/スレーブセットアップを使用できることは知っていますが、それはスケーラビリティには役立ちません。
ブローカーのネットワークについて読みましたが、これがどのように適用されるかわかりません。たとえば、クラスター内の複数のノードに同一のCamelルートをデプロイした場合、それらはどのように正確に「相互作用」しますか?HTTPプロデューサーを1つのノード(NodeA)に向けると、どのメッセージがNodeBに送信されますか?キュー/トピックはノードA/B間で共有されますか?共有される場合、メッセージは分割または複製されますか?また、外部クライアントはどのようにして私の「outboundTopic」を正確にサブスクライブしますか(そしてすべてのメッセージなどを取得しますか)?
あるいは、複数のServiceMixインスタンス間でブローカーを共有するだけでよいと考えていました。管理するキュー/トピックのセットが1つしかないという点で、これはよりクリーンであり、インスタンスを追加することで拡張できます。しかし、今では単一のブローカーのスケーラビリティに制限されており、単一障害点に戻っています...
誰かが私にとってのトレードオフを明確にすることができれば...私はそれをいただければ幸いです。