NSQ端口关系以及注意事项

0.相关参考文章:golang

官网:https://nsq.io/sql

golang实战-nsq集群入门与坑架构

nsq系统架构curl

NSQ消息队列tcp

 

 

1.启动命令工具

①nsqlookupd测试

②nsqd -lookupd-tcp-address=xxx.xxx.xxx.xxx:4160  -broadcast-address=xxx.xxx.xxx.xxx -max-msg-size=50000000 -data-path=your save data pathurl

这里须要注意:xxx.xxx.xxx.xxx为对外ip地址spa

-broadcast-address:若是须要外网访问,必须设置这个参数为对外ip地址。(当在同一台机器上开多个nsqd的状况下须要设置成不同的).net

-max-msg-size:设置单条消息的最大字节数,若是消息超过这个字节数将被丢弃。

-data-path:数据存储路径(当在同一台机器上开多个nsqd的状况下须要设置成不同的)

③nsqadmin -lookupd-http-address=xxx.xxx.xxx.xxx:4161

 

2.端口相关

①外网访问必须开放4150(TCP Producer),4151(HTTP Producer),4160,4161,4171(管理页面)四个端口

②nsqlookupd 监听两个端口: 

4160 TCP 用于接收nsqd的广播,记录nsqd的地址以及监听TCP/HTTP端口等。
4161 HTTP 用于接收客户端发送的管理和发现操做请求(增删话题,节点等管理查看性操做等)。当Consumer进行链接时,返回对应存在Topic的nsqd列表。

 

③nsqd监听两个端口: 

4151 HTTP Producer使用HTTP协议的curl等工具生产数据;Consumer使用HTTP协议的curl等工具消费数据;
4150 TCP Producer使用TCP协议的nsq-j等工具生产数据;Consumer使用TCP协议的nsq-j等工具消费数据;

 

④nsqadmin监听一个端口 
4171 HTTP 用于管理页面

使用地址http://xxx.xxx.xxx.xxx:4171打开管理页面

 

3.下面的示意图清晰的展现了整个NSQ架构的端口关系:

(1)单点

流程说明:

①Consumer1首先使用HTTP链接nsqlookupd的4161端口,获取Topic1相关nsqd的TCP4150端口。

②使用TCP链接到nsqd的4150端口,并生成对应的Channel1;

特别须要注意的是,当所需Topic不变的状况下,就算nsqlookupd和nsqadmin进程都杀掉,也不影响nsqd的生产和消费。

 

(2)集群

 

说明:

①当开启多个nsqd才存在集群的意义。

②尽可能避免多个nsqd存在相同的Topic。若是多个nsqd真的存在相同的Topic的状况下,经过nsqlookupd将会返回全部这个Topic的IP并都能进行读取处理。(使用nsq-j进行过测试验证。)

 

4.Channel相关

 

其实主要有两个点:

①多个Consumer消费同一个Topic和同一个Channel:将会轮训,按序分配给就绪(当前无处理任务)的消费者。所以,多消费者状况下,没法保证有序执行。(像上面动图的"metrics"所示)

②多个Consumer消费同一个Topic和不一样的Channel:将会将同一个数据同时到不一样的Channel中。(像上面动图的三个Channel所示)

注意:Consumer与Topic没有直接联系,而是经过具体的Channel接受数据。若是Consumer退出,Channel不会自动删除。 若是再也不须要,须要经过http端口删除Channel,不然极可能会致使磁盘空间不足。

 

以上。

相关文章
相关标签/搜索