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中的应用的更多相关文章

  1. golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布

    本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-mi ...

  2. golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

    micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...

  3. 【GoLang】golang 微服务框架 go-kit

    golang-Microservice Go kit - A toolkit for microservices kubernetes go-kit_百度搜索 Peter Bourgon谈使用Go和& ...

  4. golang微服务框架go-micro 入门笔记2.4 go-micro service解读

    本章节阐述go-micro 服务发现原理 go-micro架构 下图来自go-micro官方 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...

  5. go微服务系列(一) go micro入门

    1. 什么是go micro 1.1 go micro作用 1.2 go micro架构组成 2. go micro入门 3. 结合consul进行服务注册/发现 3.1 consul的安装 3.2 ...

  6. golang 微服务以及相关web框架

    golang 中国gocn golang Applicable to all database connection pools xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常 ...

  7. 【GoLang】GoLang 微服务、开源库等参考资料

    参考资料: GoLang书籍: https://github.com/dariubs/GoBooksGo名库: https://github.com/Unknwon/go-rock-libraries ...

  8. golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

    micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.s ...

  9. Golang微服务:Micro介绍

    官方文档地址 https://micro.mu/docs/index.html Tookit API HTTP接入网关.反向代理或将HTTP转为RPC请求调用后端服务 Web 一个web应用程序,默认 ...

随机推荐

  1. python - 列表,元组

    1.列表       定义:能装对象的对象     在python中使用[] 来描述列表,内部元素用逗号隔开,对数据类型没有要求.     列表存在索引和切片,和字符串的操作是一样的   2.列表相关 ...

  2. Java加密算法

    密码的常用术语: 1.密码体制:由明文空间.密文空间.密钥空间.加密算法和解密算法5部分组成. 2.密码协议:也称为安全协议,是指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务. ...

  3. one list to muti list

    List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8); List<List<Integer> ...

  4. 构建web应用之——文件上传

    我们通过使用multipart请求数据接收和处理二进制信息(如文件).DispatcherServlet并没有实现任何解析multipart请求数据的功能,它将该任务委托给了Spring中的multi ...

  5. python之json序列

    # from urllib import request## f=request.urlopen("http://123.178.101.29:81/xs_main.aspx?xh=2015 ...

  6. unity中遍历Transform的子物体

    1.遍历Transform直接子transform private void Start() { var Equipment = building.transform.FindChild(" ...

  7. winform 所遇

    主程序调用客程序: 方法一: Process.Start( System.Windows.Forms.Application.StartupPath + "\\SelfUpdate.exe& ...

  8. redis学习——redis应用场景

    毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...

  9. PHP调用Python接口过程中所遇到的问题

    在php调用python脚本时,首先把python相关组件安装完善.用Python命令检测运行脚本而不报错. 在调用接口的过程 1.没有打开的python脚本的权限 解决办法:把python脚本所在的 ...

  10. 20. Valid Parentheses ★

    题目内容: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if th ...