美文网首页golang
nsq学习记录 (macOS环境)

nsq学习记录 (macOS环境)

作者: 玩玩风行啦 | 来源:发表于2018-07-24 16:34 被阅读123次
安装nsq
brew install nsq
nsqlookupd是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者,并且 nsqd 节点广播话题(topic)和通道(channel)信息,使用tcp(默认端口4160)管理nsqd服务,使用http(默认端口4161)管理nsqadmin服务。同时为客户端提供查询功能
总的来说,nsqlookupd具有以下功能或特性:
  • 唯一性,在一个Nsq服务中只有一个nsqlookupd服务。当然也可以在集群中部署多个nsqlookupd,但它们之间是没有关联的
  • 去中心化,即使nsqlookupd崩溃,也会不影响正在运行的nsqd服务
  • 充当nsqd和naqadmin信息交互的中间件
  • 提供一个http查询服务,给客户端定时更新nsqd的地址目录
启动nsqlookupd
nsqlookupd
nsqadmin 用来汇集集群的实时统计,并执行不同的管理任务
总的来说,nsqadmin具有以下功能或特性:
  • 提供一个对topic和channel统一管理的操作界面以及各种实时监控数据的展示
  • 展示所有message的数量
  • 能够在后台创建topic和channel
  • nsqadmin的所有功能都必须依赖于nsqlookupd,nsqadmin只是向nsqlookupd传递用户操作并展示来自nsqlookupd的数据
启动nsqadmin web UI:http://127.0.0.1:4171/
nsqadmin --lookupd-http-address=127.0.0.1:4161
nsqd 一个守护进程,负责接收,排队,投递消息给客户端。主要负责message的收发,队列的维护。nsqd会默认监听一个tcp端口(4150)和一个http端口(4151)以及一个可选的https端口
启动nsqd-node1 当nsqd进程退出时,将内存中的数据写入到磁盘;当nsqd进程启动时,将磁盘中的数据读入到内存
1739290334-58ff5538ccac6_articlex.png
总的来说,nsqd 具有以下功能或特性:
  • 对订阅了同一个topic,同一个channel的消费者使用负载均衡策略(不是轮询)
  • 只要channel存在,即使没有该channel的消费者,也会将生产者的message缓存到队列中(注意消息的过期处理)
  • 保证队列中的message至少会被消费一次,即使nsqd退出,也会将队列中的消息暂存磁盘上(结束进程等意外情况除外)
  • 限定内存占用,能够配置nsqd中每个channel队列在内存中缓存的message数量,一旦超出,message将被缓存到磁盘中
  • topic,channel一旦建立,将会一直存在,要及时在管理台或者用代码清除无效的topic和channel,避免资源的浪费
启动nsqd-node1
mkdir nsq1 && cd nsqd1
nsqd --lookupd-tcp-address=127.0.0.1:4160 -broadcast-address=0.0.0.0 -node-id 123 -tcp-address=0.0.0.0:4150 -http-address=0.0.0.0:4151
启动nsqd-node2
mkdir nsqd2 && cd nsqd2 
nsqd --lookupd-tcp-address=127.0.0.1:4160 -broadcast-address=0.0.0.0 -node-id 456 -tcp-address=0.0.0.0:5150 -http-address=0.0.0.0:5151
测试发送
curl -d "hello world!" 'http://127.0.0.1:4151/pub?topic=demo'
消费者有两种方式与nsqd建立连接
3383256184-58ff49e3526a9_articlex.gif
  • 消费者直连nsqd
  • 消费者通过http查询nsqlookupd获取该nsqlookupd上所有nsqd的连接地址,然后再分别和这些nsqd建立连接

相关文章

网友评论

    本文标题:nsq学习记录 (macOS环境)

    本文链接:https://www.haomeiwen.com/subject/yzkymftx.html