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. 完成端口的相关概念 ...
随机推荐
- USACO Beef McNuggets
洛谷 P2737 [USACO4.1]麦香牛块Beef McNuggets https://www.luogu.org/problem/P2737 JDOJ 1813: Beef McNuggets ...
- SSH使用ProxyCommand通过代理服务器远程连接其他服务器
当前环境拓扑图: 用户管理海外服务器,通过公网SSH远程时,由于网络质量原因公网丢包严重,这就导致管理员在对海外云主机进行管理时体验较差,表现形式可能是由于公网丢包严重执行命令卡顿,或者SSH进程 ...
- 洛谷P2996 [USACO10NOV]拜访奶牛Visiting Cows
题目 树形dp 设f[i][j]表示走到第i号节点的最大权值 j为0/1表示这个点选或者不选 如果这个点不选 就从他的子树里的选或者不选选最大 如果这个点选 就加上他子树的不选 f[x][0] += ...
- Python例题集
例题1:任意输入一组数据比较其最大值并记录输入的数据个数. 源代码: def max(*a): m=a[0] i=0 for x in a: i+=1 if x>m: m=x print('参数 ...
- [LeetCode] 272. Closest Binary Search Tree Value II 最近的二分搜索树的值之二
Given a non-empty binary search tree and a target value, find k values in the BST that are closest t ...
- find sum and average of n numbers
public class Solution { public static void main(String[] args) { Scanner ip = new Scanner(System.in) ...
- 实验二 Java基础(数据/表达式、判定/循环语句)
实验二 (一)实验内容 编写简单的计算器,完成加减乘除模运算. 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. 编写测试代码,测试验证. ...
- [bash-shell]构建WebAPI项目并且发布到本地
:: 清理log文件 del /S *.log echo Publish parameters initializing... ::These parameters are not used for ...
- linux webbench测试高并发方法
linux webbench测试高并发方法由于ab小工具 测试高并发 会出错 具体原因http://newmiracle.cn/?p=594所以采用webbench这个来测试<pre> w ...
- R数据挖掘 第三篇:聚类的评估(簇数确定和轮廓系数)和可视化
在实际的聚类应用中,通常使用k-均值和k-中心化算法来进行聚类分析,这两种算法都需要输入簇数,为了保证聚类的质量,应该首先确定最佳的簇数,并使用轮廓系数来评估聚类的结果. 一,k-均值法确定最佳的簇数 ...