go语言nsq源码解读一-基本介绍
简单介绍一下nsq.
参考 http://feilong.me/2013/05/nsq-realtime-message-processing-system 的介绍:NSQ是由知名短链接服务商bitly用Go语言开发的实时消息处理系统,具有高性能、高可靠、无视单点故障等优点,是一个非常不错的新兴的消息队列解决方案。
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的使用价值在哪里。不过本篇呢,还是要结束了,欲知后事如何,且听下回分解。
go语言nsq源码解读一-基本介绍的更多相关文章
- go语言nsq源码解读八 http.go、http_server.go
这篇讲另两个文件http.go.http_server.go,这两个文件和第六讲go语言nsq源码解读六 tcp.go.tcp_server.go里的两个文件是相对应的.那两个文件用于处理tcp请求, ...
- (转)go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin
转自:http://www.baiyuxiong.com/?p=886 ---------------------------------------------------------------- ...
- go语言 nsq源码解读三 nsqlookupd源码nsqlookupd.go
从本节开始,将逐步阅读nsq各模块的代码. 读一份代码,我的思路一般是: 1.了解用法,知道了怎么使用,对理解代码有宏观上有很大帮助. 2.了解各大模块的功能特点,同时再想想,如果让自己来实现这些模块 ...
- go语言nsq源码解读七 lookup_protocol_v1.go
本篇将解读nsqlookup处理tcp请求的核心代码文件lookup_protocol_v1.go. 1234567891011121314151617181920212223242526272829 ...
- go语言nsq源码解读二 nsqlookupd、nsqd与nsqadmin
nsqlookupd: 官方文档解释见:http://bitly.github.io/nsq/components/nsqlookupd.html 用官方话来讲是:nsqlookupd管理拓扑信息,客 ...
- go语言nsq源码解读九 tcp和http中channel、topic的增删
通过前面多篇文章,nsqlookupd基本已经解读完毕了,不过在关于channel和topic的增删上还比较模糊,所以本篇将站在宏观的角度来总结一下,tcp.go和http.go两个文件中关于chan ...
- go语言nsq源码解读六 tcp.go、tcp_server.go
本篇讲nsqlookupd中tcp.go.tcp_server.go tcp_server.go位于util目录下. 12345678910111213141516171819202122232425 ...
- go语言 nsq源码解读四 nsqlookupd源码options.go、context.go和wait_group_wrapper.go
本节会解读nsqlookupd.go文件中涉及到的其中三个文件:options.go.context.go和wait_group_wrapper.go. options.go 123456789101 ...
- go语言nsq源码解读五 nsqlookupd源码registration_db.go
本篇将讲解registration_db.go文件. 1234567891011121314151617181920212223242526272829303132333435363738394041 ...
随机推荐
- 【深度学习】目标检测算法总结(R-CNN、Fast R-CNN、Faster R-CNN、FPN、YOLO、SSD、RetinaNet)
目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息.本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括F ...
- WSGI及gunicorn指北(二)
pyg0已经大概了解了wsgi.现在他决定深入探索他们实际在生产环境里用到的web 服务器 -gunicorn. 先来看看官网的介绍:Gunicorn 是一个运行在Unix上的python WSGI ...
- Python--简单接口测试实例(一)
适用人员:初学python的测试人员,若对抓包不太清楚的可先学习抓包的知识 接口测试流程:发送请求-->返回响应-->结果判定-->生成报告 案例:下面以[今目标]新建客户为例来进行 ...
- AdminIII连接linux Postgresql过程中的几个小问题
1.postgresql.conf主配置文件中要配置postgresql绑定的IP,如果不设置,可能只绑定本地闭环地址:127.0.0.1,可以设定为0.0.0.0:就包括了一切IPv4地址 2.pg ...
- nvm使用笔记
1.先发个中文博客的链接:http://www.cnblogs.com/kaiye/p/4937191.html 2.安装node版本的命令问题,版本号前面要加v,安装6.9.1的正确命令是: nvm ...
- android下ViewPager的使用,带下部选项栏的切换动画
(文章针对类似我这种初学者,大神看到不要嘲笑) 演示 我的规矩是先上GIF动画效果(Linux下用转的GIF,清晰度还可以但是不知道为什么放博客上,界面会这么大): 代码: android中有View ...
- form表单序列化为Jquery对象
<form id="DailyFinancial" > @*class="form-inline"*@ <div class="fo ...
- MQTT入手笔记(二)
Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案.本文的主旨在于记录M ...
- Pascal Triangle
Description: Given numRows, generate the first numRows of Pascal's triangle. For example, given numR ...
- 大数据与Mapreduce
第十五章 大数据与Maprudece 一.引言 实际生活中的数据量是非常庞大的,采用单机运行的方式可能需要若干天才能出结果,这显然不符合我们的预期,为了尽快的获得结果,我们将采用分布式的方式,将计算分 ...

