我们主要调研了几个主流的 mq,kafka、rabbitmq、rocketmq、activemq,选型我们主要基于以下几个点去考虑:
- 由于我们系统的 qps 压力比较大,所以性能是首要考虑的要素。
- 开发语言,由于我们的开发语言是 java,主要是为了方便二次开发。
- 对于高并发的业务场景是必须的,所以需要支持分布式架构的设计。
- 功能全面,由于不同的业务场景,可能会用到顺序消息、事务消息等。
基于以上几个考虑,我们最终选择了 RocketMQ。
Kafka | RocketMQ | RabbitMQ | ActiveMQ | |
---|---|---|---|---|
单机吞吐量 | 10 万级 | 10 万级 | 万级 | 万级 |
开发语言 | Scala | Java | Erlang | Java |
高可用 | 分布式架构 | 分布式架构 | 主从架构 | 主从架构 |
性能 | ms 级 | ms 级 | us 级 | ms 级 |
功能 | 只支持主要的 MQ 功能 | 顺序消息、事务消息等功能完善 | 并发强、性能好、延时低 | 成熟的社区产品、文档丰富 |