nsqlookupd

NSQ系列之nsqlookupd代码分析四(详解nsqlookupd中的RegitrationDB)

本小妞迷上赌 提交于 2019-12-01 09:50:34
NSQ系列之nsqlookupd代码分析四(详解nsqlookupd中的RegitrationDB操作方法) 上一章我们大致了解了 nsqlookupd 的 tcpServer 中的 IOLoop 协议的处理逻辑,里面有提到一个存储 nsqd 的 PeerInfo 以及 topic channel 数据信息的 RegitrationDB 的一些操作方法。今天我们就来讲解一下关于 RegitrationDB 的操作方法 废话不多说,直接上代码吧(代码位于nsq/nsqlookupd/regitration_db.go这个文件中) type RegistrationDB struct { sync.RWMutex //读写锁用于并发操作 registrationMap map[Registration]Producers //定义一个一Regitration为key producer指针的slice为value的map } type Registration struct { Category string Key string SubKey string } type Registrations []Registration //用于记录client相关信息 type PeerInfo struct { lastUpdate int64 //client 心跳包最后接收时间 id

NSQ系列之nsqlookupd代码分析三(详解tcpServer 中的IOLoop方法)

女生的网名这么多〃 提交于 2019-12-01 09:50:07
NSQ系列之nsqlookupd代码分析三(详解nsqlookupd tcpServer 中的IOLoop) 上一章我们大致了解了 nsqlookupd 中的 tcpServer 的大致的代码, tcpServer 与client也就 nsqd 之间协议处理在 IOLoop 这个方法中,今天我们就分析一下 IOLoop 这个方法 废话不多说,直接上代码吧(代码位于nsq/nsqlookupd/lookup_protocol_v1.go这个文件中) //这段代码位于nsq/nsqlookupd/client_v1.go这个文件中 type ClientV1 struct { net.Conn //组合net.Conn接口 peerInfo *PeerInfo //client的信息也就是前面所讲的product的信息 } //初始化一个ClientV1 func NewClientV1(conn net.Conn) *ClientV1 { return &ClientV1{ Conn: conn, } } //实现String接口 func (c *ClientV1) String() string { return c.RemoteAddr().String() } //定义ClientV1结束 type LookupProtocolV1 struct { ctx *Context

NSQ系列之nsqlookupd代码分析二(初识nsqlookupd tcpServer)

百般思念 提交于 2019-12-01 09:49:51
NSQ系列之nsqlookupd代码分析二(初识nsqlookupd tcpServer) 在上一章 nsqlookupd 初探中了解到, nsqlookupd 中开启了一个 tcpServer 和一个 httpServer ,那么今天我们来初步了解下 tcpServer 。 废话不多说,直接上代码吧,简单粗暴点比较好。 type tcpServer struct { ctx *Context //上一章中提到的Contexto } func (p *tcpServer) Handle(clientConn net.Conn) { p.ctx.nsqlookupd.logf("TCP: new client(%s)", clientConn.RemoteAddr()) // The client should initialize itself by sending a 4 byte sequence indicating // the version of the protocol that it intends to communicate, this will allow us // to gracefully upgrade the protocol away from text/line oriented to whatever... //这里有注释了,但是我英文不好

NSQ系列之nsqlookupd代码分析一(初探nsqlookup)

梦想与她 提交于 2019-12-01 09:49:40
NSQ系列之nsqlookupd代码分析一(初探nsqlookup) nsqlookupd 是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话题( topic )的生产者,并且提供 nsqd 节点广播话题( topic )和通道( channel )信息。 nsqlookupd 有两个接口: TCP 接口, nsqd 用它来广播。 HTTP 接口,客户端用它来发现和管理。 本系列的代码分析均是基于nsq v0.3.5的代码进行的分析,如有不对之处欢迎大家指正指导。 nsqlookup struct分析 代码文件路径为 nsq/nsqlookupd/nsqlookupd.go type NSQLookupd struct { sync.RWMutex //读写锁 opts *Options //nsqlookupd 配置信息 定义文件路径为nsq/nsqlookupd/options.go tcpListener net.Listener httpListener net.Listener waitGroup util.WaitGroupWrapper //WaitGroup 典型应用 用于开启两个goroutine,一个监听HTTP 一个监听TCP DB *RegistrationDB //product 注册数据库 具体分析后面章节再讲 } /