![](https://img-blog.csdnimg.cn/20190315134155177.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
NSQ源码学习
文章平均质量分 94
NSQ源码学习
思维的深度
这个作者很懒,什么都没留下…
展开
-
nsqd中的消息流程
用一张图来看nsqd中的消息流程(可以点击放大查看)原创 2019-03-15 14:38:55 · 664 阅读 · 0 评论 -
NSQ源码分析(一)——nsqd的初始化及启动流程
nsq源码地址:https://github.com/nsqio/nsq版本1.1.0NSQ源码分析系列是我通过阅读nsq的源码及结合网上的相关文章整理而成,由于在网上没有找到很详细和完整的文章,故自己亲自整理了一份。如果有错误的地方,还请指正,希望这系列的文章给您带来帮助。NSQD启动流程 nsqd的启动流程在nsq/apps/nsqd/nsqd.go中的Start(...原创 2018-10-24 19:05:09 · 1153 阅读 · 0 评论 -
NSQ源码分析(二)—— Topic
Topic是NSQ非常重要的概念,本次主要讲述Topic的获取、新建、Topic中消息的轮询、Topic中消息的来源、Topic的删除和退出以及Topic的暂停和取消暂停topic的相关操作主要在nsq/nsqd/topic.go中首先看下Topic结构体type Topic struct { // 64bit atomic vars need to be first for pr...原创 2018-10-25 18:22:16 · 2028 阅读 · 2 评论 -
NSQ源码分析(三)——disQueue
disQueue是Topic以及Channel中的内存消息满了以后,消息存放的实现方法,diskQueue实现了文件系统支持的FIFO队列,disQueue也是BackendQueue接口的实现,diskQueue在文件读写给我们提供了很好的学习示例。BackendQueue接口// BackendQueue represents the behavior for the seconda...原创 2018-10-25 19:35:05 · 635 阅读 · 0 评论 -
NSQ源码分析(四)——inFlightPqueue和PriorityQueue优先级队列
在Channel结构体中用到了两种优先级队列pqueue.PriorityQueue和inFlightPqueue。deferredMessages map[MessageID]*pqueue.ItemdeferredPQ pqueue.PriorityQueuedeferredMutex sync.MutexinFlightMessages map[Mess...原创 2018-10-26 15:57:35 · 1315 阅读 · 0 评论 -
NSQ源码分析(五)——Channel
Channel相关的代码主要位于nsqd/channel.go, nsqd/nsqd.go中。Channel是消费者订阅特定Topic的一种抽象。对于发往Topic的消息,nsqd向该Topic下的所有Channel投递消息,而同一个Channel只投递一次,Channel下如果存在多个消费者,则随机选择一个消费者做投递。这种投递方式可以被用作消费者负载均衡。Channel会将消息进行排列,...原创 2018-10-26 19:30:59 · 3977 阅读 · 1 评论