rocketmq

NameServer

Nameserver主要有两项功能:

broker管理,nameserver接受broker集群的注册,并提供心跳机制来检验broker是否存活。

路由管理,每个nameserver会持有broker集群的所有路由信息和客户端查询的队列信息。

client会从nameserver中查询队列的路由信息,那么client是怎么找到nameserver的地址呢?有四种方式:

    1、编程方法,producer.setNamesrvAddr("ip:port")

      2.Java选项,rocketmq.namesrv.addr

      3.环境变量,用NAMESRV_ADDR

      4.Endpoint

Broker server

负责消息存储和发送,消息查询,HA(高可靠性)保证等。如下图所示,Broker server用以下几个重要的子模块:

远程模块,broker的入口,处理client请求。

客户端管理,管理clients(Producer/Consumer),保持consumer的主题订阅信息。

存储服务,提供简单的api来存储或查询消息,在物理磁盘上。

HA服务,在提供broker之前的主从同步。

索引服务,对特定key的消息生成索引,提供快速的消息查询。

rocketmq