教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 CentOS 7下安装nsq

CentOS 7下安装nsq

发布时间:2022-03-14   编辑:jiaochengji.com
教程集为您提供CentOS 7下安装nsq等资源,欢迎您收藏本站,我们将为您提供最新的CentOS 7下安装nsq资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h1 id="centos-7安装nsq">CentOS 7安装nsq</h1> <h2 id="nsq简介">nsq简介</h2>

NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征

<h2 id="依赖">依赖</h2>

nsq使用go语言编写,所以我们要安装go的环境。网上有说要去1.4版本以上,还有说要求是1.6版本以上。我就索性安装了1.8的版本。

<h3 id="go环境安装">Go环境安装</h3>

go环境中文版下载地址https://golangtc.com/download 可以点击该链接下载您需要的版本。
下载完成后解压并拷贝到你的/usr/local路径下:mv go /usr/local
完成后配置你得环境变量,此时你可以创建一个自己的工作目录当做你的GOPATH并配置到环境变量中,建议将GOPATH/bin同时配置到PATH中,因为我们在后续的安装中会生成很多的可执行文件保存在bin目录下,将其配置到bin中就不会提示你找不到该命令啦。
配置你得环境变量:
vim /etc/profile 在文件的末尾加入如下3行:

<pre class="prettyprint"><code class=" hljs bash"><span class="hljs-keyword">export</span> GOROOT=/usr/local/go <span class="hljs-keyword">export</span> GOPATH=/home/work/gowork //替换成你自己的GOPATH <span class="hljs-keyword">export</span> PATH=<span class="hljs-variable">$PATH</span>:<span class="hljs-variable">$GOROOT</span>/bin:<span class="hljs-variable">$GOPATH</span>/bin</code></pre>

注意linux下使用“:”分割,windows下使用“;”分割。
保存退出后执行source /etc/profile使环境变量立即生效。

<h2 id="nsq安装">nsq安装</h2> <h3 id="源码安装">源码安装</h3>

我在安装时参考了其他人写的安装方法,大体有三种方式。
方法1: 按照以下顺序执行go get
go get github.com/tools/godep
go get github.com/bmizerany/assert
godep get github.com/bitly/nsq/…
使用这种方式安装时,执行到第三部会报错。报错“不允许使用内部的包”,最开始以为是自己操作的问题,重装后依然报错。故采用了领一种方法。
方法 2:安装nsq需要安装gpm

<pre class="prettyprint"><code class=" hljs r">yum install gpm gpm install go get github.com/nsqio/nsq/<span class="hljs-keyword">...</span></code></pre>

使用该方式安装成功。
方法3:直接去下载编译好的,解压后复制到你得GOPATH/bin目录下。
https://github.com/nsqio/nsq/releases 直接点击该链接下载对应版本。

<h2 id="nsq测试">nsq测试</h2>

1 打开一个终端,启动nsqlookupd:nsqlookupd
2 再打开一个终端,启动nsq:nsqd –lookupd-tcp-address=127.0.0.1:4160
PS:这样开启我遇到了报错“no such host”,在经过多番查找后,发现了如下方式开启。
1. 启动nsqlookupd:nsqlookupd -tcp-address=127.0.0.1:4160 -http-address=127.0.0.1:4161 -broadcast-address=”127.0.0.1”
2. 启动nsqd:nsqd -broadcast-address=”127.0.0.1” -http-address=”127.0.0.1:4151” –lookupd-tcp-address=127.0.0.1:4160 -tcp-address=”127.0.0.1:4150”
3. 再打开一个终端,启动nsqadmin: nsqadmin –lookupd-http-address=127.0.0.1:4161
4. 创建一个topic并且发布一条消息,由于nsq支持http协议发布消息,我们可以直接使用curl命令。
curl -d ‘hello world 1’ ‘http://127.0.0.1:4151/put?topic=test’
5. 再开一个终端来处理消息数据流,将消息写入/tmp文件加下的日志文件,文件名默认由主题topic 主机 日期时间戳组成。
nsq_to_file –topic=test –output-dir=/home/work/nsq_log –lookupd-http-address=127.0.0.1:4161
注:/home/work/nsq_log这个为你自己创建的路径。
可以继续执行第4条命令,发布消息。可以进入您创建的路径下面查看日志,也可以登录网页查看。在浏览器中输入http://127.0.0.1:4171/即可查看。

