今天主要讲的是 NSQD 中 Lookupd, NSQD通过Lookupd实现分布式集群。从前几篇的源码分析中可知 NSQD 与 Lookupd 的协作方式有以下几点:
1.NSQD启动时,会通过 TCP 上报它自己的身份信息给所有的Lookupd服务。
2.在 NSQD 创建新的Topic的时候,回去拉取 Lookupd 服务中,有关这个 Topic 的信息并初始化当前 Topic。
3.当 NSQD 有 Topic 或者 Channel 变动时(删除,新增等),上报 Lookupd 集群。
4.保持 NSQD 与 Lookupd 集群的心跳。
Lookupd 的主要作用在于管理 NSQD 集群服务中所有的 NSQD 的信息及相关 Topic 和 Channel。同时定时检查 NSQD 的在线情况。并提供 http 服务,以便查找 NSQD 集群的相关信息(topic, channel,消息总数等等)。
主要代码文件:
1.nsqlookupd/option.go lookupd配置信息
type Options struct {
LogLevel lg.LogLevel `flag:"log-level"` //日志等级
LogPrefix string `flag:"log-prefix"` //日志前缀
Logger Logger //日志生成接口
TCPAddress string `flag:"tcp-address"` //lookupd tcp 地址
HTTPAddress string `flag:"http-address"` //lookupd http 地址
BroadcastAddress string `flag:"broadcast-address"` //lookupd 广播地址
//nsqd 不活跃的时间
//lookupd 根据nsqd心跳来更新