NSQ 源码分析之NSQD--lookup

本文深入探讨NSQD的lookup功能,重点在于lookup如何向Lookupd报告NSQD实例的状态,包括心跳检测和Topic、Channel的动态变化。lookup主要涉及`nsqd/lookup_peer.go`和`nsqd/lookup.go`两个文件,实现连接、心跳及状态上报等关键操作。
摘要由CSDN通过智能技术生成

今天主要讲的是 NSQD 中 lookup, 其主要作用是告知 Lookupd,当前 NSQD 实例的情况,包括心跳检测,Topic 和 Channel 的变化。

主要代码文件:

1.nsqd/lookup_peer.go  主要定义了一些集群的消息的结构体和相关的实例化

type lookupPeer struct {
	logf            lg.AppLogFunc //日志输出函数
	addr            string //Lookupd 地址
	conn            net.Conn
	state           int32 //状态
	connectCallback func(*lookupPeer) //连接回调
	maxBodySize     int64 //最大消息长度
	Info            peerInfo //集群伙伴元数据
}

//lookupd的信息
type peerInfo struct {
	TCPPort          int    `json:"tcp_port"` 
	HTTPPort         int    `json:"http_port"`
	Version          string `json:"version"`
	BroadcastAddress string `json:"broadcast_address"`
}

Command 函数 用于发布请求到Lookupd

func (lp *lookupPeer) Command(cmd *nsq.Command) ([]byte, error) {
	initialState := lp.state
	if lp.state != stateConnected { //如果没有连接Lookupd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值