常见MQ对比
目前主流的MQ主要有:
- RabbitMQ
- RocketMQ
- kafka
- Activemq
MQ对比
MQ | 描述 |
---|---|
RabbitMQ | erLang开发(高并发语音),对消息堆积的支持不算太好,当大量消息积压的时候,会导致Rabbit性能下降。每秒钟可以处理几万到几十万条消息。 |
RocketMQ | java开发,面向互联网集群化功能丰富,对在线业务的响应时延做了很多的优化,大多数情况。而且由于是java开发,如果想进行定制化扩展也比较方便 |
Kafka | Scala开发,面向日志功能丰富,性能最高。当你的业务场景中,每秒钟消息数量没有那么多的时候,kafka的时延反而会比较高,所以,Kafka不太适合在线业务场景。 |
Activemq | java开发,简单,稳定,性能不如前面三个。小型系统用也ok,但是不推荐。 |
什么是消息队列(MQ)
MessageQueue 是一个广泛应用在互联网项目中且非常重要的技术, MessageQueue 通常被用来解决在高并发压力下类似于流量削峰、服务解耦、消息通讯、最终消息一致性等这样的问题。
主流MQ的优缺点
RabbitMQ | RocketMQ | Kafka | Activemq | |
---|---|---|---|---|
协议 | AMQP | AMQP | 自行设计 | AMQP |
跨语言 | 支持 | 支持 | 支持 | 支持 |
优点 | 单机吞吐量:万级 健壮、稳定、医用、跨平台、支持多种语言; 功能支持: MQ功能完备 高扩展性: 支持事务 | 单机吞吐量:十万级 可用性: 非常高,分布式 架构: 消息可靠性高 功能支持:MQ功能完备 高扩展性:支持事务 | 单机吞吐量:百万级 可用性:分布式的非常高 依赖ZK可动态扩展节点高性能高吞吐,消息可指定追溯 | 单机吞吐量:万级 可用性:非常高 功能支持: MQ功能完备 高扩展性 |
缺点 | Elang语言难度大,很难扩展,研发人员较少 | 目前只支持java及c++; | 严格的顺序机制,不支持消息优先级,不支持标准协议 | 项目比较陈旧,官方社区在5.X之后对其维护越来越少 |
综合评价 | 适用于稳定性要求优先的企业级应用 | 阿里系,国内互联网公司使用居多 | 在日志和大数据方向使用较多 | 小型系统比较适用,但是因为维护越来越少,建议不用 |
参考
https://juejin.cn/post/6896744901665521677
Kafka:
https://juejin.cn/post/6844903495670169607
RabbitMq:
https://juejin.cn/post/6928281243708555272
关注和赞赏都是对小欧莫大的支持! 🤝 🤝 🤝