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 的消息将会随机发送到订阅该channelconsumer

NSQ 主要组件

  • nsqd

    nsqdNSQ 最核心的部分,负责接收、排队、投递消息给客户端,支持HTTP APITCP client,每个nsqd 节点启动时会同时监听一个TCP 端口和一个HTTP端口来接受和处理请求,nsqd节点会向nsqlookupd 进行注册,告知其信息(包括地址、其上所保存的topicchannel )。每个nsqd节点都独立运行,不进行通讯共享状态。

  • nsqlookupd

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

go高薪必备:面试框架17讲 文章被收录于专栏

<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>

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务