NSQ理解
最近实习需用到了NSQ消息队列,这里贴一点简单的介绍和学习资料,方便日后查阅。
目录
- 简介
NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。
NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。
NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。
- 学习资料
这里贴一个大佬的讲解,非常浅显易懂:MQ(1)—— 从队列到消息中间件
需要注意的是,nsqlookup中返回如下格式的数据:
{ "channels": [ "xxx" ], "producers": [ { "remote_address": "127.0.0.1:52796", "hostname": "hongzeyangdeMacBook-Pro", "broadcast_address": "127.0.0.1", "tcp_port": 4150, "http_port": 4151, "version": "1.0.0-compat" } ] }
但其实producers和consumers如何建立连接我还是不明白。我有如下问题,需要今后解决:
- 这里的tcp_port和http_port是producers的吗?如果是的话我理解producer是发送信息给nsqd进程,consumer应该监听nsqd进程,这里给producer的tcp_port和http_port有什么用?
- remote_address和broadcast_address有什么区别?
总的来说就是我不清楚message是如何从producer传递到consumer的。或许需要看一下源码:JavaNSQClient
关于NSQ还有太多的未知,需要今后继续了解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端