1、NSQ知识点说明
NSQ是一个基于Go语言的开源分布式实时消息平台,
NSQ可用于大规模系统的实时消息服务,它的设计目标是为在分布式环境下提供一个强大的去除中心化的分布式服务架构,可以每天处理数以亿计的实时消息
Go语言,据说Go语言在处理高并发方面很强大,至于有多牛逼,我也不知道,大伙自己去google、百度一下吧
2、环境准备
NSQ是由于Go语言开发的,所以在安装NSQ之前,需要Go语言环境,首先,我们需要去官网下载Go环境
Go安装包下载地址:
https://golang.org/dl/
有点麻烦的是,Go网址是需要翻墙才能下载的,作为程序员,怎么能被墙,个人可以推荐两款免费的翻墙软件,
蓝灯、Shadowsocks ,百度安装就好
NSQ安装下载地址:
http://nsq.io/deployment/installing.html
选择自己需要的安装文件,下载安装,NSQ网址不需要翻墙
- 2.1 go语言环境安装与配置
(1) 解压下载的安装包,tar -zxvf 文件路径
(2) 环境变量配置
vim /etc/profile
在文件后面加入:
export GOROOT=/usr/local/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH
即刻生效profile:
source /etc/profile
检查是否安装成功:
go -version
如果控制台输出go的版本号,说明已经安装成功
- 2.2 NSQ环境安装与配置
在linux中安装部署NSQ,根据官网的栗子,它只会在shell下运行,当shell关闭时,NSQ服务也同时关闭,所以我们这里的安装,在官网的栗子上,我们还需要考虑
NSQ的进程守护,确保在shell 关闭(exit)时,程序一直在后台运行。
可以使用:
nohup 你的命令 &
(1) 解压下载的安装包,同上,进入bin目录
(2) 打开一个终端,启动nsqlookupd
nohup ./nsqlookupd &
(3)打开另一个终端,启动nsqd
nohup ./nsqd --lookupd-tcp-address=127.0.0.1 --broadcast-address=服务器ID &
broadcast-address:广播地址,加上这个地址,消费才能通过这个地址访问,如果你在自己的电脑上玩,这个东西可以忽略
(4)打开另一个终端,启动nsqadmin
nohup ./nsqadmin –lookupd-http-address=127.0.0.1:4161 &
(5)打开另一个终端,启动nsq_to_file ,将消息写入/temp文件的日志文件,文件名默认由主题topic+主机+日期时间戳组成
nohup ./nsq_to_file–topic=test–output-dir=/tmp –lookupd-http-address=127.0.0.1:4161 &
这样,我们nsq的环境安装和部署就弄好了
(6)使用curl命令发布一条消息
curl -d ‘hello world 1’ ‘http://127.0.0.1:4151/put?topic=test
浏览器打开nsqadmin 的统计页面:http://ip:4171
3、NSQ的四大组件
安装好了,让我们来简单介绍一下NSQ
nsqlookupd:管理nsqd节点拓扑信息并提供最终一致性的发现服务的守护进程
nsqd:负责接收、排队、转发消息到客户端的守护进程,并且定时向nsqlookupd服务发送心跳
nsqadmin:nsq的web统计界面,可实时查看集群的统计数据和执行一些管理任务
utilities:常见基础功能、数据流处理工具,如nsq_stat、nsq_tail、nsq_to_file、nsq_to_http、nsq_to_nsq、to_nsq
好吧,这个介绍太官方了,有点难以理解,我们来说点大白话
nsqd 可以看作是一个人。
nsqlookupd 是公安局的户籍办。
nsqadmin 是人口普查办公室。
每产生一个nsqd,都要连到nsqlookupd汇报状态,及定时发送心跳包。对应的:每个人出生或者过世,都要到户籍办去上户或销户,而平时有生之年,你可能还要偶尔去去户籍办,出个户籍证明之类的。
管理者可以通过nsqadmin来查看统计数据,同时做一些管理操作。对应的,人品普查的时候,可以通过公安局来查看,各地区的人口数、性别比例、年龄分布等等。
例子不太恰当,不过对理解也有些帮助,就放在这里了。
配一张图:
四、NSQadmin的web统计
nsq自身提供了一个便于查看和操作的web界面,可以实时查看统计信息和执行一些管理任务。
Topic:主题名称
empty Queue:清空队列
Delete Topic : 删除主题
Pause Topic : 暂停主题
Memory+Disk : 内存和磁盘
Messages : 表示消息总数
channels : 消息通道
In-Flight :飞行中,即将消费的消息
Deferred : 延迟消息
Requeued : 已请求的消息
Time Out : 超时
Connections : 连接数
nodes界面:
这个页面可以查看当前nsqlookupd协调管理的节点列表,以及一些连接信息,比如端口,连接数,主题和主题数量等等。
五、参考资料