NSQ 主要概念及架构设计
NSQ 主要概念及架构设计
NSQ 中有一些重要的组件/概念,概念有producer、consumer、topic、channel,重要的组件有nsqd、nsqlookupd、nsqadmin,这些概念和组件是NSQ的重要部分,理解了这些组件的作用才能够理解NSQ的架构设计。
NSQ 主要概念
topic
topic是消息发布的逻辑关键词,无论是消息的发布和消费都需要和一个topic关联,当生产者往一个topic发布消息时如果当前topic不存在则会自动创建该topic。channel
这个
channel的实现其实就是Go里面的channel,一个topic下可以有多个channel,当一个消息发送到该topic时,所有该topic下的channel都会得到该消息 ,供消费者订阅消费。producer
producer是消息的生产者、发布者,producer可以通过HTTP API或者TCP client两种方式来将消息发送到nsqd的某个topic里面,当发送的topic不存在时会在该nsqd里面创建该topic。consumer
consumer是消息的消费者,consumer通过TCP订阅自己要消费的某个topic下的某个channel,则之后发布到该channel的消息都会被该consumer消费。如果有多个consumer订阅同一个topic的同一个channel则该channel的消息将会随机发送到订阅该channel的consumer。
NSQ 主要组件
nsqd
nsqd是NSQ最核心的部分,负责接收、排队、投递消息给客户端,支持HTTP API和TCP client,每个nsqd节点启动时会同时监听一个TCP端口和一个HTTP端口来接受和处理请求,nsqd节点会向nsqlookupd进行注册,告知其信息(包括地址、其上所保存的topic和channel)。每个nsqd节点都独立运行,不进行通讯共享状态。nsqlookupd
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> <span style="font-size:14px;">本专刊是Go开源项目源码分析专栏,共 17 篇文章,挑选了Go 开源界知名的 4 个开源项目gnet(高效的网络库)、gin(知名的Go微型web框架)、fasthttp(高性能web框架)、nsq(Go消息队列)来对它们进行源码分析,分析它们的设计思想和代码实现。每个项目的讲解都是由浅入深,由设计思想的剖析到源码实现的分析,更易于读者理解。</span> </p> <p> <br /> </p> <h2> <b><span style="font-size:16px;line-height:1;">购买须知:</span></b> </h2> <span style="font-size:14px;">订阅成功后,用户即可通过牛客网 PC 端、App 端享有永久阅读的权限;</span><br /> <span style="font-size:14px;">牛客专刊为虚拟内容服务,订阅成功后概不退款;</span><br /> <span style="font-size:14px;line-height:1;">在专刊阅</span><span style="font-size:14px;line-height:1;">读过程中,如有任何问题,可在文章评论区底部留言,或添加牛客导师,加入读者交流群;</span><br /> <span style="font-size:14px;">想成为牛客作者,请邮件联系yinxiaoxiao@nowcoder.com,邮件主题【牛客作者+写作方向】,并附上个人简历一份及近期作品一份;</span><br /> <p> <span style="font-size:14px;">牛客专刊版权归本平台所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布 / 发表,违者将依法追究责任</span><span style="font-size:14px;">。</span> </p> <p> <br /> </p>