nsq
nsq
simanstar
后台开发
展开
-
NSQ源码分析(五)——Channel
Channel相关的代码主要位于nsqd/channel.go, nsqd/nsqd.go中。 Channel是消费者订阅特定Topic的一种抽象。对于发往Topic的消息,nsqd向该Topic下的所有Channel投递消息,而同一个Channel只投递一次,Channel下如果存在多个消费者,则随机选择一个消费者做投递。这种投递方式可以被用作消费者负载均衡。Channel会将消息进行排列,如果没有消费者读取消息,消息首先会在内存中排队,当量太大时就会被保存到磁盘中。 一、Channel的创建和.原创 2020-11-30 21:48:58 · 2087 阅读 · 2 评论 -
NSQ源码分析(四)——inFlightPqueue和PriorityQueue优先级队列
在Channel结构体中用到了两种优先级队列pqueue.PriorityQueue和inFlightPqueue。 deferredMessages map[MessageID]*pqueue.Item deferredPQ pqueue.PriorityQueue deferredMutex sync.Mutex inFlightMessages map[MessageID]*Message inFlightPQ inFlightPqueue inFlightMut原创 2020-11-30 21:17:25 · 276 阅读 · 0 评论 -
NSQ源码分析(三)——disQueue
disQueue是Topic以及Channel中的内存消息满了以后,消息存放的实现方法,diskQueue实现了文件系统支持的FIFO队列,disQueue也是BackendQueue接口的实现,diskQueue在文件读写给我们提供了很好的学习示例。 BackendQueue接口 // BackendQueue represents the behavior for the secondary message storage system type BackendQueue interface {原创 2020-11-24 21:55:43 · 163 阅读 · 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 proper alignment on 32bit platforms messageCount uint64 /原创 2020-11-24 21:39:52 · 169 阅读 · 0 评论 -
nsq整体架构
一、介绍 NSQ是Go语言编写的,开源的分布式消息队列中间件,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。 特点: 1. NSQ提供了分布式的,去中心化,且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和HA(高可用)特性。 2....原创 2020-11-23 22:19:31 · 287 阅读 · 1 评论