消息队列技术选型

最近公司业务发展,需要对业务结构进行拆分。在业务异步处理的时候用到了消息队列,在此记录一下消息队列的选型过程。根据公司的业务需要,对消息队列有几个要求。第一:消息要能够按生产顺序消费;第二:性能(QPS)要好;第三:消息要能够持久化;最后要尽可能保证数据的幂等性。

一、主流MQ

MQ,消息队列,Message Queue。现在主流的MQ有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等,下面是对比的情况:

消息队列技术选型

消息队列技术选型

经过对各个MQ产品的对比(主要是Kafka,ActiveMQ,RabbitMQ,RocketMq),最终决定采用RocketMQ,理由如下:

l支持严格的消息顺序

l支持Topic与Queue两种模式

l亿级消息堆积能力

l比较友好的分布式特性

l同时支持Push与Pull方式消费消息

l历经多次天猫双十一海量消息考验

lRocketMQ是纯java编写,基于通信框架Netty。

支持严格的消息顺序,这个是选择RocketMQ的首要原因,公司的基础业务需要消息队列要有这个保证,之前都是使用的公司自研的队列。

最后谈下选型的感想,借用58沈老师的话的说,任何脱离业务的架构都是耍流氓,技术选型也是一样,脱离业务的技术选型都是在混时间。另外,选型满足现有和未来可预见的业务和工作需求即可,没必要追求大而全,也没必要追新随大流(大公司潮流)。

关注微信公众号和今日头条,精彩文章持续更新中。。。。。

消息队列技术选型

消息队列技术选型

消息队列技术选型