Golang微服务:万精油NATS在Micro中的应用
NATS是一个Golang技术栈的MQ服务,类似NSQ,但NATS更轻量级、性能更好、不支持离线、支持同步/异步通信模型,非常好用。
NATS在MICRO中有哪些应用
- Transport
 
笔者以前开发后台服务时,直接使用NATS替换RPC实现多机部署、伪负载均衡,Micro也支持NATS作为Transport:
	transport := nats.NewTransport()
	service := micro.NewService(
		micro.Name("go.micro.srv.microsrv"),
		micro.Version("latest"),
		micro.Transport(transport),
	)
- Broker
 
NATS本身就是MQ服务,NATS支持PUB/SUB,Request/Reply,Queueing三种通信模型,而Micro只需要其PUB/SUB模型。
	broker := nats.NewBroker()
	service := micro.NewService(
		micro.Name("go.micro.srv.microsrv"),
		micro.Version("latest"),
		micro.Broker(broker),
	)
- Registry
 
是的,你没有看错,有NATS这种MQ来实现服务发行,根据官方文档,NATS来当Registry还工作的很好。Micro的实现原理大致是:
订阅应答主题/广播查询主题(携带应答主题)/收到应答后,超时取消订阅/根据应答(比如时延)返回结果。
优点:每次从服务实例而不是注册中心获取到服务的信息,实时性高,可以根据某些指标选择最优的服务。
缺点:时延长了一点,CLI-NATX-SRV,比传统注册中心(CLI-REGISTRY)多了一段。
其实,NATS的QUEUEING通信模型也可以实习,但是是随机的,效果应该不会很好。
Golang微服务:万精油NATS在Micro中的应用的更多相关文章
- golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布
		
本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-mi ...
 - golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web
		
micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...
 - 【GoLang】golang 微服务框架 go-kit
		
golang-Microservice Go kit - A toolkit for microservices kubernetes go-kit_百度搜索 Peter Bourgon谈使用Go和& ...
 - golang微服务框架go-micro 入门笔记2.4  go-micro service解读
		
本章节阐述go-micro 服务发现原理 go-micro架构 下图来自go-micro官方 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...
 - go微服务系列(一) go micro入门
		
1. 什么是go micro 1.1 go micro作用 1.2 go micro架构组成 2. go micro入门 3. 结合consul进行服务注册/发现 3.1 consul的安装 3.2 ...
 - golang 微服务以及相关web框架
		
golang 中国gocn golang Applicable to all database connection pools xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常 ...
 - 【GoLang】GoLang 微服务、开源库等参考资料
		
参考资料: GoLang书籍: https://github.com/dariubs/GoBooksGo名库: https://github.com/Unknwon/go-rock-libraries ...
 - golang微服务框架go-micro 入门笔记2.1  micro工具之micro api
		
micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.s ...
 - Golang微服务:Micro介绍
		
官方文档地址 https://micro.mu/docs/index.html Tookit API HTTP接入网关.反向代理或将HTTP转为RPC请求调用后端服务 Web 一个web应用程序,默认 ...
 
随机推荐
- 在电脑端同时安装Python2,Python3
			
参考文档:http://www.cnblogs.com/zhengyihan1216/p/6011640.html 重点: 1.安装路径最好在一起,方便管理 2.安装路径下不建议有空格 3.Pytho ...
 - canvas 实现刮刮乐
			
在解决问题前,我们先来了解一下 canvas 标签canvas 是 html5 出现的新标签,像所有的 dom 对象一样它有自己本身的属性.方法和事件,其中就有绘图的方法,js 能够调用它来进行绘图. ...
 - Spring IoC和AOP使用扩展
			
Spring提供了设值注入,构造注入等依赖注入方式. 使用p命令空间可以简化属性注入的配置. Spring提供的增强处理类型包括前置增强,异常抛出增强,环绕增强,最终增强等. 通过Schema形式将P ...
 - Linux c codeblock的使用(四):创建自己的静态函数库
			
从我之前的博文当中,大家应该大概了解了linux下的函数库究竟是一个什么样的东西.linux下的函数库其实就像windows中的dll文件,里面包含了程序运行所需要的函数. 其实无论是我们使用linu ...
 - Spark 中Java实现数据库Row转Rating
			
Dataset<Row> ratings = mlsc.sql("SELECT user,movie,rating FROM data");JavaRDD<Row ...
 - Unity资源内存管理--webstream控制
			
一 使用前提 1,需要使用资源热更新 2,使用Assetbundle资源热更(AssetBundle是产生webstream的元凶) 二 为什么要用AssetBundle AssetBundle本质上 ...
 - dict的几个要点
			
1. 采用key,value键-值对进行存储 2. key必须是不可变对象 3. key值不能重复 添加元素: aDict = {'1':'aaa','b':'bbb','3':'ccc'} aDic ...
 - transfer model derived to fk model format
			
It should be noted that when using fk, the definition of model format is as belows: 1: 2: when using ...
 - SQLServer数据库
			
分离数据库:右键数据库→任务→分离数据库→确定 附加数据库:数据库右键→任务→附加→选择要附加的dlf文件→附加 导出SQL脚本步骤:右键数据库→任务→生成脚本→高级→要编写脚本的数据的类型→架构和数 ...
 - Linux 安装python3.4
			
不要动现有的python2环境! 不要动现有的python2环境! 不要动现有的python2环境! 默认yum好用 默认环境不全 1. 安装环境 yum -y install zlib zlib-d ...