NSQ的介绍和集群部署

该文对 NSQ 进行粗略的介绍和部署,旨在入门认识NSQ和个人记录学习;

NSQ说明

NSQ 是实时的分布式消息处理平台, 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。

相关组件

个人理解NSQ相比其他消息队列更为简单,相关名词也较少,其核心组件就三个:

以下是几个相关组件说明:

  • nsqd : 是消息队列的基础,负责接收,排队,投递消息给客户端。仅部署一个该节点,就可以使用NSQ了,消息的生产者和消费者,均可连接nsqd(后面会再说明)
  • nsqlookupd: 客户端(消费者)通过查询 nsqlookupd 来发现指定topic的生产者,简单的说消费者连接该组,可以理解为 nsqd 注册/发现 服务
  • nsqadmin: 是消息的管理界面,用于收集汇总的实时统计。

nsqd 是基础,是实际上收发Msg的服务,单跑就能用;nsqlookupd是nsq集群的核心,用于nsqd的节点发现;nsqadmin是可视化管理界面

搭建nsq

nsq的关键词之一就是简单,部署集群也是相当的简单,下面说明在docker环境下,如何快速搭建nsq集群:

  1. docker pull nsqio/nsq #拉取nsq镜像
  2. 启动nsqlookupd -- 可部署多个 一般为了可用性,部署 2个即可

docker run -d --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq:latest /nsqlookupd

3.启动nsqadmin

docker run -d --name nsqadmin -p 4171:4171 nsqio/nsq /nsqadmin --lookupd-http-address=[刚刚的nsqlookupd地址+端口]

4.启动nsqd -- 可根据实际情况部署多个

docker run -d --name nsqd -p 4150:4150 -p 4151:4151 nsqio/nsq:latest /nsqd --broadcast-address=[广播自身的地址,nsqlookupd能请求到的就行,如都部署在本机.即127.0.0.1] --lookupd-tcp-address=[刚刚的nsqlookupd地址+端口]

在浏览器中输入nsqadmin的地址,即可看到:

admin页面

点击Streams 可查看topic列表,点击一个,就是常用的界面了:


topic信息管理

官网的消息发布流程图

消息是从主题->频道多播的

通过Topic和Channel的组合,可以运用于各种场景的数据发布和接收情况;

如服务A B 都为集群服务,均拥有三个节点 均需要订阅名为test的Topic,
A服务需要每个节点,都收到msg,而B服务只需要三个节点的一个收到信息.

此时对A订阅时的channel命名为 A1,A2,A3(或随机值) ,对B服务的订阅时的channel命名均为B.即可实现.

只要channel名不同,就都会收到订阅Topic下的数据,多个channel相同的订阅者,订阅同一Topic,只有随机一个收到(且有一定的负载均衡)

推荐文档.里面有详细的启动参数说明,和各个组件的说明:

  • NSQ官方文档:(推荐 基于最新版本v1.2.0)
    https://nsq.io/overview/design.html
  • 极客网对官方文档的中文翻译:(较老,文档说明基于v0.3.5,但很多基础还是相通的)
    http://wiki.jikexueyuan.com/project/nsq-guide/

你可能感兴趣的:(NSQ的介绍和集群部署)