NSQ源码阅读
文章平均质量分 82
NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub.NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。
aslackers
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
nsq源码阅读 nsqd源码四 nsqd/lookup.go 与nsqlookupd服务的交互
NSQD对象的Main()方法中有一段代码:n.waitGroup.Wrap(func() { n.lookupLoop() })启动一个goroutine,处理与nsqlookupd进程的交互。封装在nsqd/lookup.go中。这个goroutine的主要功能有:1、连接nsqlookupd服务,执行IDENTIFY操作;2、将nsqd的Metadata中的topic、channel注册到n...原创 2018-02-08 17:08:38 · 768 阅读 · 0 评论 -
nsq源码阅读 nsqd源码三 tcp.go
NSQ的TCP逻辑都是这样的,调用internal/protocol/tcp_server.go中的TCPServer: func TCPServer(listener net.Listener, handler TCPHandler, l app.Logger) 接受客户端连接,在这里客户端为consumer,调用TCPHandler.Handle处理业务逻辑,TCPHandler.Ha原创 2017-11-21 18:28:09 · 818 阅读 · 0 评论 -
nsq源码阅读 nsqd源码二 nsqd/nsqd.go
查看nsqd模块的入口文件apps/nsqd/nsqd.go可知,nsqd模块从开始到结束经历了5步: 1、初始化nsqd实例nsqd.New(); 2、读取元数据nsqd.LoadMetadata(); 3、保存元数据nsqd.PersistMetadata(); 4、主方法nsqd.Main(); 5、程序终止nsqd.Exit() 初始化 初始化时设置了--data-p原创 2017-06-01 17:14:20 · 676 阅读 · 0 评论 -
nsq源码阅读 nsqd源码一 apps/nsqd/nsqd.go
之前已经将NSQ的nsqlookupd模块源码大致的看了一遍了,现在开始阅读nsqd模块的源码。作为NSQ的核心模块,代码量也相对多点。废话不多说,开始读代码。 首先从mai()方法开始: func main() { prg := &program{} if err := svc.Run(prg, syscall.SIGINT, syscall.SIGTERM); err != nil {原创 2017-05-24 18:19:53 · 1646 阅读 · 0 评论 -
nsq源码阅读 nsqlookupd源码五 http.go http_server.go
再来看看关于HTTP的处理逻辑: httpServer := newHTTPServer(ctx) 新建HTTP实例,跟踪代码,nsqlookupd/http.go: package nsqlookupd import ( "fmt" "net/http" "net/http/pprof" "sync/atomic" "github.com/julienschmidt/原创 2017-05-16 14:41:35 · 925 阅读 · 0 评论 -
nsq源码阅读 nsqlookupd源码四 lookup_protocol_v1.go
阅读nsqlookupd/tcp.go源码时,有一段代码: err = prot.IOLoop(clientConn) 对TCP数据处理的核心逻辑,对应的代码就是nsqlookupd/lookup_protocol_v1.go,现在来阅读这里的代码: package nsqlookupd import ( "bufio" "encoding/binary" "encoding原创 2017-05-03 17:36:58 · 906 阅读 · 0 评论 -
nsq源码阅读 nsqlookupd源码三 tcp.go tcp_server.go
nsqlookupd.go中对TCP的处理代码为 protocol.TCPServer(tcpListener, tcpServer, l.opts.Logger) 用户监听处理nsqd发送的信息 TCPServer在internal/protocol/tcp_server.go中定义: package protocol import ( "fmt" "net" "runt原创 2017-05-02 16:26:03 · 531 阅读 · 0 评论 -
nsq源码阅读 nsqlookupd源码二 registration_db.go
RegistrationDB,字面意思:注册数据库,保存nsqd的注册信息,这里提供一系列增、删、改、查的操作封装原创 2017-05-02 14:29:38 · 801 阅读 · 0 评论 -
nsq源码阅读 nsqlookupd源码一 nsqlookupd.go
查看nsq的几个模块,发现nsqlookupd模块的代码量最少,所以从它开始。从nsqlookupd/nsqlookupd.go文件开始: package nsqlookupd import ( "fmt" "log" "net" "os" "sync" "github.com/nsqio/nsq/internal/http_api" "github.com/nsqio/n原创 2017-03-23 10:17:50 · 781 阅读 · 0 评论
分享