初识NSQ分布式实时消息架构

原创 2015年08月30日 21:50:05

1.NSQ知识普及

NSQ是一个基于Go语言的开源的分布式实时消息平台,他的代码托管在GitHub上。

NSQ可用于大规模系统的实时消息服务,它的设计目标是为在分布式环境下提供一个强大的去除中心化的分布式服务架构,可以每天处理数以亿计的实时消息。NSQ的优点是无单点故障、故障容错、高可用性和信息传递的高可靠性。NSQ安装部署简单,容易水平扩展,目前已有很多公司都是采用其作为自身企业内部的实时消息服务。而且它的灵活性很强,支持很多种协议。官方直接提供了拆箱可用的Go库和Python库。好,其他的就不废话了,随便搜索下NSQ相关的博文或者去NSQ的官方网站了解更详细的信息吧。

2.NSQ的四大组件

nsqlookupd:管理nsqd节点拓扑信息并提供最终一致性的发现服务的守护进程

nsqd:负责接收、排队、转发消息到客户端的守护进程,并且定时向nsqlookupd服务发送心跳

nsqadmin:nsq的web统计界面,可实时查看集群的统计数据和执行一些管理任务 

utilities:常见基础功能、数据流处理工具,如nsq_stat、nsq_tail、nsq_to_file、nsq_to_http、nsq_to_nsq、to_nsq 

3.NSQ依赖

3.1 GO:NSQ是有GO语言开发的,必不可少的需要事先安装配置好GO相关的环境变量信息。

(i)首先自然是去官网找到对应系统的较新较稳定的版本安装包,中文站地址:http://golangtc.com/download

由于其官方地址在国外,下载速度可能比较慢,推荐使用本地下载的链接进行下载。

wget http://golangtc.com/static/go/go1.5beta1.linux-amd64.tar.gz

(ii)下载完安装包后解压并且复制到/usr/local/目录下

tar zxvf go1.5beta1.linux-amd64.tar.gz

mv go /usr/local

(iii)GO环境变量配置

打开环境变量配置文件

sudo vim /etc/profile

然后在文件的最后追加以下配置

export GOROOT=/usr/local/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH

配置好环境变量后再让它马上生效

source /etc/profile

最后查看是否安装成功

go version

如果控制台打印出了对应的版本号信息,那就恭喜你了,等等。。。别急,这才刚刚开始。

3.2 GIT:因为稍候需要从github上获取NSQ的安装文件

直接命令安装就好

yum install git

4.安装NSQ

命令行直接执行下面的命令安装NSQ

go get github.com/kr/godep
go get github.com/bmizerany/assert
godep get github.com/bitly/nsq/…

注:godev为GO的语言依赖管理包,assert为GO的测试框架,至于最后一个嘛,自己猜吧

到此,NSQ就安装好了,接下来就可以一起愉快的玩耍了

5.启动部署和测试

这节的内容就直接翻译了官网的原文了,有兴趣的可以自己去看下

http://nsq.io/overview/quick_start.html

5.1 打开一个终端,启动nsqlookupd

nsqlookupd

5.2 再打开一个终端,启动nsq

nsqd –lookupd-tcp-address=127.0.0.1:4160

5.3 再打开一个终端,启动nsqadmin

nsqadmin –lookupd-http-address=127.0.0.1:4161

5.4 创建一个topic并且发布一条消息,由于nsq支持http协议发布消息,我们可以直接使用curl命令。

curl -d ‘hello world 1’ ‘http://127.0.0.1:4151/put?topic=test

5.5 再开一个终端,@~@!!!,开了好多终端了,来处理消息数据流,将消息写入/tmp文件加下的日志文件,文件名默认由主题topic+主机+日期时间戳组成。

nsq_to_file –topic=test –output-dir=/tmp –lookupd-http-address=127.0.0.1:4161

5.6 我们再发布两条消息,看看日志文件中的变化。

curl -d ‘hello world 2’ ‘http://127.0.0.1:4151/put?topic=test
curl -d ‘hello world 3’ ‘http://127.0.0.1:4151/put?topic=test

5.7特别说明

需要特别注意的是这里的nsq_to_file客户端进程并不确定消息什么时候会发布,所以它会在连接没有断开的情况下定时去nsqlookupd中检索消息,确保消息不丢失。

这里写图片描述

这里写图片描述

这里写图片描述

6.nsqadmin的web统计

这里写图片描述

