面试题答案
一键面试1. Broker管理
- Broker注册:NameServer提供了Broker的注册接口,Broker启动时会向NameServer注册自身信息,包括Broker名称、IP地址、端口等。NameServer将这些信息存储在内存中,形成一个Broker列表。
- Broker心跳检测:Broker定时向NameServer发送心跳包,NameServer通过心跳机制来检测Broker的存活状态。如果NameServer在一定时间内没有收到某个Broker的心跳,就会判定该Broker失效,并从Broker列表中移除相关信息。
2. 路由信息维护
- Topic路由信息构建:NameServer负责维护Topic与Broker的路由关系。当Broker注册时,NameServer会根据Broker上配置的Topic信息,构建Topic的路由表。路由表中包含了Topic对应的各个Broker的信息,以及每个Broker上该Topic的Queue分布情况。
- 路由信息动态更新:当Broker发生变化(如新增、下线、Topic配置变更等)时,NameServer会及时更新路由信息。客户端(生产者和消费者)在请求NameServer获取路由信息时,能得到最新的Topic路由情况,从而保证消息的正常发送和消费。
3. 客户端请求处理
- 提供路由查询服务:生产者在发送消息前,需要先从NameServer获取Topic的路由信息,以确定将消息发送到哪些Broker上的Queue。NameServer接收生产者的路由查询请求,返回对应的Topic路由表。同样,消费者在订阅Topic时,也会向NameServer请求获取Topic的路由信息,以便知道从哪些Broker的Queue中拉取消息。
- 负载均衡支持:NameServer提供的路由信息有助于客户端实现负载均衡。生产者根据NameServer返回的路由信息,可以将消息均匀地发送到不同的Broker和Queue上。消费者也可以基于路由信息,在多个Broker之间进行负载均衡,合理分配消费任务。