下面上一张Nsq与其go语言开发者大会他mq的对比图,看上去的确强大 。下面简单记录一下Nsq的使用方法
图片来自golang2017开发者大会
在使用Nsq服务之前,还是有必要了解一下Nsq的几个核心组件
整个Nsq服务包含三个主要部分
先看看官方的原话是怎么说:
nsqlookupd是守护进程负责管理拓扑信息 。客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者 , 并且 nsqd 节点广播话题(topic)和通道(channel)信息
简单的说nsqlookupd就是中心管理服务 , 它使用tcp(默认端口4160)管理nsqd服务,使用http(默认端口4161)管理nsqadmin服务 。同时为客户端提供查询功能
总的来说,nsqlookupd具有以下功能或特性
官方原话:是一套 WEB UI,用来汇集集群的实时统计,并执行不同的管理任务
总的来说 , nsqadmin具有以下功能或特性
nsqadmin默认的访问地址是
官方原话:nsqd 是一个守护进程,负责接收 , 排队,投递消息给客户端
简单的说,真正干活的就是这个服务 , 它主要负责message的收发,队列的维护 。nsqd会默认监听一个tcp端口(4150)和一个http端口(4151)以及一个可选的https端口
总的来说,nsqd 具有以下功能或特性
这是官方的图,第一个channel(meteics)因为有多个消费者,所以触发了负载均衡机制 。后面两个channel由于没有消费者,所有的message均会被缓存在相应的队列里,直到消费者出现
这里想到一个问题是,如果一个channel只有生产者不停的在投递message,会不会导致服务器资源被耗尽go语言开发者大会?也许nsqd内部做了相应处理,但还是要避免这种情况的出现
了解nsqlookupd,nsqd与客户端中消费者和生产者的关系
消费者有两种方式与nsqd建立连接
生产者必须直连nsqd去投递message(网上说,可以连接到nsqlookupd,让nsqlookupd自动选择一个nsqd去完成投递,但是我用Producer的tcp是连不上nsqlookupd的,不知道http可不可以…),
这里有一个问题就是如果生产者所连接的nsqd炸了,那么message就会投递失败,所以在客户端必须自己实现相应的备用方案
执行完后检查godep是否已经安装在bin目录下,一般都会自动安装,如果没有,用go install手动安装下
如果安装成功,bin目录里就会出现一大堆nsq_…开头的可执行文件
nsqd是一个独立的服务,启动一个nsqd就可以完成message的收发,启动一个单机的nsqd,很简单
客户端可以使用http , 也可以使用tcp , 这里我使用是官方的go-nsq包做客户端,使用tcp进行message的收发
//Nsq发送测试
//Nsq接收测试
关于go语言开发者大会和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 低利息贷款如何营销,低利息贷款产品
- jquery取界面元素,jquery中获取元素里边内容用什么方法
- 怎么取出移动硬盘内资料,移动硬盘如何移除
- 广州自助网站搭建,广州免费网站建站模板
- mysql怎么跟踪表 跟踪mysql执行命令
- 960显卡不行怎么办呢,960显卡啥水平
- 战略游戏发布会,战略游戏app
- 钉钉直播器,新版钉钉直播
- c语言调用函数用数组 c怎么调用数组