NSQ视图
2020-05-13 15:05:07 3 举报
NSQ视图
作者其他创作
大纲/内容
ping
interval/tpc_server.go
连接每个节点,并进行消费(协程)
TCP服务监听
SUB(订阅)
SAM-03 制作(20200307)
处理连接请求
lookup上报NSQD服务变化
客户端
http/https 服务监听
REGISTER
channel
consumer
注销Topic 与 channel
Main
accept
发送消息返回客户端
Consumer
NSQD
channel.RequeueMessage
http_api
1
TCPServer
定时将clientV2中缓冲发送至客户端
channel.PutMessage
tcpServer(tcp.go)
...
options.go->NewOption
UnRegister/Register Topic
clientV2
心跳
goroutine
DPUB(发布延时消息)
队列扫描
直接写入内存channel 等待消费
HTTPServer
IOLoop(conn)
Consume
info
FIN(消费确认)
定时心跳检查、NSQD->Lookupds
conn
ticker.ping
close
LOOP
IDENTIFY
无延时重入队列
ConnectToNSQLookupds
messagePump
notifyChan
PING
nsqd.GetTopic
Write
lookup
Read
NSQD队列扫描
nsqd.go
Lookupd 实例化流程
topic.GetChannel
topics
执行client请求
channel.PutMessageDeferred()
interval/http_api.go
循环接收client的请求
select
磁盘中的消息
backendMsgChan
protocol_v2
NSQD 向Lookupd注册(client)
channels?topic=%s获取所有topic的channel
topic.messagePump
消息延时队列
connectCallback
集群下消费者行为
lookupLoop
ConnectToNSQD(addr)
Topic/Channel 变化上报
Send
Identify client
put 到指定channel
heartbeart
PUB(发布)
defferred
节点TOPIC 同步
上报lookupd
http.go
不符合版本协议
tpc.go(tcpServer->Handle)
resizePool
TOPIC
内存中的消息
New
memoryMsgChan
心跳检测
put(消息写入队列)
符合版本协议
DeferredPQ
lookupdLoop
processDeferredQueue
2
GetLookupdTopicChannels
flusherChan
EXCE
queueScanLoop
延时实现
消费但未获得消费者ACK的队列
NSQD.GetTopic
UNREGISTER
NSQD启动时,上报NSQD的信息
注册Topic 与 channel
LookupProtocolV1
消费者消费channel中的消息
processInFlightQueue
msg
httpServe(httpsServer)
EXEC
MPUB(多消息)
Handle
调整工作线程的数量,让数量保持在一定数量
RDY
queryLookupd
queueScanWorker
REQ(消费延时)
消费
Channel
internal/clusterinfo
收藏
收藏
0 条评论
下一页