docker搭建NSQ集群

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。
NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。如果读者兴趣构建自己的客户端的话,还可以参考官方提供的协议规范。
 
一. 搭建主NSQ服务
1. 创建主服务器
IP: 192.168.0.88
 
2. 拉取NSQ镜像
 docker pull nsqio/nsq
 
3. 启动nsqlookupd服务
 docker run -d --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq:latest /nsqlookupd 
 
4. 启动nsqadmin管理系统
docker run -d --name nsqadmin -p 4171:4171 nsqio/nsq /nsqadmin --lookupd-http-address=192.168.0.88:4161
nsqadmin可以部署在任何一个安装有nsq服务的机器上,只需要指定唯一的lookupd-http-address服务IP地址
浏览器打开:http://192.168.0.88:4171/ ,此时的NSQd Nodes为空
 
二. 部署NSQd节点服务
1.在主服务器(192.168.0.88)上开启一个nsqd节点服务
docker run -d --name nsqd -p 4150:4150 -p 4151:4151 nsqio/nsq:latest /nsqd --broadcast-address=192.168.0.88 --lookupd-tcp-address=192.168.0.88:4160

 

2.创建从服务器(IP:192.168.0.99),拉取镜像docker pull nsqio/nsq,启动一个nsqd服务,此时已有两个nsq节点
docker run -d --name nsqd -p 4150:4150 -p 4151:4151 nsqio/nsq:latest /nsqd --broadcast-address=192.168.0.99 --lookupd-tcp-address=192.168.0.88:4160
broadcast-address:当前服务器IP地址
--lookupd-tcp-address:指向的lookupd服务器IP地址

  

三. 测试
1.打开任意一个shell终端,执行:
curl -d 'a' 'http://192.168.0.88:4151/pub?topic=a' 
curl -d 'b' 'http://192.168.0.88:4151/pub?topic=b' 
curl -d 'c' 'http://192.168.0.88:4151/pub?topic=c' 
curl -d 'e' 'http://192.168.0.88:4151/pub?topic=d' 
curl -d 'd' 'http://192.168.0.88:4151/pub?topic=e' 
curl -d 'f' 'http://192.168.0.88:4151/pub?topic=f' 

小结:通过使用Docker,您可以搭建一个强大的NSQ集群,实现分布式实时消息传递。主要步骤包括:

  1. 在主服务器上启动NSQ Lookupd容器,负责服务发现和拓扑管理。
  2. 使用NSQadmin容器管理和监控集群状态。
  3. 在主服务器上启动一个NSQd节点容器,连接到NSQ Lookupd,成为集群的一部分。
  4. 在其他服务器上启动NSQd节点容器,同样连接到NSQ Lookupd,扩展集群。
  5. 使用curl命令测试消息发布到不同主题。

总之,NSQ为基于Go语言的分布式实时消息平台,利用Docker构建NSQ集群能够简化部署过程,并提供高可用性、去中心化的拓扑结构,以及强大的消息传递能力,适用于大规模系统

posted @ 2023-08-27 11:38  美好生活我心往之  阅读(241)  评论(0编辑  收藏  举报