nsq源码解析
文章平均质量分 85
hurray123
这个作者很懒,什么都没留下…
展开
-
nsq源码阅读笔记之nsqd(一)——nsqd的配置解析和初始化
nsqd的配置解析和初始化 配置解析nsqd的主函数位于apps/nsqd.go中的main函数flagSet := nsqFlagset() flagSet.Parse(os.Args[1:])首先main函数调用nsqFlagset和Parse进行命令行参数集初始化原创 2015-11-25 16:03:39 · 5383 阅读 · 0 评论 -
nsq源码阅读笔记之nsqd(四)——Channel
Topic/Channel是发布/订阅模型的一种实现。Topic对应于发布,Channel对应于订阅。 消费者通过在Topic下生成不同的Channel来接收来自该Topic的消息。 通过生成相同的Channel来实现消费者负载均衡。 Channel本身在投递消息给消费者时维护两个队列,一个是inFlight队列,该队列存储正在投递,但还没被标记为投递成功的消息。 另一个是deferred队列,用来存储需要被延时投原创 2016-02-29 14:14:46 · 8616 阅读 · 6 评论 -
nsq源码阅读笔记之nsqd(三)——diskQueue
diskQueue是backendQueue接口的一个实现。backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象。 除了diskQueue外还有dummyBackendQueue实现了backendQueue接口。 对于临时(#ephemeral结尾)Topic/Channel,在创建时会使用dummyBackendQueue初始化backend原创 2015-12-09 20:33:56 · 2501 阅读 · 8 评论 -
nsq源码阅读笔记之nsqd(二)——Topic
GetTopic函数用于获取topic对象,首先先尝试从topicMap表中获取,如果指定的topic存在,则直接返回topic对象。 当topic不存在时需要新建一个topic,加入到topicMap中, 如果启用了nsqlookupd则需要从lookupd中获取该topic的所有channel,在去除#ephemeral结尾的临时channel后加入到topic中。 其中锁的使用值得学习:原创 2015-11-26 13:20:26 · 3700 阅读 · 2 评论