各消息队列对比

Kafka 起初是由 LinkedIn 公司采用 Scala 语言开发的一个分布式、多分区、多副本且基于 zookeeper 协调的分布式消息系统,现已捐献给 Apache 基金会。它是一种高吞吐量的分布式发布订阅消息系统,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如 ClouderaApache StormSparkFlink 等都支持与 Kafka 集成,号称一半以上世界500强都是它的客户

RocketMQ 是阿里开源的消息中间件,目前已经捐献个 Apache 基金会,它是由 Java 语言开发的,具备高吞吐量、高可用性、适合大规模分布式系统应用等特点,积极在Cloud-Native领域发力。

RabbitMQ 是采用 Erlang 语言实现的 AMQP 协议的消息中间件,最初起源于金融系统,用于在分布式系统中存储转发消息。

ActiveMQApache 出品的、采用 Java 语言编写的完全基于 JMS1.1 规范的面向消息的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。不过由于历史原因包袱太重,目前市场份额较小,其最新架构被命名为 Apollo,号称下一代 ActiveMQ

ZeroMQ 号称史上最快的消息队列,基于 C 语言开发。ZeroMQ 是一个消息处理队列库,可在多线程、多内核和主机之间弹性伸缩,虽然大多数时候我们习惯将其归入消息队列家族之中,但是其和前面的几款有着本质的区别,ZeroMQ 本身就不是一个消息队列服务器,更像是一组底层网络通讯库

 

功能性

Kafka

rabbitmq

zeromq

rocketmq

activemq

资料文档

丰富

丰富

较多

开发语言

Scala

Erlang

c

java

java

协议支持

私有(TCP)

AMQP

TCPUDP

私有

OpenWireSTOMPRESTXMPPAMQP

存储

内存、磁盘、数据库,支持大量堆积

内存、磁盘。支持少量堆积

消息发送端的内存或者磁盘中。不支持持久化

磁盘。支持大量堆积

内存、磁盘、数据库。支持少量堆积

事务支持

支持

支持

不支持

支持

 

支持

 

负载均衡

支持(分区单位)

支持不好

去中心化,不支持负载均衡

支持

支持

集群

Leader-Slave’无状态集群

简单集群,“主-备“

不支持集群

多对‘Master-Slave’ 模式,开源版本不支持自动

简单集群,“主-备“

管理界面

一般

一般

可用性

非常高(分布式)

高(主-从)

非常高(分布式)

高(主-从)

消息语义

at least onceat most once

at least onceat most once

重传机制

at least once

at least once

TPS

极大

比较大

极大

比较大

订阅方式

Topic为单位的订阅/发布

direct, topic ,Headersfanout

p2p

topic/messageTag正则匹配

点对点(p2p)、广播(发布-订阅)

顺序消息

支持

不支持

不支持

支持

不支持

消息确认

支持

支持

支持

支持

支持

消息回溯

支持按分区offset

不支持

不支持

支持按时间点

不支持

并发度

高(分区数量+消费者数量)

极高,Erlang语言

容灾

不支持,单独组件

不支持

不支持

不支持

不支持

加密

TLS/SSLSASL身份认证和权限控制

TLS/SSL

不确认

TLS/SSL

TLS/SSL

死信队列

不支持,业务通过connect实现

不支持

不支持

不支持

不支持

小型化

默认最少三台

不确认

不确认

 

不确认

 

不确认

 

流控

客户端、用户二种方式流控

内存、磁盘、积压三个维度进行流控

不支持

消费延时流控

生产者流控未落盘的数据量,默认1M

消费者未确认的消息数量

降级

调用链

不支持

不支持

不支持

不支持(商业版支持)

不确认

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值