最近实习需用到了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还有太多的未知,需要今后继续了解。
标签:http,producer,tcp,理解,address,NSQ,port From: https://www.cnblogs.com/xkge/p/17995764