系列说明
看到国内没有相关的翻译,都是些使用者的一些笔记之类的. 为了能够让更多的开发者使用nsq快速搭建消息队列服务,特有此系列. 此系列皆为翻译官网(http://nsq.io),个人水平有限,如有错误还望指出.
nsq是什么?
按照官网的说明,nsq是一个事实分布式消息队列服务.它具有以下优点:
- nsq天生支持分布式和去中心化,而不用担心单点故障,至此故障容忍和可靠消息投递的高可用特点.
- snq支持无缝的水平扩展. 其内置的服务发现机制大大简化了节点(nodes)和集群(cluster)的扩缩容. 支持pub-sub以及消息的负债均衡模式,当然,速度也很优异.
- 运维友好. nsq很容易配置和部署,并且内置了一套可视化的后台管理工具. 二进制安装包不存在任何运行时依赖,并且官方提供Linux,darwin,freebsd,windows平台下的二进制包,当然,官方docker镜像也是支持的.
- 集成容易. 官方提供了基于Golang和Python的库,同时社区也贡献了其他各个语言的客户端库方便接入.
快速开始
以下步骤能让你在本机快速搭建出一套小型的nsq集群,并且能够发布,消费消息以及将消息存储到硬盘中.
- 先进入Installing教程页面
开启一个终端,启动
nsqlookupd
服务:nsqlookupd
再开启另外一个终端,启动
nsqd
服务:nsqd --lookupd-tcp-address=127.0.0.1:4160
再开启第三个终端,启动
nsqadmin
服务:nsqadmin --lookupd-http-address=127.0.0.1:4161
发布一个消息(也是在集群中创建一个消息):
curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test'
最后,在另外一个终端钟,启动
nsq_to_file
服务:nsq_to_file --topic=test --output-dir=/tmp --lookupd-http-address=127.0.0.1:4161
发布更多消息到
nsqd
中curl -d 'hello world2' 'http://127.0.0.1:4151/pub?topic=test' curl -d 'hello world3' 'http://127.0.0.1:4151/pub?topic=test'
- 为了验证所有的操作都已经操作成功,在浏览器中打开
http://127.0.0.1/4171
开查看nsqadmin
服务的可视化统计,当然,也可以到/tmp
目录查看log文件(test.*.log)
这里有一个关键点是nsq_to_file
(客户端)并不是直接被告知test这个topic在在哪里生产的,二是通过nsqlookupd
服务定时取回消息,没有任何消息被丢失.