go语言nsq源码解读-基本介绍

baiyuxiong · · 4616 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

希望可以在空余时间完成nsq源码解读系列的文档。

本篇作为第一篇,简单介绍一下nsq.

参考 http://feilong.me/2013/05/nsq-realtime-message-processing-system 的介绍:NSQ是由知名短链接服务商bitly用Go语言开发的实时消息处理系统,具有高性能、高可靠、无视单点故障等优点,是一个非常不错的新兴的消息队列解决方案。

nsg易于配置和部署,所有参考都通过命令行指定,编译好的二进制文件,没有其它依赖项。而且支持多种消息格式。

源码下载地址:

https://github.com/bitly/nsq

本系列文档下载的源码为0.2.27版本。

为更好的理解源码,最理想的起步当然是先了解nsq的用法。所以接下来会先讲解nsq的安装、使用。

安装nsq

1、安装golang环境。

2、安装godep,在命令行执行:


1
go get github.com/kr/godep

如果在使用go get 安装过程中报错,可以参考另一篇文章:关于go get安装git golang项目时报错的处理办法

安装之后,在%GOPATH%/bin目录下会看到有godep.exe,然后记得将%GOPATH%/bin配置到环境变量里,以后在命令行就可以直接输入godep命令来执行一些操作了。

3、安装assert,在命令行执行:


1
go get github.com/bmizerany/assert

4、接下来开始获取nsg的代码并编译。

在命令行执行:


1
godep get github.com/bitly/nsq/...

注意:后面有三个点不能少。
执行之后在%GOPATH%/bin下会有很多nsq打头的exe文件存在。
至此安装就结束了。

使用nsq

总共需要打开五个命令行窗口。
第一个执行:


1
nsqlookupd

第二个执行:


1
nsqd --lookupd-tcp-address=127.0.0.1:4160

第三个执行:


1
nsqadmin --lookupd-http-address=127.0.0.1:4161

第四个执行:


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

第五个执行:


1
nsq_to_file --topic=test --output-dir=F:\tmp --lookupd-http-address=127.0.0.1:4161

这个命令中的output-dir参数,表示数据文件保存在目录,可以根据需要修改。
再回到第四个窗口,执行


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

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

经过这一串操作后,可以开始看成果了:
浏览器访问:http://127.0.0.1:4171/,
可以看到数据统计分析的页面。

打开output-dir参数设置的目录,如本例中的F:\tmp,打开里面的一个记事本文件,看到有三行:
hello world 1
hello world 2
hello world 3

至此,安装和使用就结束了。

到目前为止,我们还停留在知其然,不知其所以然的地步。完全搞不懂上面这些使用的命令行在干什么,也没理解nsq的使用价值在哪里。不过本篇呢,还是要结束了,欲知后事如何,且听下回分解。

下篇:golang nsq源码解读二 nsqlookupd、nsqd与nsqadmin 

官方文档见:http://bitly.github.io/nsq/overview/quick_start.html。

 


有疑问加站长微信联系(非本文作者)

本文来自:熊窝窝

感谢作者:baiyuxiong

查看原文:go语言nsq源码解读-基本介绍

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4616 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传