NSQ快速入门实践

NSQ中文文档:https://wiki.jikexueyuan.com/project/nsq-guide/

一、简介
NSQ是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。
NSQ具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠性传递的特征。
NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。
NSQ由3个组件构成:nsqlookupd、nsqd、和nsqadmin。

二、快速开始
1. 安装
无需安装,下载解压即可使用:https://wiki.jikexueyuan.com/project/nsq-guide/installing.html
nsqlookupd、nsqadmin和nsqd都在解压目录的bin子目录,进入该子目录。
2. 启动nsqlookupd

nsqlookupd是守护进程,负责管理拓扑信息,提供目录服务。nsqd节点通过nsqlookupd广播话题和通道信息,客户端通过查询nsqlookupd来发现指定话题的生产者nsqd节点,由此nsqlookupd将消费者与生产者解耦开。
nsqlookupd当前的实现是简单地返回所有地址。
开放两个端口,TCP接口使用4160端口,nsqd用它来广播,HTTP接口使用4161端口,客户端使用它来执行发现和管理操作。

3. 启动nsqd

nsqd是一个守护进程,负责接收、排队、投递消息给客户端。
它可以独立运行,不过通常它是由nsqlookupd实例所在集群配置的,并使用nsqlookupd的4160端口进行话题与通道的广播。
每个nsqd有一个与nsqlookupd的长期TCP连接,定期推动其状态(sending heartbeat)。这个数据被nsqlookupd用于给消费者通知nsqd地址。对于消费者来说,一个暴露的HTTP /lookup接口用于轮询。
nsqd会发送心跳包给客户端,连续两个没有应答则超时关闭连接。
有两个接口,TCP接口使用4150端口,给客户端使用,HTTP接口使用4151端口,是HTTP API。同时,它也能在第三个端口监听HTTPS。

4. 启动nsqadmin

nsqadmin是一套WEB UI,用来汇集集群的实时统计,并执行不同的管理任务。
它使用nsqlookupd的4161端口来发现nsqd的所有话题与通道,可通过4171端口访问其可视化界面。
可视化界面:

至此,nsqd的三个组件,nsqlookupd、nsqd和nsqadmin都已启动完毕,可以开始使用了。

5. 使用curl命令向nsqd推送消息

6. 使用nsq_to_file客户端将指定话题的消息写入文件中

nsq_to_file客户端首次执行时会在指定话题开启一个名为“nsq_to_file”的通道,用于接收当前话题的所有消息,然后从该通道中获取消息数据,写入文件中。
7. 使用nsq_to_nsq客户端将指定通道的消息发送给另一个话题

注意:这里nsq_to_nsq客户端指定从“nsq_to_file”通道获取消息,nsq_to_file客户端也会从该通道获取消息,最终“nsq_to_file”通道的消息会被这两个客户端随机消费,每个客户端都只能得到这个通道上的部分消息。

原文地址:https://www.cnblogs.com/wujuntian/p/12830817.html