MQ-主流消息中间件

一、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 较多。

2、RabbitMQ的集群架构模式