nsq
NSQ 是一个实时分布式消息传递平台,旨在大规模运行,每天处理数十亿条消息。
它促进了无单点故障的分布式和分散式拓扑,实现了容错和高可用性以及可靠的消息传递保证。 查看功能和保证。
在操作上,NSQ 易于配置和部署(所有参数都在命令行中指定,编译后的二进制文件没有运行时依赖项)。
为了获得最大的灵活性,它与数据格式无关(消息可以是 JSON、MsgPack、Protocol Buffers 或其他任何形式)。
官方 Go 和 Python 库是开箱即用的(以及许多其他客户端库),如果您有兴趣构建自己的库,可以使用协议规范。
我们发布了 linux、darwin、freebsd 和 windows 的二进制版本以及官方的 Docker 镜像。
注意:master 是我们的开发分支,可能不是一直稳定的。
特性
分散式
NSQ 提倡无单点故障的分布式和分散式拓扑,实现容错和高可用性以及可靠的消息传递保证。
查看功能和保证。
可扩展
NSQ 横向扩展,无需任何中心化代理。
内置发现简化了向集群添加节点的过程。
支持 pub-sub 和负载平衡的消息传递。
它也很快。
操作友好
NSQ 易于配置和部署,并与管理 UI 捆绑在一起。
二进制文件没有运行时依赖项,我们为 linux、darwin、freebsd 和 windows 以及官方 Docker 映像提供预编译版本。
融合的
官方 Go 和 Python 库以及大多数主要语言的许多社区支持库都可用(请参阅客户端库)。
如果您有兴趣构建自己的协议,这里有一个协议规范。
快速开始
安装
基于源码编译:
$ git clone https://github.com/nsqio/nsq
$ cd nsq
$ make
Testing
$ ./test.sh
ps: 每次安装都会发现 windows 对于同一的包管理做的很弱。
启动
以下步骤将在您的本地机器上运行一个小型 NSQ 集群,并完成将消息发布、使用和归档到磁盘的过程。
1) 按照安装文档中的说明进行操作。
2) 在一个 shell 中,启动 nsqlookupd:
$ nsqlookupd
3) 在另一个 shell 中,启动 nsqd:
$ nsqd --lookupd-tcp-address=127.0.0.1:4160
4) 在另一个 shell 中,启动 nsqadmin:
$ nsqadmin --lookupd-http-address=127.0.0.1:4161
5) 发布初始消息(也在集群中创建主题):
$ curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test'
6) 最后,在另一个 shell 中,启动 nsq_to_file:
$ nsq_to_file --topic=test --output-dir=/tmp --lookupd-http-address=127.0.0.1:4161
7) 向 nsqd 发布更多消息:
$ curl -d 'hello world 2' 'http://127.0.0.1:4151/pub?topic=test'
$ curl -d 'hello world 3' 'http://127.0.0.1:4151/pub?topic=test'
8) 要验证事情是否按预期工作,请在 Web 浏览器中打开 http://127.0.0.1:4171/ 以查看 nsqadmin UI 并查看统计信息。 此外,请检查写入 /tmp 的日志文件 (test.*.log) 的内容。
这里的重要教训是 nsq_to_file(客户端)没有被明确告知测试主题的生成位置,它从 nsqlookupd 中检索此信息,并且尽管连接的时间不同,也不会丢失任何消息。
参考资料
https://github.com/nsqio/nsq
https://nsq.io/