golang使用Nsq(转)】的更多相关文章

为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯.一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golang原汁原味的东西,功能齐全,关键是性能还不错.其中支持动态拓展,消除单点故障等特性,  都可以很好的满足我的需求 下面上一张Nsq与其他mq的对比图,看上去的确强大.下面简单记录一下Nsq的使用方法图片来自golang2017开发者大会 Nsq服务端 Nsq服务端简介 在使用Nsq服务之前,还是有必…
为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯.一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golang原汁原味的东西,功能齐全,关键是性能还不错.其中支持动态拓展,消除单点故障等特性,  都可以很好的满足我的需求 下面上一张Nsq与其他mq的对比图,看上去的确强大.下面简单记录一下Nsq的使用方法 图片来自golang2017开发者大会 Nsq服务端 Nsq服务端简介 在使用Nsq服务之前,还是有…
首先先在本地将服务跑起来,我用的是docker-compose ,一句话6666 先新建一个docker-compose.yml version: '2' services: nsqlookupd: image: nsqio/nsq command: /nsqlookupd ports: - "192.168.9.111:4160:4160" - "192.168.9.111:4161:4161" nsqd: image: nsqio/nsq command: /n…
简介 满世界的后台都在向微服务架构发展,我对微服务的理解是将一个复杂的业务分拆为多个服务,由多个服务协作完成一个服务:在后台微服务架构时需要考虑高可用.一致性等问题,也要考虑在实现上.编码上的复杂程度,大多同行采用消息服务中间件对服务进行解耦,微服务多个服务间通过消息中间件进行通信.当然有不少做法是采用RPC方式,当服务多.出现网状RPC调用就会很复杂,管理上也不太方便. 之前我们采用NSQ进行通信(开发语言JAVA&Golang),NSQ的离线消息存储功能也蛮好用,如果程序挂了,重启后不会丢消…
0.相关参考文章: 官网:https://nsq.io/ <golang实战-nsq集群入门与坑> <nsq系统架构> <NSQ消息队列> 1.启动命令 ①nsqlookupd ②nsqd -lookupd-tcp-address=xxx.xxx.xxx.xxx:4160  -broadcast-address=xxx.xxx.xxx.xxx -max-msg-size=50000000 -data-path=your save data path 这里需要注意:xxx…
一.消息队列 什么是消息队列? “消息队列”是在消息的传输过程中保存消息的容器. “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象. 消息被发送到队列中.“消息队列”是在消息的传输过程中保存消息的容器.消息队列管理器是消息从它的源传输到它的目标时充当中间人.队列的主要目的是提供路由并保证消息的传递:如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它. 为什么使用消息队列? 主要原因是由于在高并发环境下,由于来不及同步…
https://www.w3cschool.cn/redis/redis-pub-sub.html redis-server --maxclients 100000 客户端命令CLIENT LIST 返回连接到 redis 服务的客户端列表CLIENT SETNAME 设置当前连接的名称CLIENT GETNAME 获取通过 CLIENT SETNAME 命令设置的服务名称CLIENT PAUSE 挂起客户端连接,指定挂起的时间以毫秒计CLIENT KILL 关闭客户端连接 LRANGE lis…
1.极客学院云计算&大数据总链接:http://wiki.jikexueyuan.com/list/cloud/ 一.NSQ相关参考资料: 1.极客学院NSQ指南:http://wiki.jikexueyuan.com/project/nsq-guide/docker.html 2.golang使用NSQ:https://segmentfault.com/a/1190000009194607 二.Docker的相关参考资料: 1.Docker的安装和配置:http://blog.csdn.net…
前言 NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版.NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构.NSQ具有分布式.去中心化的拓扑结构,该结构具有无单点故障.故障容错.高可用性以及能够保证消息的可靠传递的特征.NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议.另外,官方还提供了拆箱即用Go和Python库.如…

nsq

