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的消息生成索引,提供快速的消息查询。