消息中间件(一)五大MQ比较

MQ技术众多, 包含RocketMQ、KAFKA、RabbitMQ、ActiveMQ、ZeroMQ等。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。

技术比对

对比点 ActiveMQ RabbitMQ RocketMQ ZeroMQ Kafka
成熟度 成熟 成熟 比较成熟 不成熟 成熟
社区活跃度
文档
优点 功能齐全, 大量开源项目使用 Erlang 语言开发, 并发能力,性能很好 支持上万个队列;多种消费模式;可靠性好 低延时,低开销,高性能 多文件并发写入,高吞吐量
授权方式 开源 开源 开源 开源 开源
协议 OpenWire、STOMP、REST、XMPP、AMQP AMQP 自定义协议 TCP、UDP 仿AMQP
持久化 内存、文件、数据库 内存、文件 磁盘文件 在消息发送端保存 磁盘文件
事 务 支持 不支持 支持 不支持 支持
集群 支持 支持 支持 不支持 支持
负载均衡 支持 支持 支持 不支持
管理界面 一般 可视化管理 一般
顺序 不严格 不严格 保证严格顺序 无法保障 不严格
单机性能 万级 万级 10万级 10万级 10万级

选型案例

假如做的是金融交易类平台, 要求较高的性能与数据的一致性。

ActiveMQ和RabbitMQ虽然成熟度较高, 但是并非针对高吞吐量设计, 不适合互联网大数据量应用;ZeroMQ虽然有较好的吞吐性能, 但是其成熟度不高, 事务、集群与接入都不完善;那么剩下RocketMQ和Kafka, 这两种队列都是针对大数据设计, 高吞吐性能,特征都比较相似;但是Kafka吞吐性能单机可以达到百万级, 而RocketMQ在十万级 , 是不是就可以采用Kafka? 性能问题解决了, 但是数据的一致性呢? Kafka正因为其高性能,每个Partition一个物理文件, 带来的弊端是不能严格保证顺序, 这样就会导致数据出现错乱, 而金融场景对这点是非常严格苛刻, RocketMQ正是借鉴Kafka架构重新设计, 可以支持上千个Topic而不衰减。RocketMQ消息投递保证了严苛的顺序, 虽然单机吞吐量不及Kafka, 但是可以通过集群方式弥补, 没有完美的技术, 基于这些特征, RocketMQ更适合金融类场景的运用, RocketMQ也是经过阿里支付场景海量数据的验证。

猜你喜欢

转载自blog.csdn.net/qq_43545600/article/details/122297917
今日推荐