官网:http://nsq.io (1)描述 都是message broker,rabbitmq久经考验,nsq则是后起之秀.rabbitmq是erlang编写,nsq是golang. 安装:https://github.com/nsqio/nsq/releases下载nsq-0.3.8.linux-amd64.go1.6.2.tar.gz,可执行文件copy到bin下:windows拷贝到c:\windows下 参考文档: http://www.cnblogs.com/hclabxing/p/…
一. 安装 参考:http://nsq.io/deployment/installing.htmlhttp://www.baiyuxiong.com/?p=873    (推荐.) 不推荐直接把官方的Binary Releases版本down下来扔bin目录.建议用“Building From Source”方式(看下面的步骤),这样可以把source下到$GOPATH/src里并同时把程序build到$GOPATH/bin里. (然后可以把这个bin目录添加到环境变量$sudo vi /etc…
nsq是基于golang开发的分布式消息系统,这里仅仅贴个和erlang之间的通信demo rebar-creator create-app test_nsq rebar.config % -*- erlang -*- {erl_opts, [debug_info]}. {deps, [ {ensq,".*",{git, "https://github.com/project-fifo/ensq.git", {tag, "0.1.5"}}} ]}…
1.管道chan吞吐极限10,000,000,单次Put,Get耗时大约100ns/op,无论是采用单Go程,还是多Go程并发(并发数:100, 10000, 100000),耗时均没有变化,Go内核这对chan进行优化. 解决之道:在系统设计时,避免使用管道chan传递主业务数据,避免将业务流程处理流程分割到对个Go程中执行,这样做减少chan传输耗时,和Go程调度耗时,性能会有很大的提升. 案例分析:nsq和nats都是实时消息队列,nsq在客户端端和服务端大量使用chan转发消息,导致性能…
用一了段时间NSQ还是很稳定的.除了稳定,还有一个特别值的说的就是部署非常简单.总想写点什么推荐给大家使用nsq来做一些东西.但是就是因为他太简单易用,文档也比较简单易懂.一直不知道要写啥!!!!! nsq官司网: http://nsq.io/ 为了容灾需要对nsqd多机器部属,有了Docker后,快速扩还是很方便的. 部署完后我会用go和c#写一些代码方便大家学习. 准备工作: >两台服务器:192.168.0.49; 192.168.0.105. >需要在两台机器上安装好Docker &g…
前言 最近用 Golang 实现了一个日志搜集上报程序(内部称 logger 项目),线上灰度测试过程发现 logger 占用 CPU 非常高(80% - 100%).而此项目之前就在线上使用,用于消费 NSQ 任务, CPU 占用一直在 1%,最近的修改只是添加了基于磁盘队列的生产者消费者服务,生产者使用 go-gin 实现了一个 httpserver,接收数据后写入磁盘队列:消费者为单个 goroutine 循环 POST 数据.而 httpserver 压力不大(小于 100 QPS),不…
NSQ简介 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息.NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障.故障容错.高可用性以及能够保证消息的可靠传递的特征,是一个成熟的.已在大规模生成环境下应用的产品. NSQ 由 3 个守护进程组成: nsqd 是接收.保存和传送消息到客户端的守护进程. nsqlookupd 是管理的拓扑信息,维护着所有nsqd的状态,并提供了最终一致发现服务的守护进程. nsqadmin 是一个 Web UI 来实…
与Channel相关的代码主要位于nsqd/channel.go, nsqd/nsqd.go中. Channel与Topic的关系 Channel是消费者订阅特定Topic的一种抽象.对于发往Topic的消息,nsqd向该Topic下的所有Channel投递消息,而同一个Channel只投递一次,Channel下如果存在多个消费者,则随机选择一个消费者做投递.这种投递方式可以被用作消费者负载均衡. Channel从属于特定Topic,可以认为是Topic的下一级.在同一个Topic之下可以有零个…
本篇将解读nsqlookup处理tcp请求的核心代码文件lookup_protocol_v1.go. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021…
简单介绍一下nsq. 参考 http://feilong.me/2013/05/nsq-realtime-message-processing-system 的介绍:NSQ是由知名短链接服务商bitly用Go语言开发的实时消息处理系统,具有高性能.高可靠.无视单点故障等优点,是一个非常不错的新兴的消息队列解决方案. nsq易于配置和部署,所有参考都通过命令行指定,编译好的二进制文件,没有其它依赖项.而且支持多种消息格式. 源码下载地址: https://github.com/nsqio/nsq…
前言 俗话说的好,架构从来都不是一蹴而就的,没有什么架构一开始设计就是最终版本,其中需要经过很多步骤的变化,今天我们就从一个最简单的例子来看看,究竟架构这个东西是怎么变的. 我将从一个最简单的聊天室的功能来实现,看看这样一个说起来好像很简单但的功能,我们需要考虑哪些问题. 我使用golang实现,从0开始实现,需要借助的是websocket来实现即时,基础知识自己补一下,这里不做过多赘述. 功能描述 即时聊天室包含功能(这里写出的功能假设就是产品经理告诉我们的): 1.所用用户能连接聊天室 2.…
前言 最近我再网上寻找使用golang实现的mq,因为我知道golang一般实现的应用部署起来很方便,所以我就找到了一个叫做nsq的mq,其实它并不能完全称为队列,但是它的轻量和性能的高效,让我真的大开眼界. 如果你有兴趣,我觉得也可以了解一下: 网上有人翻译了国外的一篇文章: 我们是如何使用NSQ处理7500亿消息的 安装和部署 官网提供 如果你有能力的话直接阅读官方的说明进行操作就可以了 https://nsq.io/overview/quick_start.html 如果看不懂我还找到了中…
NATS是一个Golang技术栈的MQ服务,类似NSQ,但NATS更轻量级.性能更好.不支持离线.支持同步/异步通信模型,非常好用. NATS在MICRO中有哪些应用 Transport 笔者以前开发后台服务时,直接使用NATS替换RPC实现多机部署.伪负载均衡,Micro也支持NATS作为Transport: transport := nats.NewTransport() service := micro.NewService( micro.Name("go.micro.srv.micros…
1.moby/moby docker的新马甲 2.kubernetes/kubernetes 分布式容器管理 3.grafana/grafana 一个可视化面板,有漂亮的仪表盘,多种数据来源,适合做系统监控 4.coreos/etcd 集群共享信息,服务与发现 5.astaxie/beego 一个快速开发Go应用的http框架 6.gin-gonic/gin 同上 7.prometheus/prometheus 系统监控和报警工具 8.drone/drone 用于CD(Continuous De…
Golang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java .python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多. Golang中包的定义和使用看起来十分简单: 通过package关键字定义包:      package xxx 使用import关键字,导入要使用的标准库包或第三方依赖包. import "a/b/c"   import "fmt" c.Func1…
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open-source-projects  . 欢迎fork, star , watch, 提issue. 资料参考来源:http://studygolang.com/projects 监控系统 序号 名称 项目地址 简介 1 OpenFalcon http://github.com/open-falcon/…
Nsq服务端简介 在使用Nsq服务之前,还是有必要了解一下Nsq的几个核心组件整个Nsq服务包含三个主要部分 nsqlookupd 先看看官方的原话是怎么说:nsqlookupd是守护进程负责管理拓扑信息.客户端通过查询 nsqlookupd 来发现指定话题(topic)的生产者,并且 nsqd 节点广播话题(topic)和通道(channel)信息 简单的说nsqlookupd就是中心管理服务,它使用tcp(默认端口4160)管理nsqd服务,使用http(默认端口4161)管理nsqadmi…
nsq的源码比较简单,值得一读,特别是golang开发人员,下面重点介绍nsqd,看完这篇文章希望你能对消息队列的原理和实现有一定的了解. nsqd是一个守护进程,负责接收,排队,投递消息给客户端,并不保证消息的严格顺序,nsqd默认监听一个tcp端口 (4150) 和一个http端口 (4151) 以及一个可选的https端口 对订阅了同一个topic的同一个channel的消费者使用负载均衡策略,其实就是多个协程消费同一个channel 只要channel存在,即使没有该channel的消费…
本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-micro 入门笔记2.1 micro工具之micro api golang微服务框架go-micro 入门笔记2.2 micro工具之micro web broker代理 微服务之间需要通过broker来传递消息,go-micro支持http/nats/memory三种broker,其中http是默认…
谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也有大型如nsq.docker等的项目. 下面推荐几款适合学习的项目: 1.cache2go https://github.com/muesli/cache2go 比较简单的一个缓存库,代码量很少,适合新手学习,可以学习到锁.goroutines等. 2.groupcache https://gith…
# Golang 开发技能图谱 ## Go 语言环境搭建- Go 安装- GOPATH 与工作空间- Go 命令- Go开发工具 ## GO 语言编程基础- 关键词和语法(Language Syntax)- 数据类型(Arrays, Slices and Maps)- 流程控制(if/else,for/range)- Go 函数(Function)- 面向对象(Methods, Interfaces and Embedding)- 包处理(Packaging and Exporting)- Go…