一、ActiveMQ
1、简介
ActiveMQ是Apache出品,作为老牌的消息中间件,它拥有丰富的API,多种集群构建模式,在中小企业中应用广泛。
但相对其他新兴的MQ,劣势还是很多。
2、ActiveMQ的集群架构模式
(1)Master-Slave模式(主备模式)
一主一从或一主多从
利用zookeeper进行两个或多个节点的协调,其中只有一个主节点提供服务,另外的节点启动着,但不对外提供服务。
当主节点挂掉,利用zookeeper把slave节点切换成主节点。
(2)Network模式
其本质就是两组“主备模式”的集成,中间用network网关进行连接配置,就形成了分布式的集群
二、Kafka
1、简介
Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前属于Apache顶级项目。
Kafka最主要特点是基于Pull模式来处理消息消费。
优势是高吞吐量,Kafka从一开始就是面向大数据方向,为了做日志收集、统计分析而设计。
但它对重复消费、丢失、错误并没有严格要求。
所以Kafka对数据可靠性要求并不高,适合的场景是产生大量数据的互联网数据收集、统计分析业务。
2、Kafka的集群架构模式
三、RocketMQ
1、简介
RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目。
RocketMQ是纯Java开发。
RocketMQ具有高吞吐量、高可用性的特点,适合大规模分布式系统应用。
RocketMQ思路源于Kafka,RocketMQ对消息的可靠传输及事务性做了优化。
目前在阿里被广泛应用于交易、充值、流计算、消息推送、日志处理、binlog分发等场景。
RocketMQ高性能、可靠、支持分布式事务、水平扩展、上亿级别的消息堆积、主从之间自由切换,基本MQ的优点和亮点它都有。
但是有一个最大的问题,就是商业版,是收费的,所以有很多功能是不对外提供的。
2、RocketMQ的集群架构模式
四、RabbitMQ
1、简介
RabbitMQ是使用erlang语言开发的开源消息队列系统,基于AMQP协议来实现。
RabbitMQ在企业中应用很多,尤其是在对一些数据一致性、稳定性和可靠性要求很高的场景,RabbitMQ都能很好的胜任。
在目前主流的四种MQ里,做日志处理、分析统计,应用Kafka较多,其他场景应用RabbitMQ 或 商业版 RocketMQ 较多。