activeMq:基本版本
rabbitMq:一般消息
rocketMq:分布式事务异步确保型
kakfa:数据量比较大
特性 | ActiveMQ | RabbitMQ | RocketMQ | kafka |
开发语言 | java | erlang | java | scala |
语言支持 | 目前是java及c++,其中c++不成熟 | |||
单机吞吐量 | 万级 | 万级 | 10万级 | 10万级 |
时效性 | ms级 | us级 | ms级 | ms级以内 |
可用性 | 高(主从架构) | 高(主从架构) | 非常高(分布式架构) | 非常高(分布式架构)一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用 |
功能特性 | 成熟的产品,在很多公司得到应用;有较多的文档;各种协议支持较好 | 基于erlang开发,所以并发能力很强,性能极其好,延时很低;管理界面较丰富 | MQ功能比较完备,扩展性佳 | 只支持主要的MQ功能,像一些消息查询,消息回溯等功能没有提供,毕竟是为大数据准备的,在大数据领域应用广。 |
数据存储方式 | a) kahaDB:文件共享,默认方式 b) JDBC:数据库共享 c) LevelDB:数据共享,本文使用方式 | |||
部署方式 | 1、默认的单机部署(kahadb) activeMQ的默认存储的单机方式,以本地kahadb文件的方式存储,所以性能指标完全依赖本地磁盘IO,不能提供高可用。 2、基于zookeeper的主从(levelDB Master/Slave) 优点: 实现高可用和数据安全 性能较好 缺点: 因为选举机制要超过半数,所以最少需要3台节点,才能实现高可用。 3、基于共享数据库的主从(Shared JDBC Master/Slave) 优点: 实现高可用和数据安全 简单灵活,2台节点就可以实现高可用 缺点: 稳定性依赖数据库 性能依赖数据库 | 集群就有多master 模式、多master多slave异步复制模式、多 master多slave同步双写模式。多master多slave模式部署架构图 只是NameServer集群,在kafka中是用zookeeper代替,都是用来保存和发现master和slave用的 |