至此nsq的安装完成,推荐使用第三种方式安装。

<h2 id="nsq特性">nsq特性</h2> <ol><li>支持无 SPOF 的分布式拓扑</li><li>水平扩展(没有中间件,无缝地添加更多的节点到集群)</li><li>低延迟消息传递 (性能)</li><li>结合负载均衡和多播消息路由风格</li><li>擅长面向流媒体(高通量)和工作(低吞吐量)工作负载</li><li>主要是内存中(除了高水位线消息透明地保存在磁盘上)</li><li>运行时发现消费者找到生产者服务(nsqlookupd)</li><li>传输层安全性 (TLS)</li><li>数据格式不可知</li><li>一些依赖项(容易部署)和健全的,有界,默认配置</li><li>任何语言都有简单 TCP 协议支持客户端库</li><li>HTTP 接口统计、管理行为和生产者(不需要客户端库发布)</li><li>为实时检测集成了 statsd</li><li>健壮的集群管理界面 (nsqadmin)</li></ol><h2 id="nsq组件">nsq组件</h2> <h3 id="nsqd">nsqd</h3>

nsqd 是一个守护进程,负责接收,排队,投递消息给客户端。也就是说这个服务是干活的。它可以独立运行,不过通常它是由 nsqlookupd 实例所在集群配置的。
nsqd特性如下:
1. 对订阅了同一个topic,同一个channel的消费者使用负载均衡策略(不是轮询)
2. 只要channel存在,即使没有该channel的消费者,也会将生产者的message缓存到队列中(注意消息的过期处理)
3. 保证队列中的message至少会被消费一次,即使nsqd退出,也会将队列中的消息暂存磁盘上(结束进程等意外情况除外)
4. 限定内存占用,能够配置nsqd中每个channel队列在内存中缓存的message数量,一旦超出,message将被缓存到磁盘中
5. topic,channel一旦建立,将会一直存在,要及时在管理台或者用代码清除无效的topic和channel,避免资源的浪费

<h3 id="nsqlookupd">nsqlookupd</h3>

nsqlookupd 是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者,并且 nsqd 节点广播话题(topic)和通道(channel)信息。也就是说nsqlookupd是管理者。
nsqlookupd 特性:
1. 唯一性,在一个Nsq服务中只有一个nsqlookupd服务。当然也可以在集群中部署多个nsqlookupd,但它们之间是没有关联的.
2. 去中心化,即使nsqlookupd崩溃,也会不影响正在运行的nsqd服务
3. 充当nsqd和naqadmin信息交互的中间件
4. 提供一个http查询服务,给客户端定时更新nsqd的地址目录

<h3 id="nsqadmin">nsqadmin</h3>

nsqadmin是web管理界面,用来汇集集群的实时统计,并执行不同的管理任务。也就是说nsqadmin就是我们在浏览器中看到的那个。
nsqadmin特性如下:
1. 提供一个对topic和channel统一管理的操作界面以及各种实时监控数据的展示,界面设计的很简洁,操作也很简单
2. 展示所有message的数量
3. 能够在后台创建topic和channel
4. nsqadmin的所有功能都必须依赖于nsqlookupd,nsqadmin只是向nsqlookupd传递用户操作并展示来自nsqlookupd的数据

参考文章:http://wiki.jikexueyuan.com/project/nsq-guide/design.html
http://blog.csdn.net/symlljg/article/details/52885565
https://segmentfault.com/a/1190000009194607

到此这篇关于“CentOS 7下安装nsq”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
CentOS 7 安装配置NSQ
CentOS 7下安装nsq
mac安装nsq随手记
Centos安装libxml2 'bin/rm: cannot remove libtoolT'...的解决方法
CentOS 6上安装php-mcrypt扩展的方法
ubuntu环境下homestead安装运行nsq
在CentOS上php5.6怎么安装?
CentOS minimal版安装图形界面与中文语言包
CentOS 5.5使用yum安装LAMP(php环境)步骤分享
centos系统下nginx宝塔快速安装

[关闭]
~ ~