RocketMQ 的架构

Posted by icoding168 on 2020-04-13 22:33:29

分类: Java  

RocketMQ 是一个分布式的消息和流处理平台,具有低延迟、高性能、高可用、亿万级容量、灵活扩展等特点。它主要有四个部分组成:name servers(名称服务器)、brokers(代理服务器)、producers(生产者)、consumers(消费者),每一个部分都可以通过横向扩展来避免单点故障。

集群架构图

名称服务器集群

名称服务器提供了轻量级的服务发现和路由,具体功能有:

  • 代理管理:接受来自代理服务器集群的服务注册,并提供心跳机制以检查代理是否还存在。
  • 路由管理:每个名称服务器都会保存有关代理集群的完整路由信息以及客户端查询的队列信息。

代理集群

代理服务器通过轻量级的主题(Topic)和队列(Queue)机制来处理消息的存储。代理服务器支持推拉模型,容错机制(2个副本或3个副本),具有强大的高峰期处理能力以及按原始时间顺序存储数千亿条消息的能力。此外,代理服务器还提供灾难恢复、丰富的指标统计信息、报警机制等功能,这些都是传统消息系统所缺少的。

代理服务器有以下几个重要的子模块:

  • 远程处理模块,也就是代理服务器的入口,负责处理来自客户端的请求。
  • 客户端管理模块,管理客户端(生产者/消费者)并维护消费者的主题订阅。
  • 存储服务模块,提供简单的接口在物理磁盘中存储或查询消息。
  • 高可用服务模块,在主代理和从代理之间提供数据同步功能。
  • 索引服务模块,通过指定的键为消息建立索引,并提供快速的消息查询功能。

生产者集群

生产者支持分布式部署,并且可以通过多种负载均衡模式将消息发送到代理服务器集群,发送过程支持快速失败机制并且延迟低。

消费者集群

消费者也支持推拉模型和分布式部署,支持集群和消息广播,而且它还提供了实时消息订阅机制。