NSQ安装及简单使用

简述

nsqd 是一个守护进程,负责接收,排队,投递消息给客户端。简单的说,真正干活的就是这个服务,它主要负责message的收发,队列的维护。nsqd会默认监听一个tcp端口(4150)和一个http端口(4151)以及一个可选的https端口;

  

对订阅了同一个topic,同一个channel的消费者使用负载均衡策略(不是轮询)
只要channel存在,即使没有该channel的消费者,也会将生产者的message缓存到队列中(注意消息的过期处理)
保证队列中的message至少会被消费一次,即使nsqd退出,也会将队列中的消息暂存磁盘上(结束进程等意外情况除外)
限定内存占用,能够配置nsqd中每个channel队列在内存中缓存的message数量,一旦超出,message将被缓存到磁盘中
topic,channel一旦建立,将会一直存在,要及时在管理台或者用代码清除无效的topic和channel,避免资源的浪费

 

nsqlookupd 是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者,并且 nsqd 节点广播话题(topic)和通道(channel)信息。简单的说nsqlookupd就是中心管理服务,它使用tcp(默认端口4160)管理nsqd服务,使用http(默认端口4161)管理nsqadmin服务。同时为客户端提供查询功能;

  

唯一性,在一个Nsq服务中只有一个nsqlookupd服务。当然也可以在集群中部署多个nsqlookupd,但它们之间是没有关联的
去中心化,即使nsqlookupd崩溃,也会不影响正在运行的nsqd服务
充当nsqd和naqadmin信息交互的中间件
提供一个http查询服务,给客户端定时更新nsqd的地址目录

nsqadmin 是一套 WEB UI,用来汇集集群的实时统计,并执行不同的管理任务nsqadmin默认的访问地址是 http://127.0.0.1:4171/

  

提供一个对topic和channel统一管理的操作界面以及各种实时监控数据的展示,界面设计的很简洁,操作也很简单
展示所有message的数量,恩…装X利器
能够在后台创建topic和channel,这个应该不常用到
nsqadmin的所有功能都必须依赖于nsqlookupd,nsqadmin只是向nsqlookupd传递用户操作并展示来自nsqlookupd的数据


一、NSQ下载

打开 https://nsq.io/deployment/installing.html 下载对应的nsq版本

Linux选择安装 nsq-1.2.1.linux-amd64.go1.16.6.tar.gz,如下以Linux安装为例

二、NSQ解压、启动

# 将包上传至服务器后解压
tar -zxvf nsq-1.2.1.linux-amd64.go1.16.6.tar.gz

#进入bin目录
cd /www/server/nsq-1.2.1.linux-amd64.go1.16.6/bin
 
# 打开一个终端,启动nsqlookupd
./nsqlookupd
 
# 打开另一个终端,启动nsqd
./nsqd --lookupd-tcp-address=127.0.0.1:4160

# 打开另一个终端,启动nsqadmin
./nsqadmin --lookupd-http-address=127.0.0.1:4161

 

启动后打开127.0.0.1:4171可以访问对应web页面,创建topic

使用curl命令,发布一条消息

curl -d 'hello world' 'http://127.0.0.1:4151/pub?topic=test'

查看web页面可以查看到有一条记录

附:

NSQ启动脚本示例:

#!/bin/sh
cd  /www/server/nsq/bin
ps aux |grep 'nsqlookupd' |grep -v grep |awk '{print $2}'|xargs kill -9
ps aux |grep 'nsqd' |grep -v grep |awk '{print $2}'|xargs kill -9
ps aux |grep 'nsqadmin' |grep -v grep |awk '{print $2}'|xargs kill -9
ps aux |grep 'nsq_to_file' |grep -v grep |awk '{print $2}'|xargs kill -9

NSQ_ADDRESS="127.0.0.1"
NSQLOOKUPD_LOG="../out/tmplookup5.out"
NSQD_LOG="../out/tmpnsqd5.out"
NSQADMIN_LOG="../out/tmpnsqadmin5.out"
NSQFILE_LOG="../out/tmpnsqfile5.out"
NSQFILE_DIR="../out/"

nohup ./nsqlookupd -broadcast-address=$NSQ_ADDRESS -http-address=$NSQ_ADDRESS":5501" -tcp-address=$NSQ_ADDRESS":5511" >> NSQLOOKUPD_LOG 2>&1 &

nohup ./nsqd --lookupd-tcp-address=$NSQ_ADDRESS":5511" -broadcast-address=$NSQ_ADDRESS -tcp-address=$NSQ_ADDRESS":5561" -http-address=$NSQ_ADDRESS":5551" >>  $NSQD_LOG 2>&1 &

nohup ./nsqadmin -lookupd-http-address=$NSQ_ADDRESS":5501" -http-address="0.0.0.0:5500"  >>  $NSQADMIN_LOG 2>&1 &

nohup ./nsq_to_file --topic=test --output-dir=$NSQFILE_DIR --lookupd-http-address=$NSQ_ADDRESS":5501" >> $NSQFILE_LOG 2>&1 &

1、停止后再重新启动

2、配置log日志文件地址和运行IP地址

3、分别启动 nsqlookupd、nsqd、nsqadmin(web管理功能)、nsq_to_file(队列消息写入文件),并修改对应的端口

 

posted @ 2022-06-08 19:13  Sanplit  阅读(1022)  评论(0编辑  收藏  举报