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”通道的消息会被这两个客户端随机消费,每个客户端都只能得到这个通道上的部分消息。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)