原文:查看原文
目录
NSQ是什么?
简介
NSQ 是一个实时分布式消息平台,旨在大规模运行,每天处理数十亿条消息。
它提倡没有单点故障的分布式和分散式拓扑结构,实现容错和高可用性,同时保证可靠的消息传递。请看特点和保证。
在操作上,NSQ很容易配置和部署(所有参数都在命令行上指定,编译的二进制文件没有运行时的依赖性)。为了获得最大的灵活性,它与数据格式无关(消息可以是JSON、MsgPack、协议缓冲区或其他任何形式)。官方的Go和Python库是开箱即用的(还有许多其他的客户端库),如果你有兴趣建立自己的库,有一个协议规范。
架构:
监控界面:
无单点故障:
特点:
追求简单部署
追求高可用、避免单点故障、无中心设计
确保消息送达
生产者消费者自动发现、消费者连接所有生产者、向消费者推的模式
提供 HTTP 接口
提供几乎所有编程语言的客户端开发包
详细请参考这里:https://nsq.io/overview/design.html
源码实现
基于docker部署
下载运行容器lookupd
docker pull nsqio/nsq
docker run --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd
获取容器的ip地址
运行docker容器nsqd
docker run -d --name nsqd -p 4150:4150 -p 4151:4151 nsqio/nsq /nsqd --broadcast-address=172.17.0.2 --lookupd-tcp-address=172.17.0.2:4160
运行docker容器nsqadmin
查看容器详情
注意:如果是在linux上面需要关闭防火墙!
然后访问:http://localhost:4171/
基于windows部署
下载
https://nsq.io/deployment/installing.html
运行:nsqlookupd.exe
注意:这个 nsqlookupd 的http端口是4161,tcp端口是:4160 主要作用类似注册中心的作用。
启动一个nsqd节点
nsqd.exe -lookupd-tcp-address=127.0.0.1:4160
相关说明:
--lookupd 表示连接开启的lookupd服务,节点一般都是tcp减少每次连接的消耗
-tcp (-http) 表示用什么样的方式连接lookupd服务来进行注册以及存活检测
-address 表示lookupd的服务器ip地址在哪(lookupd和nsqd节点不在一个服务器上,本地就是127.0.0.1) 端口号是lookupd 启动时开启的端口
管理台
nsqadmin.exe --lookupd-http-address=127.0.0.1:4161
最后
NSQ部署真的挺简单....接下来整相关整合...
往期推荐
没有打印日志,如何排查线上问题?——arthas(阿尔萨斯)
spring整合各种中间件(RocketMQ、kafka、RabbitMQ、TubeMQ、NSQ)-腾讯开源【TubeMQ】
spring整合各种中间件(RocketMQ、kafka、RabbitMQ、ActiveMQ、ZeroMQ)-ZeroMQ
资深java工程师写mysql表子查询left join导致大事务-线上事故
spring整合中间件(RocketMQ、kafka、RabbitMQ、ActiveMQ、ZeroMQ)ActiveMQ