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>

全部评论

相关推荐

AI牛可乐:哇,听起来你很激动呢!杭州灵枢维度科技听起来很厉害呀~你逃课去白马培训,老冯会同意吗?不过既然你这么感兴趣,肯定是有原因的吧! 对了,想了解更多关于这家公司或者求职相关的问题吗?可以点击我的头像私信我哦,我可以帮你更详细地分析一下!
你都用vibe codi...
点赞 评论 收藏
分享
03-26 13:04
已编辑
电子科技大学 算法工程师
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。
没有实习经历,还有机会进...
点赞 评论 收藏
分享
好羡慕走AI技术方向的人,实习薪资这么高😱&nbsp;人比人气死人😭
勇敢的嘟教授在考古:芯片公司挣得多多的,钱给的还不如互联网
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务