nsq介绍和源码安装
简介NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征
说明
NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征
依赖环境golang环境和dep包管理工具
官网安装说明里的依赖:
Pre-requisitesAnchor link for: pre requisites
golang (version 1.7+ is required)
dep (dependency manager)
1、安装golang环境
这里使用了当前最新的环境go1.10.1,安装golang环境如下
1、下载golang包
[root@localhost ~]# wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz
2、解压到指定的目录下并更名建立软链接
[root@localhost ~]# tar -zxf go1.10.1.linux-amd64.tar.gz -C /apps/
[root@localhost ~]# cd /apps/ #进入到加压目标目录
[root@localhost apps]# ll
total 16
drwxr-xr-x. 11 root root 4096 Mar 29 00:36 go #直接就是go目录,所以我们重命下目录(后面这些步骤可以省略,个人习惯而已)
....
[root@localhost apps]# mv go/ go1.10.1 #带上版本号
[root@localhost apps]# ll
total 16
drwxr-xr-x. 11 root root 4096 Mar 29 00:36 go1.10.1
...
[root@localhost apps]# ln -s go1.10.1/ go #创建软链接
[root@localhost apps]# ll
total 16
lrwxrwxrwx. 1 root root 9 May 12 20:43 go -> go1.10.1/
drwxr-xr-x. 11 root root 4096 Mar 29 00:36 go1.10.1
...
3、创建自己的Go工作空间
[root@localhost apps]# mkdir gowork
4、配置环境变量
[root@localhost apps]# vim /etc/profile
在后面添加如下三行信息:
export GOROOT=/apps/go
export GOPATH=/apps/gowork #替换成你自己的GOPATH
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
[root@localhost apps]# . /etc/profile #是环境变量生效
5、验证是否成功
[root@localhost apps]# go version
go version go1.10.1 linux/amd64
2、安装dep包管理工具
[root@localhost apps]# go get -u github.com/golang/dep/cmd/dep
[root@localhost gowork]# ll
total 0
drwxr-xr-x. 2 root root 16 May 12 21:05 bin
drwxr-xr-x. 3 root root 23 May 12 20:55 src
[root@localhost gowork]# cd bin/
[root@localhost bin]# ll
total 12812
-rwxr-xr-x. 1 root root 13118923 May 12 21:05 dep
#### 成功安装后,在GOPATH的bin目录下会有一个godep可执行的二进制文件,后面执行的命令都是用这个,如果该目录不在PATH目录下,需要使用全路径。
源码安装nsq
#### 以下三步可能会有问题,那么就分开安装
[root@localhost bin]# git clone https://github.com/nsqio/nsq $GOPATH/src/github.com/nsqio/nsq
[root@localhost bin]# cd $GOPATH/src/github.com/nsqio/nsq
[root@localhost nsq]# dep ensure
#测试
[root@localhost nsq]# ./test.sh
#以下是最重要的步骤
[root@localhost nsq]#make #编译,会生成build目录
[root@localhost nsq]# cd build/ #
[root@localhost build]# ll
total 81276
-rwxr-xr-x. 1 root root 10494289 May 13 01:36 nsqadmin
-rwxr-xr-x. 1 root root 11029465 May 13 01:36 nsqd
-rwxr-xr-x. 1 root root 10057877 May 13 01:36 nsqlookupd
-rwxr-xr-x. 1 root root 7875948 May 13 01:36 nsq_pubsub
-rwxr-xr-x. 1 root root 6934434 May 13 01:36 nsq_stat
-rwxr-xr-x. 1 root root 7314978 May 13 01:36 nsq_tail
-rwxr-xr-x. 1 root root 7453901 May 13 01:36 nsq_to_file
-rwxr-xr-x. 1 root root 7470681 May 13 01:36 nsq_to_http
-rwxr-xr-x. 1 root root 7463469 May 13 01:36 nsq_to_nsq
-rwxr-xr-x. 1 root root 7118407 May 13 01:36 to_nsq
以上就安装完成,其他就可以把这些放到自己需要的位置,执行即可,可以参考官网
安装过程中的错误
1、出现如下信息:
[root@localhost apps]# go get -u github.com/golang/dep/cmd/dep
# cd .; git clone https://github.com/golang/dep /apps/gowork/src/github.com/golang/dep
Cloning into '/apps/gowork/src/github.com/golang/dep'...
fatal: unable to access 'https://github.com/golang/dep/': Peer reports incompatible or unsupported protocol version.
package github.com/golang/dep/cmd/dep: exit status 128
解决方式:
[root@localhost apps]# yum update -y nss curl libcurl
2、关于golang.org/x包问题
由于谷歌被墙,跟谷歌相关的模块无法通过go get来下载,解决方法:
[root@localhost nsq]# git clone https://github.com/golang/sys.git $GOPATH/src/github.com/golang/sys
[root@localhost nsq]# mkdir $GOPATH/src/golang.org
[root@localhost nsq]# ln -s $GOPATH/src/github.com/golang $GOPATH/src/golang.org/x
ln -s $GOPATH/src/github.com/golang $GOPATH/src/golang.org/x