常见的消息队列有:RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、Pulsar等下面分别详解@mikechen
1.RabbitMQ
RabbitMQ是一个开源的消息队列系统,它实现了AMQP(Advanced Message Queuing Protocol)协议,并提供了丰富的功能,如消息持久化、消息确认、灵活的路由和绑定等。
RabbitMQ官网地址:www.rabbitmq.com
RabbitMQ是erlang语言开发,结合erlang语言本身的并发优势,支持很多的协议:AMQP,XMPP, SMTP, STOMP,性能在万级/秒。
RabbitMQ整体架构图如下所示:
2.Kafka
Apache Kafka是一个分布式的流式平台,它可以处理大规模的实时数据流。
Kafka官网地址:kafka.apache.org
Kafka基于发布-订阅模型,具有高吞吐量和持久性,适用于处理大量实时数据的场景。
Kafka最初是由LinkedIn开发,并于2011年初开源,性能在百万级/秒,其整体架构图如下所示:
3.RocketMQ
RocketMQ是一个开源的分布式消息队列系统,由阿里巴巴集团开发并开源,RocketMQ被广泛应用于阿里巴巴集团的内部系统。
RocketMQ具有高吞吐量、低延迟、可靠性强和可扩展性等特点,适用于大规模分布式系统中的消息通信和异步解耦场景。
RocketMQ官网地址:rocketmq.apache.org
RocketMQ参考Kafka而设计的,性能在十万级/秒,其整体架构图如下所示:
4.Pulsar
Apache Pulsar是一个开源的分布式消息和流处理平台,具有高性能、可扩展性和持久化特性。
Pulsar支持多租户、多数据中心部署和动态扩展,适用于大规模和复杂的消息队列和流处理场景。
Pulsar官网地址:pulsar.apache.org
Apache Pulsar是Apache软件基金会顶级项目,是下一代云原生分布式消息流平台,,其整体架构图如下所示:
5.ActiveMQ
ActiveMQ是Apache基金会的一个开源消息中间件,支持JMS(Java Message Service)规范。
ActiveMQ提供了多种通信模式,如点对点(P2P)和发布-订阅(Pub/Sub),并具有可靠性、可扩展性和高可用性。
ActiveMQ官网地址:activemq.apache.org
6.消息队列选型
广泛来说,电商、金融等对事务性要求很高的,可以考虑RocketMQ,技术挑战不是特别高,用 RabbitMQ 是不错的选择,如果是大数据领域的实时计算、日志采集等场景可以考虑 Kafka。
陈睿mikechen
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》