nsq自身提供了一个便于查看和操作的web界面,可以实时查看统计信息和执行一些管理任务。

6.1浏览器打开nsqadmin的web页

http://192.168.1.111:4171/

由于默认情况下linux系统,nsqadmin的默认端口4171限制了对外访问,所以我们要打开4171端口的路由访问限制,便于外部系统的浏览器访问。

iptables -A INPUT -p tcp –dport 4171 -j ACCEPT

参数讲解:
–A 添加一条规则的意思
–p 指定是什么协议,这里是tcp协议
–dport 就是目标端口,当数据从外部进入服务器为目标端口
–sport 数据从服务器出去,则为数据源端口使用
–j 就是指定是 ACCEPT -接收 或者 DROP 不接收

6.2 Topics界面

这里写图片描述

这里详细的列出了所有的发布的topic主题列表,可以点进去查看单个主题的详细统计信息。还可以管理主题,比如清空主题的消息队列,删除主题,暂停主题等等。

6.3 Nodes节点列表

这里写图片描述

这个页面可以查看当前nsqlookupd协调管理的节点列表,以及一些连接信息,比如端口,连接数,主题和主题数量等等。

6.4 Counter消息计数页

这里写图片描述

这个页面最简洁,中间一个硕大的计数牌,展示已经处理过的消息数目。

6.5 Lookup界面

这里写图片描述

这里我们可以创建消息主题和消息通道。

golang实时消息平台NSQ的使用

NSQ是什么 (本文作者 changjixiong,以下是正文) NSQ是一个实时消息平台,引用一段InfoQ上的介绍: “NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布...
  • changjixiong
  • changjixiong
  • 2017年02月13日 19:54
  • 1587

nsq 快速入门经验分享

nsq 是什么东西,这里就不长篇大论啦我在 Mac 上尝试 nsq.io 中提供的 QUICK START 遇到问题,这里作简要说明...
  • panshiqu
  • panshiqu
  • 2016年11月24日 10:36
  • 3562

golang实战-nsq集群入门与坑

前端时间群里的gofans大增,问到了nsq在集群使用的使用问题。这里简单整理了一下,希望有所帮助。作为实时的分布式消息处理平台,nsq设计的目的是用来大规模地处理每天数以十亿计级别的消息。 由于具...
  • qq_26981997
  • qq_26981997
  • 2017年02月23日 15:40
  • 2019

Linux安装及部署NSQ消息队列

1、NSQ知识点说明 NSQ是一个基于Go语言的开源分布式实时消息平台,NSQ可用于大规模系统的实时消息服务,它的设计目标是为在分布式环境下提供一个强大的去除中心化的分布式服务架构,...
  • FS_sky
  • FS_sky
  • 2017年03月23日 12:04
  • 2042

NSQ源码分析之概述

消息队列在互联网公司使用非常普遍,因此也促使我去学习研究消息队列的原理以及细节问题;之前也有接触过消息队列,最主要就是在异步处理方面,当然消息队列还解耦,流量削峰等功能;目前消息队列产品也比较多,例如...
  • andylau00j
  • andylau00j
  • 2016年12月30日 00:43
  • 1101

ubuntu下nsq的安装

一、下载这里下载的是nsq-1.0.0-compat.linux-amd64.go1.8.tar.gz二、解压tar -zxvf nsq-1.0.0-compat.linux-amd64.go1.8....
  • bcfdsagbfcisbg
  • bcfdsagbfcisbg
  • 2017年09月18日 11:00
  • 190

nsq简单安装以及测试

介绍NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递...
  • qq_21816375
  • qq_21816375
  • 2017年11月27日 23:06
  • 89

nsq linux 安装文档

  • 2015年03月05日 12:22
  • 750KB
  • 下载

NSQ如何在windows上安装

NSQ如何在windows上安装 1、NSQ下载链接 http://nsq.io/deployment/installing.html Current Stable Release: v0.3.8 ...
  • tian_lai_yuyuh
  • tian_lai_yuyuh
  • 2016年09月29日 11:01
  • 1436

nsq安装及初探

文章内容本文主要根据官方文档进行NSQ安装以及测试: 官方文档网址: http://nsq.io/overview/quick_start.html 系统说明:windows 64位过程1. n...
  • bcfdsagbfcisbg
  • bcfdsagbfcisbg
  • 2017年08月15日 16:03
  • 247
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初识NSQ分布式实时消息架构
举报原因:
原因补充:

(最多只允许输入30个字)