0.相关参考文章:

官网:https://nsq.io/

golang实战-nsq集群入门与坑

nsq系统架构

NSQ消息队列

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 path

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

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

-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,否则很可能会导致磁盘空间不足。

以上。

最新文章

  1. 基础知识《四》---Java多线程学习总结
  2. 【转载】UML类图知识整理
  3. E437: terminal capability "cm" required
  4. cf493A Vasya and Football
  5. ANSIC程序到KeilC51的移植心得
  6. Linux下编译第三方库的问题
  7. Netduino开篇
  8. backup-mysql.sh
  9. wemall app中基于Java获取和保存图片的代码
  10. 网络编程-Socket介绍
  11. 实验吧 ASCII艺术
  12. UVa LA 3882 - And Then There Was One 递推,动态规划 难度: 2
  13. Java中final的用法总结
  14. Head First Servlets & JSP 学习笔记 第一章 —— 前言和体系结构
  15. Laravel 5.5 + Vue 开发单页应用
  16. Python-统计svn代码总行数
  17. POJ 3522 - Slim Span - [kruskal求MST]
  18. Python 图形界面(GUI)设计
  19. myeclipse单步调试
  20. Python(序列化json,pickle,shelve)

热门文章

  1. window-Mysql下载安装
  2. java 启动jar 指定端口
  3. LeetCode 204. Count Primes计数质数 (C++)
  4. Chrome 禁止 http 自动转化为https
  5. MySQL单表查询 条件查询,分组
  6. <Math> 165 8
  7. 基于github发布 个人网站/博客
  8. KMP 串的模式匹配 (25分)
  9. Ubuntu安装微信、钉钉等各种windows软件
  10. 框架之jQuery妙用