来源:未知 时间:2020-01-03 23:25 作者:小飞侠 阅读:次
[导读] 一、 简介 NSQ主要有三个主要程序和一个Web服务程序: nsqd:是守护进程,接收,缓存,并投递消息给客户端 nsqlookupd:是一个守护进程,为消费者提供运行时发现服务,来查找指定话题...
一、 简介NSQ主要有三个主要程序和一个Web服务程序:
除了nsqadmin是独立提供WEB信息以外,三个主要程序组成类似下面的网络拓扑,以提供消息服务: 二、 NSQ获取去下载最新的程序。并将NSQ所在目录加入${PATH}中。 三、 部署以下假设我们要在两台机器上部署NSQ: 192.168.30.54(简称54) 192.168.30.55(简称55)。 其中nsqlookupd和nsqadmin部署到54,nsq两台机器上都部署,以冗余nsqd来实现容灾。
以下假设nsq工具集的路径已包含在${PATH}环境变量中。
1) 54的部署:
当程序未指定—config参数时,程序会尝试从配置文件中读取配置信息。配置文件是以cfg为扩展名,且与程序名同名的文本文件。 nsqlookupd.cfg一般情况下nsqlookupd不需要配置文件,我们使用它的缺省配置即可,如果需要它在特殊端口上监听或修改某些配置,可以修改配置文件 nsqadmin.cfgnsqd.cfg2) 55的部署:55上只需启动nsqd即可 该上面的配置文件,除了id被设置成2外,与54上全部相同。 四、 监控4.1 可视化监控通过http浏览器,我们可以看到NSQ的运行情况,见下图。该图是由nsqadmin提供的。
4.2 自动监控自动监控脚本,见附录。 自动监控目前主要监控两个指标: 1) 运行中的nsqd的数量。主要监控其是否正常运行。 2) nsqd上各channel最大堆积的消息数量。主要监控下游处理情况。
自动监控输出示例: 说明: 第一行主要监控nsqd数量,特征字段为nsqd_count,当前系统中有2个nsqd。 第二、三行监控nsqd运行情况,特征字段为nsqd。 warning表明是否有报警。off – 不报警,监控项运行正常;on – 报警,该项运行异常。
例: 第一行,当前运行的nsqd有两个(nsqd_count),系统中应有nsqd数量为2(should_be),不报警(warning[off]) 第二行,nsqd地址为192.168.30.54:4151,nsqd运行良好(health[OK], 不报警(warning[off])。 五、 异常处理当NSQ发生异常时,可以通过http://192.168.30.54:4171观察到,或通过自动监控机制接收到报警。这时可以重启有问题的进程,以使系统恢复。
例如,如果nsqd运行异常,则可以运行如下命令重启nsqd: 目前已知异常的处理: 1) 系统时间向后调整后, nsqd占用100%的CPU 描述:将系统时间由2015-08-25 11:02:00 向后调整2015-08-24 11:02:00后,nsqd占用100%的CPU 分析:由于是时间向后调整,因此造成nsqd定时器,向前追赶新时间,造成定时器被密集调用。 解决方法:不管是向前(跨度较大时),还是向后调整时间,都建议重启nsqd。 六、下游消息处理(nsq_to_http)(SUB)6.1 GET推送典型的命令行参数: nsq_to_http --topic=demo --lookupd-http-address=127.0.0.1:4161 --get=http://localhost/nsqphp/sub?msg=%s 参数—get表明消息将以GET请求向WebServer(SUB)推送。%s以可打印的形式被实际消息替代。 nsq_to_http需要三元组(topic, lookupd的http地址,get推送地址)
6.2 POST推送(非表单数据)典型的命令行参数 nsq_to_http --topic=demo --lookupd-http-address=127.0.0.1:4161 --post=http://localhost/nsqphp/sub 参数—post表明消息将以POST请求向WebServer(SUB)推送。消息在http的body部分。 此时推送的数据将以二进制推送,也即HTTP请求的Content-Type:application/octet-stream。如果WebServer是以php实现的,则需要以file_get_contents(“php://input”)的形式读取数据。 6.3 POST推送(表单数据)典型的命令行参数 nsq_to_http --topic=demo --lookupd-http-address=127.0.0.1:4161 --post=http://localhost/nsqphp/sub --content-type="application/x-www-form-urlencoded" 参数—post表明消息将以POST请求向WebServer(SUB)推送。消息在http的body部分。 注意—content-type参数,该参数只有在—post的情况下才有效。该参数表明post的消息是以表单的形式组织的,也即可以通过 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com