消息中间件之龙争虎斗

1、RocketMQ

1.1 主要特性

1.1.1 基于队列模型:具有高性能、高可靠、高实时、分布式等特点

1.1.2 Producer、Consumer、队列都支持分布式

1.1.3 Producer向一些对垒轮流发送消息,队列集合称为Topic。Consumer如果做广播消费,则一个Consumer实例消费这个Topic对应的所有队列;如果做集群消费,则多个Consumer实例平均消费这个Topic对应的队列集合

1.1.4 能够保证严格的消息顺序

1.1.5 丰富的消息拉取模式

1.1.6 高效的订阅者水平扩展能力

1.1.7 亿级消息堆积能力

1.1.8 提供针对消息的过滤功能

1.2 优点

1.2.1 单机支持1万以上持久化队列

1.2.2 RocketMQ的所有消息都是持久化的,先写入系统PAGECACHE, 然后刷盘,可以保证内存与磁盘都有一份数据,而访问时直接从内存读取。

其他优点跟其它消息中间件都大同小异,这里不再列举

1.3 缺点

1.3.1 支持的客户端语言不多,目前是Java及C++

1.3.2 RocketMQ的社区关注度不及RabbitMQ和kafka

1.3.3 没有Web管理界面,提供了一个CLI(命令行界面)管理工具来查询、管理和诊断各种问题

1.3.4 没有在MQ核心里实现JMS等接口

2、RabbitMQ

2.1 主要特性

2.1.1 可靠性:提供了多种模式,可根据实际情况在性能与可靠性之间进行权衡

2.1.2 灵活路由:消息在到达队列前是通过交换机进行路由的;RabbitMQ为典型的路由逻辑提供了多种内置交换机类型。

2.1.3 消息集群:在相同局域网中的多个RabbitMQ服务器可以聚合在一起作为一个独立的逻辑代理来使用

2.1.4 队列高可用:队列可以在集群中的机器上进行镜像,以确保在硬件问题下还保证消息安全

2.1.5 支持多种队列协议

2.1.6 支持多种语言:用Erlang语言编写,支持所有编程语言

2.1.7 管理界面:RabbitMQ提供独立的用户管理界面,可以监控和管理消息Broker的许多方面

2.1.8 跟踪机制:如果消息异常,RabbitMQ提供消息跟着机制,可以找出发生了什么

2.1.9 插件机制:提供了许多插件,可以多方面扩展

2.2 优点

2.2.1 由于Erlang语言的特性,消息队列性能较好,支持高并发

2.2.2 健壮、稳定、易用、跨平台、支持多种语言、文档齐全

2.2.3 有消息确认机制和持久化机制,可靠性高

2.2.4 高度可定制的路由

2.2.5 管理界面较丰富,在互联网公司也有较大规模的应用,社区活跃度高

2.3 缺点

2.3.1 Erlang语言本身有并发优势,性能较好,但不利于做二次开发和维护

2.3.2 实现了代理架构,使得期效率相对较低

3、Kafka

3.1 主要特性

3.1.1 快速持久化:通过磁盘顺序读写与零拷贝机制

3.1.2 高吞吐:在一台普通的服务器上就可以达到10w/s的吞吐速率

3.1.3 完全的分布式系统:Broker、Producer和Consumer都原生自动支持分布式,依赖zookeeper自动实现复杂均衡

3.1.4 高堆积:支持topic下消费者较长时间离线,消息堆积量大

3.1.5 支持Hadoop数据并行加载

3.1.6 支持同步和异步复制两种高可用机制

3.1.7 支持数据批量发送和拉取

3.1.8 无需停机即可扩展机器

3.2 优点

3.2.1 客户端语言丰富:支持Java、.Net、PHP、Ruby、Python、Go等多种语言

3.2.2 高性能:单机写入TPS约在100万条/秒,消息大学10个字节

3.2.3 提供完全分布式架构,并有replica机制,拥有较高的可用性和可靠性,理论上支持消息无限堆积

3.2.4 支持批量操作

3.2.5 消费者采用Pull方式获取消息,消息有序,通过控制能够保证所有消息仅被消费一次

3.3 缺点

3.3.1 Kafka单机超过64个队列/分区时,Load时会发生明显的飙高现象。队列越多,负载越高,发送消息响应时间变长

3.3.2 使用短轮询方式,实时性取决于轮询间隔时间

3.3.3 消息失败不支持重试

3.3.4 支持消息顺序,但一旦一台代理宕机后,就会产生消息乱序

3.3.5 社区更新较慢

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值