Apache RocketMQ是一款具有低延迟、高性能和高可用,数十亿容量和灵活可扩展的分布式消息传递和流媒体平台。
由4个部分组成,他们中的每一个都可以在没有单点故障的情况下进行水平扩展:name servers,borkers,producers,cousumers。
NameServer Cluster
NameServer是一个功能齐全的服务器,主要包含两个功能: 代理管理,NameServer接受来自代理群集的注册,并提供心跳机制来检查代理是否存活。 路由管理,每个NameServer将保存有关代理群集的全部路由信息以及用于客户端查询的队列信息。
Name Server是一个几乎无状态的结点,Name Server之间采取share-nothing的设计,互不通信。
对于一个Name Server集群列表,客户端连接Name Server的时候,只会选择随机连接一个结点,以做到负载均衡。
Name Server所有状态都从Broker上报而来,本身不存储任何状态,所有数据均在内存。
如果中途所有Name Server全都挂了,影响到路由信息的更新,不会影响和Broker的通信。
Broker Cluster
Broker是处理消息存储,转发等处理的服务器。
Broker以group分开,每个group只允许一个master,若干个slave。只有master才能进行写入操作,slave不允许。slave从master中同步数据。同步策略取决于master的配置,可以采用同步双写,异步复制两种。客户端消费可以从master和slave消费。在默认情况下,消费者都从master消费,在master挂后,客户端由于从Name Server中感知到Broker挂机,就会从slave消费。Broker向所有的NameServer结点建立长连接,注册Topic信息。Producer Cluster
生产者支持分布式部署。
分布式生产者通过多种负载均衡模式向Broker集群发送消息。
发送过程支持快速故障并具有低延迟。
Consumer Cluster
消费者也支持Push和Pull模型中的分布式部署。
它还支持集群消费和消息广播。它提供了实时的消息订阅机制,可以满足大多数消费者的需求。
