Question

Je suis en train de déterminer mes options pour le regroupement mon ServiceMix 3.3.1 / Camel 2.1 / AMQ d'application 5.3. J'effectuer le traitement des messages à grand volume et je dois cluster pour une haute disponibilité et l'évolutivité horizontale.

Voici essentiellement ce que fait ma demande ... de type HTTP> sur file d'attente> DES PROCEDES> Database-> SUJET

de ( "jetée: http://0.0.0.0/inbound ") .to ( "activemq: inboundQueue");

de ( "ActiveMQ: inboundQueue maxConcurrentConsumers = 50") .Procédé (décodage ()) .Procédé (transform ()) .Procédé (valider ()) .Procédé (SaveToDatabase ()) .to ( "ActiveMQ: Sujet: ouboundTopic");

Alors, je l'ai lu toutes les pages de regroupement ServiceMix et AcitveMQ, mais je ne suis toujours pas sûr de chemin à parcourir.

Je sais que je peux utiliser une configuration maître / esclave pour HA, mais cela ne suffit pas d'évolutivité.

Je l'ai lu sur le réseau de courtiers, mais ne sais pas comment cela s'applique. Par exemple, si je déploie identiques itinéraires Camel sur plusieurs nœuds d'un cluster, comment vont-ils « interagir » exactement? Si je pointe mon producteur HTTP à un noeud (NodeA), qui messages sont envoyés à NodeB? Seront partagés entre le nœud A / B ... si oui, comment, sont des messages partagés ou dupliqués les files d'attente / sujets? En outre, comment un client externe abonnez-vous à mon « outboundTopic » exactement (et obtenir tous les messages, etc.)?

Sinon, j'ai pensé que je devrais partager un courtier entre plusieurs instances de ServiceMix. Ce serait plus propre qu'il n'y aurait qu'un seul ensemble de files d'attente / sujets à gérer et je pourrais évoluer en ajoutant plusieurs instances. Mais, maintenant, je suis limité à l'évolutivité d'un seul courtier et je suis de retour à un point de défaillance unique ...

Si quelqu'un peut clarifier les compromis pour moi ... Je vous en serais reconnaissant.

Était-ce utile?

La solution

Il y a plusieurs stratégies à l'échelle lorsque vous utilisez le ServiceMix / Camel / ActiveMQ. Parce que chaque logiciel offre tellement d'options, il existe une variété de chemins que vous pouvez prendre en fonction de quelle partie de l'application doit à l'échelle. Voici une liste de haut niveau de quelques stratégies:

  • Augmenter le nombre d'instances de Jetty entrants - Cela nécessite de commencer plusieurs instances du serveur Web et soit des requêtes d'équilibrage de charge à travers les multiples instances ou d'exposer plusieurs URL et d'envoyer toutes les requêtes vers la même file d'attente entrant dans ActiveMQ.

  • Augmenter le nombre d'instances ActiveMQ - En démarrant les instances de ActiveMQ supplémentaires et leur mise en réseau, vous créez un réseau de courtiers. Dans certains milieux on parle de cela comme des files d'attente distribués parce qu'une file d'attente donnée peut être mis à disposition sur l'ensemble des courtiers dans le réseau. Mais si vous allez démarrer plusieurs instances de ActiveMQ, vous devriez juste envisager le démarrage d'autres instances de ServiceMix.

  • Augmenter le nombre d'instances ServiceMix - Chaque instance de ServiceMix intègre une instance de ActiveMQ. En augmentant le nombre de cas de ServiceMix, non seulement vous augmentez le nombre d'instances ActiveMQ (qui peut être mis en réseau pour former un réseau de courtiers) mais vous avez alors la possibilité de déployer plus de copies de votre application dans ces cas de ServiceMix . Si vous avez besoin d'augmenter le nombre de cas ou ActiveMQ ServiceMix, vous pouvez déployer une application consommatrice avec la quantité appropriée des consommateurs simultanés pour chaque instance. Les messages ne reçoivent pas de division ou en double, ils sont distribués de façon ronde préliminaire à tous les consommateurs sur la file d'attente, peu importe où ils se trouvent, en fonction de la demande des consommateurs. À savoir, si une instance ActiveMQ dans le réseau n'a pas les consommateurs, il n'y aura pas de message sur c'est par exemple de la file d'attente d'être consommée. Cela conduit à ma dernière suggestion, l'augmentation du nombre de sondages des consommateurs la file d'attente entrante.

  • Augmenter le nombre de consommateurs JMS sur la file d'attente entrante - Ceci est probablement le pour augmenter le débit moyen le plus facile, le plus puissant et le plus facile à gérer. Il est plus facile parce que vous déployez des instances supplémentaires de votre application consommatrice de sorte qu'ils concurrencent pour les messages de la file d'attente entrante (peu importe si elles sont en concurrence pour une file d'attente locale ou une file d'attente qui est distribuée à travers un réseau de courtiers). Cela peut être aussi simple que l'augmentation du nombre de consommateurs simultanés ou un peu plus impliqué en Éclatement la partie de l'application qui contient les consommateurs et le déploiement à de nombreux cas de ServiceMix. Il est le plus puissant, car il est généralement pas difficile d'applications et d'événements mise à l'échelle menée est toujours fait en augmentant le nombre de consommateurs. Il est le plus facile à gérer parce que vous avez la possibilité de changer la façon dont vos applications sont emballés de telle sorte que l'application consommatrice est tout à fait distincte de donner, il la capacité à distribuer.

Cette dernière suggestion est le moyen le plus puissant à l'échelle de votre application. Tant que le point de terminaison HTTP entrant peut gérer une grande quantité de trafic, vous ne pouvez avoir besoin d'augmenter les consommateurs sur la file d'attente entrante. La grande raison pour ce faire est que soit les consommateurs ou le grain auquel ils la main hors faisant tout le levage de charges lourdes, la quantité importante de traitement et de validation. En général, il est ce processus qui a besoin en fin de compte le plus de ressources.

Espérons que cela fournit les informations dont vous avez besoin pour commencer à aller dans une direction, ou peut-être quelques-unes, en fonction de quelle partie de votre application, vous avez réellement besoin à l'échelle. Si vous avez des questions, s'il vous plaît laissez-moi savoir.

Bruce

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top