web-dev-qa-db-fra.com

ActiveMQ vs Apollo vs Kafka

Je n'ai aucune expérience préalable avec * MQ et je cherche à développer des connaissances sur JMS et les files d'attente de messages en général. De cette façon, je me demande si je devrais commencer par ActiveMQ ou simplement "l'ignorer" et commencer par apprendre par moi-même Apollo. Apollo est-il aussi complet que ActiveMQ? Implémente-t-il JMS 2.0 (je vois qu’ActiveMQ est resté bloqué avec 1.1)? Est-ce que je vais manquer quelque chose de vraiment important?

Aussi, comment Kafka se compare-t-il à ces deux solutions?

61
Martin

Apache ActiveMQ est un excellent bourreau de travail plein de fonctionnalités et de trucs sympas. Ce n'est pas le logiciel MQ le plus rapide du marché, mais suffisamment rapide pour la plupart des cas d'utilisation. Parmi les fonctionnalités, citons la flexibilité, le basculement, l’intégration avec différents serveurs d’applications, la sécurité, etc.

Apache Apollo est une tentative d'écriture d'un nouveau noyau pour ActiveMQ afin de gérer un grand nombre de clients et de messages. Il n’a pas toutes les fonctionnalités pratiques et agréables d’ActiveMQ mais évolue beaucoup mieux. Apache Apollo est une implémentation MQ très rapide lorsque vous lui attribuez un grand serveur multicœur et des milliers de connexions simultanées. Il possède une interface utilisateur simple et agréable, mais n’est pas une solution unique.

Il semble qu’une tentative de fusion de plusieurs fonctionnalités ActiveMQ avec HornetQ sous le nom ActiveMQ Artemis soit en cours. HornetQ a le support JMS2.0, donc mon humble conjecture est qu'il est susceptible d'apparaître dans ActiveMQ 6.x.

JIRA , Github

Kafka est une bête différente. C'est un courtier de messages très simple destiné à redimensionner le plus rapidement possible les abonnements persistants à la publication sur plusieurs serveurs. Pour les déploiements de petite à moyenne taille, Kafka n'est probablement pas la meilleure option. Il permet également de faire les choses pour atteindre un débit élevé. Vous devez donc faire beaucoup d'échanges en termes de flexibilité. obtenir un débit distribué élevé. Si vous débutez dans le domaine de la qualité de service et des courtiers, je suppose que Kafka est excessif. Par contre, si vous avez un cluster de serveurs de taille décente et que vous vous demandez comment autant de messages que possible à travers cela - donnez à Kafka) un tour!

99
Petter Nordlander

C'est une question plus ancienne, mais je vais vous donner une réponse plus moderne ici.

  • Le projet Apollo est officieusement mort et ils suggèrent qu’Artemis est la nouvelle vedette. ( lien ) Le développement (apparemment) bloqué d'Apollo ne me donne pas confiance en l'avenir d'Artemis.
  • Mon expérience est similaire à la réponse de Petter en ce sens qu'ActiveMQ est riche en fonctionnalités et capable. Cependant, il semble que chaque version corrige des pannes aléatoires et des fuites de mémoire, ce qui n’inspire pas confiance. Il est stable pour mon projet (qui utilise le clustering), mais nous avons observé un comportement étrange et des plantages du courtier au cours des douze dernières versions (utilisant actuellement la version 5.14.3).
  • Je n'ai pas utilisé RabbitMQ (mon projet actuel concerne ActiveMQ), mais je l'essayerai lors du prochain projet nécessitant un bus de messagerie. Ne pas avoir l'évier de la cuisine avec des fonctionnalités à prendre en charge signifiera, espérons-le, qu'il est plus stable.

EDIT: La version 2.3.0 d'Apache Artemis est arrivée vers le 5 septembre 2017. Elle semble donc progresser actuellement. Mais ( lien ) changelog semble encore trop effrayant.

25
Matthew B.

Je suis un critère de performance de ActiveMQ, Apollo, HornetQ dans des scénarios non persistants et persistants, je pense qu’il sera utile de choisir celui qui doit être utilisé, le lien indiqué ci-dessous: http: // hiramchirino. com/jms-benchmark/ubuntu-2600k/index.html

3
Tommy

Apache Kafka peut être qualifié de "" plate-forme de diffusion en continu " ActiveMQ , un MOM (middleware orienté messagerie) est un "courtier de messages à usage général" .

Kafka fait une chose et une chose vraiment bien: dans un publication/abonnement (pub/sub) architecture, les messages sont écrits dans des rubriques (journaux distribués par partition), que les consommateurs consomment ensuite par décalage. Kafka, qui est conçu pour le cloud , avec un débit très élevé en tête, se concentre sur ce point, et est de nos jours le modèle idéal pour la messagerie asynchrone.

ActiveMQ supporte à la fois pub/sub et sémantique point à point . Dans ce dernier cas, une file d'attente traite des messages uniques entre un seul producteur et un consommateur spécifique. Ceci, comme pub/sub, est asynchrone, mais fonctionne légèrement différemment: si un consommateur reçoit un message dans la file d'attente mais ne parvient pas à le reconnaître, le message est alors envoyé à un autre consommateur. ActiveMQ prend également en charge plusieurs protocoles de messagerie, notamment AMQP, STOMP, JMS, CAMEL et MQTT.

Tandis que Apache Kafka peut être la solution idéale pour une communication asynchrone simple; ActiveMQ semble être préféré par certains pour des modèles de routage plus complexes, tels que les modèles d'entreprise, cependant, beaucoup soutiennent que Kafka est une amélioration par rapport à ActiveMQ, pour des raisons telles que un débit plus élevé , une gestion plus efficace des partitions pour les journaux/sujets, et des ACL plus détaillées pour les consommateurs utilisant un sujet.

0
John Hammink