消息中间件有哪些?5大主流消息中间件

消息中间件有哪些?5大主流消息中间件-mikechen

Java面试经常会被问到消息中间件有哪些?下面我就来详解常见的消息中间件@mikechen

1.Apache Kafka

消息中间件有哪些?5大主流消息中间件-mikechen

Kafka是一个分布式的高吞吐量的消息系统,最初由LinkedIn开发,现在是Apache软件基金会的顶级开源项目之一。

Kafka广泛应用于多种用例,例如:实时数据流处理、日志聚合、监控、指标和日志收集、消息队列等。

Kafka的核心架构,如下图所示:

消息中间件有哪些?5大主流消息中间件-mikechen

  • 主题(Topic):消息的逻辑分组,所有消息都属于一个主题。
  • 生产者(Producer):将消息发送到Kafka,可以指定主题和分区。
  • 消费者(Consumer):从Kafka消费消息,可以订阅一个或多个主题。
  • 分区(Partition):一个主题可以分成多个分区,每个分区都是一个有序的日志,可以在多个节点上进行并行处理。
  • 偏移量(Offset):消费者可以记录自己已经消费过的位置,称之为偏移量,Kafka会为每个分区维护一个偏移量。

消息通过一个或多个Kafka集群的代理(Broker)进行传输和存储。

 

2.RabbitMQ

消息中间件有哪些?5大主流消息中间件-mikechen

RabbitMQ是一个开源、跨平台的消息中间件,实现了AMQP协议,支持多种编程语言,RabbitMQ是erlang语言开发。

RabbitMQ架构,如下图所示:

消息中间件有哪些?5大主流消息中间件-mikechen

RabbitMQ原理会涉及到如下组件:

  • 队列(Queue):消息的存储区域,消费者从队列中获取消息,生产者将消息发送到队列中。
  • 交换器(Exchange):接收生产者的消息,并根据路由键将消息发送到相应的队列中。
  • 绑定(Binding):连接交换器和队列之间的路由规则。
  • 生产者(Producer):将消息发送到交换器中。
  • 消费者(Consumer):从队列中获取消息。

RabbitMQ主要应用于任务分发、异步通信、事件驱动等场景。

 

3.ActiveMQ

消息中间件有哪些?5大主流消息中间件-mikechen

ActiveMQ是一个流行的开源消息中间件,支持JMS和STOMP协议,适用于异步通信、解耦和缓冲等场景。

ActiveMQ是老牌的消息中间件,是第一代的消息中间件,是一个完全基于 JMS(Java 消息服务)规范的消息中间件。

 

4.RocketMQ

消息中间件有哪些?5大主流消息中间件-mikechen

RocketMQ是一个分布式的消息队列系统,由阿里巴巴集团开发并开源。

RocketMQ的优点在于:

  1. 高吞吐量和低延迟:RocketMQ采用了Zero Copy技术和批量传输技术,可以实现高吞吐量和低延迟的消息传输。
  2. 分布式架构:RocketMQ采用了分布式架构,可以实现高可用性和容错性。
  3. 消息顺序性:RocketMQ可以保证同一个队列中的消息的顺序性。
  4. 消息可靠性:RocketMQ采用了多种机制来保证消息的可靠性,如同步刷盘和主从复制等。

RocketMQ架构,如下图所示:

消息中间件有哪些?5大主流消息中间件-mikechen

RocketMQ架构主要由以下几个组件构成:

  1. Nameserver:负责管理Broker的注册和发现。
  2. Broker:是RocketMQ的核心组件,负责存储和转发消息。
  3. Producer:生产者负责生产消息,并将消息发送给Broker。
  4. Consumer:消费者负责订阅消息并进行消费。
  5. 消息存储:RocketMQ采用了写入内存,异步刷盘的方式来存储消息,同时还支持消息持久化到磁盘中。

关于RocketMQ架构原理,更加详细的内容请查看:RocketMQ架构原理详解(4大工作原理设计图解)

 

 5.Pulsar

消息中间件有哪些?5大主流消息中间件-mikechen

Pulsar是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台。

Pulsar被看作是云原生时代实时消息流传输、存储和计算最佳解决方案。

其整体架构图如下所示:

消息中间件有哪些?5大主流消息中间件-mikechen

以下是Pulsar架构的基本原理:

  1. 分层架构:Pulsar采用分层架构,其中Broker层和BookKeeper层分别处理消息传递和消息存储的任务。
  2. 多租户支持:Pulsar支持多租户架构,这意味着多个用户可以共享同一个Pulsar集群,并独立地控制其访问权限。
  3. 持久性和可靠性:Pulsar使用BookKeeper来存储消息,这是一种高度可靠的分布式日志存储系统。
  4. 可扩展性:Pulsar可以轻松地水平扩展,以处理高并发和高吞吐量的消息流。
  5. 支持多种协议:Pulsar支持多种协议,这使得Pulsar可以轻松地与不同的应用程序集成。

Pulsar的主要设计目标是提供高可用性、可扩展性和可维护性,同时保持高吞吐量和低延迟。

以上就是常见的消息中间件介绍,更多内容请查看:消息中间件最全详解(万字图文总结)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法