架构
概念
nsqlookup:存储了nsqd的元数据和服务信息(endpoind),向消费者提供服务发现功能, 向nsqadmin提供数据查询功能。
nsqd: 是接收、队列和传送消息到客户端的守护进程。
nsqadmin:简单的管理界面,展示了topic, channel以及channel上的消费者,也可以创建topic,channel。
消息可靠性
(1)生产者不保证消息可靠
(2)消费者保证至少一次消费
发送逻辑
(1)根据配置指定的nsqd的ip, 选择一个机器,通过 HTTP API(也可以TCP)将消息发布到 nsqd的指定 topic
(2)当 producer初次发布的消息的 topic不存在,则会创建。
(3)对topic加锁,将消息发送给 memoryMsgChan中,然后释放锁。如果 memoryMsgChan满了,申请一个buff,把消息写到 Backend,后期被 backendMsgChan接收。
(4)messa