以下视频将为您介绍 CMQ 和开源消息队列的优势对比:
?
对比 RabbitMQ 的优势
CMQ-QPS 优势:在保证高可靠前提下,同等物理设备,CMQ 的吞吐量优于 RabbitMQ 四倍以上。单集群 QPS 超过10万。
RabbitMQ 不支持消息回溯:RabbitMQ 不支持消息回溯,CMQ 支持按照时间回溯消息。例如从一天之前的某时某分某秒开始重新消费消息。典型业务场景如 Consumer 做订单分析,但是由于程序逻辑或者依赖的系统发生故障等原因,导致今天消费的消息全部无效,需要重新从昨天零点开始消费,那么以时间为起点的消息重放功能对于业务非常有帮助。
一致性算法对比:CMQ 和 RabbitMQ 都能够使用多台机器进行热备份,提高可用性。CMQ 基于 Raft 算法实现,简单易维护。RabbitMQ 使用自创的 GM 算法(Guaranteed Multicast),学习难度较高。
RabbitMQ 运维难度大:RabbitMQ 的开发语言用的是 Erlang,较小众、学习成本高。
对比 RocketMQ 的优势
RocketMQ 在极端情况下,会丢失数据:RocketMQ 允许未刷盘就向客户端返回确认,在机器异常宕机时,会丢消息。
RocketMQ 需搭建多 Master、Slave 才能保证业务高可用:RocketMQ 只有在 ISR 中有存活节点时,才能保证可用性和可靠性,ISR 中无存活节点时,可用性和可靠性无法保证,开销较大。
因此,相比传统开源 MQ 应用,云服务器哪家好 CMQ 具有以下优势:
对比项 | 云服务器哪家好消息队列 | 开源消息中间件软件 |
高性能 | 兼顾性能与可靠性,单 CMQ 实例 QPS 达到5000 | 数据可靠性与性能无法兼顾 |
高扩展性 | 队列数量及队列存储容量可扩展性强 底层系统根据业务规模,自动弹性伸缩,上层业务无感知 高效支持亿级消息收发、推送、堆积,容量不设上限 提供北京、上海、广州地域的多地域服务 | 队列数量和消息堆积数量有限 每个 IDC 机房必须重新部署购买设备、部署,非常繁琐 |
高可靠性 | 基于腾讯自研 CRMQ(Cloud Reliable Message Queue)分布式框架,已在腾讯内部 QQ 微信红包、彩票等业务上得到广泛使用 消息服务每条消息在返回给用户写成功之时就确保数据已被复制3份写到不同物理机上,并且后台数据复制机制能够保证任何一台物理机故障时其上的数据能够快速的做迁移,时刻保证用户数据3份 copy 可用,可靠性达99.999999% 引入改良后的 Raft 一致性算法,保证数据强一致性 业务可用性承诺:99.95% | 数据单机或简单主从结构,存在数据单点问题,一旦丢失不可回溯 开源的 replica 算法,在集群新增、删除服务器节点时,会引发全局的数据重新均衡,引起可用性急剧下降 如 Kafka 使用异步刷盘方式,异步 Replication,无法保证数据强一致性 |
业务安全 | 多维度的安全防护和防 DDoS 攻击服务 每个消息服务提供单独命名空间,客户间数据严格隔离 支持 HTTPS 访问 支持跨地域的安全消息服务 | 安全防护功能有限 考虑到公网的网络威胁,经常无法提供跨地域、跨 IDC 的公网服务 |
?