NSQ端口关系以及注意事项
0.相关参考文章:
《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,否则很可能会导致磁盘空间不足。
以上。
NSQ端口关系以及注意事项的更多相关文章
- python处理权限关系一些注意事项
		在模型类中多对多的关系(必须是对象) 如果要获取多对多表中的值,必须使用对象进行搜索,不能直接输入名称 例:这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据用户获取相应的组) user ... 
- C艹 指针和const的关系和注意事项(非常有意思)
		有两种不同的形式将const关键字指向指针. 第一种:让指针指向一个常量对象 const float g_moon = 1.63; float * pm = &g_moon; // 不允许 n ... 
- 完成端口(Completion Port)详解(转)
		手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ... 
- 完成端口(CompletionPort)详解
		手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ... 
- 完成端口IOCP详解
		修改自: http://blog.csdn.net/piggyxp/article/details/6922277 ps: 原作者很厉害了, 把一个iocp模型讲解的这么形象,不过在实践过程中发现一些 ... 
- winSocket编程(十)完成端口
		//本篇为转贴 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚….. 这篇文档我非 ... 
- (转载)完成端口(Completion Port, I/OCP)详解
		http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 手把手叫你玩转网络编程系列之三 完成端口(Completion P ... 
- 转:完成端口(Completion Port)详解
		手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ... 
- windows网络模型之完成端口(CompletionPort)详解 (转)
		转载自:https://blog.csdn.net/piggyxp/article/details/6922277 目录: 1. 完成端口的优点 2. 完成端口程序的运行演示 3. 完成端口的相关概念 ... 
随机推荐
- 生鲜超市项目错误及解决办法(crispy_forms、外键指向自己、class嵌套访问父类、meta类及各种字段参数)
			为什么要在INSTALLED_APPS中加入crispy_forms? 因为django-crispy-forms 是对django form在html页面呈现方式进行管理的一个第三方插件. 为什么有 ... 
- (translation.E004) You have provided a value for the LANGUAGE_CODE setting that is not in the LANGUAGES setting.
			django3.0开始LANGUAGE_CODE前面必须配相应的LANGUAGES配置如下: from django.utils.translation import gettext_lazy as ... 
- BERT
			推出一个半月,斯坦福SQuAD问答榜单前六名都在使用BERT BERT 成为了你做 NLP 时不得不用的模型了……吗? 今日,机器之心小编在刷 Twitter 时,发现斯坦福自然语言处理组的官方账 ... 
- zz视频分割在移动端的算法进展综述
			视频分割在移动端的算法进展综述 语义分割任务要求给图像上的每一个像素赋予一个带有语义的标签,视频语义分割任务是要求给视频中的每一帧图像上的每一个像素赋予一个带有语义的标签. 视频分割是一项广泛使用的技 ... 
- ProceedingJoinPoint获取实现类接口上的注解
			使用aspectj处理拦截aop,需要获取实现类接口上的注解 public Object around(ProceedingJoinPoint pjp) throws Throwable{ long ... 
- [BZOJ1864][CODEVS2462]三色二叉树
			题目描述 Description 一棵二叉树可以按照如下规则表示成一个由0.1.2组成的字符序列,我们称之为“二叉树序列S”: |-0 表示该树没有子节点 S = |-1S1 表示该树有一个子节点, ... 
- 新电脑安装操作系统一定要注意硬盘是否被bitlocker加密!
			新电脑安装操作系统一定要注意硬盘是否被bitlocker加密! 前段时间帮一MM的戴尔灵越14燃5488装机,购买不久的电脑,硬盘是被bitlocker加密的,鬼知道戴尔为什么这么过分.按照常规思路, ... 
- Web协议详解与抓包实战:HTTP1协议-详解请求行(2)
			一.请求行一 二.请求行二 三.请求行三 四.常见方法(RFC7231) 实际测试截图 五.用于文档管理的 WEBDAV 方法(RFC2518) 六.WEBDAV 验证环境 1.登录 2.Wire ... 
- [LeetCode] 352. Data Stream as Disjoint Intervals 分离区间的数据流
			Given a data stream input of non-negative integers a1, a2, ..., an, ..., summarize the numbers seen ... 
- 3.Python配套习题
			这里会持续更新Python每个部分知识点的配套练习题的目录... 
