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. 完成端口的相关概念 ...
随机推荐
- CF1256(div3 java题解)
A: 题意:给定A个N元,B个一元,问是否可以凑成S元. 思路:A*i+j=S 即 A*I<=S<=A*I+B 即min(S/N,A)+B>=S: /* @author nimphy ...
- day28 8_7 网络编程之tcp协议
一.socket模块 socket模块就是用来网络搭建的模块,socket也叫套接字. 创建网络连接,需要使用两个模块进行模拟,一个作为server服务器端,一个作为client客户端. 在服务器端, ...
- Nginx虚拟主机配置(三)
虚拟主机就是使用特殊的软硬件技术,把一台计算机主机分成多台“虚拟”的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能.在同一台硬件.同一个操作系 ...
- django之分页器、多对多关系、form校验组件
批量插入数据 bulk_create # 1.往书籍表中插入数据 1000 # for i in range(1000): # 这种插入方式 效率极低 # models.Book.objects.cr ...
- LOJ 数列分块入门系列
目录 1.区间加+单点查 每个块维护tag,散的暴力改. code: #include<bits/stdc++.h> using namespace std; const int maxn ...
- <binary search> 154 162
154. Find Minimum in Rotated Sorted Array II 当数组中存在大量的重复数字时,就会破坏二分查找法的机制,将无法取得 O(lgn) 的时间复杂度,又将会回到简单 ...
- [LeetCode] 46. Permutations 全排列
Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] O ...
- Sentinel: 接入控制台实时查看监控数据
Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理.监控(单机和集群),规则管理和推送的功能. 比如我们之前是直接在代码中初始限流的值,接入控制台后可以直接通过控制台进行限流 ...
- 2019.11.12&13题解
写在前面: 虽然拿到了rk1,但是T3被卡常TLE90分,(考后再交就A了!?),lemon80,又丢失了一次良好的AK机会, 掐头去尾距离联赛仅剩2天,最近中午一直睡不好,可能是有些紧张, 希望自己 ...
- 15 张 Vim 速查表奉上,帮你提高N倍效率!
阅读本文大概需要 2.8 分钟. 去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了. 话归正传,在linux上一直使用vim,慢慢熟悉了它的命令,才终于领悟了什么是编辑 ...