美文网首页
NSQ消息队列

NSQ消息队列

作者: 渺小Y | 来源:发表于2018-08-29 11:51 被阅读596次

1.安装

根据官方安装指引页面下载最新稳定版的二进制包
https://nsq.io/deployment/installing.html
wget https://s3.amazonaws.com/bitly-downloads/nsq/nsq-1.1.0.linux-amd64.go1.10.3.tar.gz
解压安装
tar zxvf nsq-1.1.0.linux-amd64.go1.10.3.tar.gz
mv nsq-1.1.0.linux-amd64.go1.10.3 /usr/local/
cd /usr/local/
做个软链, 最终 /usr/local/nsq 将作为使用目录
ln -s nsq-1.1.0.linux-amd64.go1.10.3 nsq

1.1启动进程

nsqlookupd

  • nsqlookupd的主要职责是维护拓扑信息, 并且接受客户端请求发现指定topic的nsqd生产节点是哪些, 并返回给客户端;
  • nsqd节点会广播话题和channel信息给nsqlookupd;
  • nsqlookupd可以有多个

[root@localhost bin]# ./nsqlookupd
[nsqlookupd] 2018/08/29 10:24:57.331679 INFO: nsqlookupd v1.1.0 (built w/go1.10.3)
[nsqlookupd] 2018/08/29 10:24:57.332409 INFO: TCP: listening on [::]:4160
[nsqlookupd] 2018/08/29 10:24:57.332448 INFO: HTTP: listening on [::]:4161
监听的端口:
4160 TCP 用于接收nsqd的广播
4161 HTTP 用于接收客户端发送的管理和发现操作请求(增删话题,节点等管理查看性操作等, 真正的生产与消费使用的是nsqd的4151端口)

nsqd

  • nsqd 服务器多个才有集群的意义
  • nsqd 才是真正服务生产者与消费者的进程
  • nsqd 必须指定lookupd-tcp-address 上报自己的信息和状态
  • 在生产环境请不要使用e2e-processing-latency*相关参数, 会消耗大量CPU资源

启动nsqd
[root@localhost bin]# ./nsqd --lookupd-tcp-address=192.168.1.211:4160 -broadcast-address 192.168.1.211 -data-path /data/nsq_data
参数说明:
--lookupd-tcp-address 指定nsqlookupd的ip和端口, 广播自身信息和状态给nsqlookupd
-broadcast-address 是用指定的地址与各个组件进行通信, 默认会使用主机名, 主机名不通时使用ip地址代替
-data-path 落地数据保存的地方
监听端口:
4150 TCP
4151 HTTP

nsqadmin

nsqadmin 提供WEB UI界面(看板)

启动nsqadmin
[root@localhost bin]# ./nsqadmin --lookupd-http-address=192.168.1.211:4161
参数:
--lookupd-http-address 指定从那个nsqlookupd服务读取信息
监听端口:
4171 HTTP
浏览器打开UI界面
http://x.x.x.x:4171

NSQ UI界面

1.2测试

生产消息

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

说明: 生产者是直接请求nsqd, 将消息入列的, 并不会经过nsqlookupd.
所以这里会存在一个问题, 当有多台nsqd的时候, 应该使用第三方负载均衡设备或服务进行自动负载与均衡.
topic无需事先创建, 直接指定即可, nsqd会自动创建这个topic

消费消息

nsq_tail --nsqd-tcp-address 192.168.1.200:4150 --topic test
nsq_tail --lookupd-http-address 192.168.1.211:4161 --topic test
说明: 消费时, 可以直接请求nsqd, 也可以请求nslookupd; 但建议请求nslookupd进行消费, 反对直接请求nsqd进行消费.

channel

一个topic可以在多个nsqd里存在, topic可以有channel, 也可由没有channel;
每个channel相当于是一个消息通道的副本. 比如同一个topic里面有A和B两个channel, 当A中的消息被消费后, B中的消息并未被消费.


topic channel

当topic中存在channel时, 消费请求必须指定channel名称
nsq_tail --lookupd-http-address 192.168.1.211:4161 --topic test --channel name

1.3 nsqadmin 说明

image.png

相关文章

  • NSQ消息队列

    1.安装 根据官方安装指引页面下载最新稳定版的二进制包https://nsq.io/deployment/inst...

  • nsq消息队列

    一、安装nsq: 安装godepgo get github.com/kr/godep 安装assertgo get...

  • NSQ 消息队列

    异步任务与消息队列 同步任务:一定要等任务执行完了,得到结果,才执行下一个任务。 异步任务:不用等任务执行完,直接...

  • docker 搭建nsq集群

    nsq简介 nsq是go实现的高性能消息队列,部署相当简单。 一.搭建nsq集群 1.拉取docker镜像 2.启...

  • nsq 消息队列设计

    消息传递设计 nsqlookupd:作用类似nsqd的注册中心,也复制给消费者提供nsqd地址 nsqd:管理to...

  • 消息队列NSQ使用

    NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub。NSQ可用于大规模...

  • 23.NSQ

    NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ。 组件: nsqdloo...

  • 实操笔记:为 NSQ 配置监控服务的心路历程

    在 Go 语言实现的实时消息队列中, NSQ 的热度可以排第一。 NSQ 这款消息中间件简单易用,其设计目标是为在...

  • 分布式消息队列-NSQ

    NSQ是Go语言编写的,开源的分布式消息队列中间件,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ...

  • nsq消息队列部署以及使用

    NSQ是一个实时的分布式消息平台。它的设计目标是为在多台计算机上运行的松散服务提供一个现代化的基础设施骨架。 NS...

网友评论

      本文标题:NSQ消息队列

      本文链接:https://www.haomeiwen.com/subject/xydqwftx.html