剖析nsq消息队列(一) 简介及去中心化实现原理
分布式消息队列 nsq ,简单易用,去中心化的设计使 nsq 更健壮, nsq 充分利用了 go 语言的 goroutine 和 channel 来实现的消息处理,代码量也不大,读不了多久就没了。后期的文章我会把 nsq 的源码分析给大家看。 主要的分析路线如下 分析 nsq 的整体框架结构,分析如何做到的无中心化分布式拓扑结构,如何处理的单点故障。 分析 nsq 是如何保证消息的可靠性,如何保证消息的处理,对于消息的持久化是如何处理和扩展的。 分析 nsq 是如何做的消息的负载处理,即如何把合理的、不超过客户端消费能力的情况下,把消息分发到不同的客户端。 分析 nsq 提供的一些辅助组件。 这篇帖子,介绍 nsq 的主体结构,以及他是如何做到去中心化的分布式拓扑结构,如何处理的单点故障。 几个组件是需要先大概说一下 nsqd 消息队列的主体,对消息的接收,处理和把消息分发到客户端。 nsqlookupd nsq 拓扑结构信息的管理者,有了他才能组成一个简单易用的无中心化的分布式拓扑网络结构。 go-nsq nsq 官方的go语言客户端,基本上市面上的主流编程语言都有相应的客户端 在这里 还有可视化的组件 nsqadmin 和一些工具像 nsq_to_file 、 nsq_stat 、等等,这些在后期的帖子里会介绍 使用方式 直连方式 nsqd 是独立运行的