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. C语言按位运算符

    C语言按位运算符 二进制反码或按位取反:~ 一元运算符~是逐位将1变为0,0变为1 Eg:  ~(1001 1010) Result:(0110 0101) 按位与:& 二元运算符&是 ...

  2. 将一幅图像取平均值缩小N倍实现方法

    /// <summary> /// 将图像缩小N倍 /// </summary> /// <param name="source">原图数据&l ...

  3. 小白的python之路11/14

    视频69 固定命令的方式 1 vim /etc/profile 2 vim /etc/bashrc 3 vim /root/.bashrc 4 vim /root/.bash_profile 5 cd ...

  4. python 网络编程(Socket)

    # from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...

  5. Java集合类(转自hey平平)

    一.集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...

  6. MySQL常用的锁机制 ----------顾名思义

    悲观锁与乐观锁: 悲观锁:顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据库里边就用到了很多这 ...

  7. crt证书iis 中引用 程序目录提示 System.UnauthorizedAccessException:拒绝访问

    在站点根目录添加 Authenticated Users 权限

  8. 记-统计svn与git的log日志中的代码行变更

    任务要求 统计指定时间内,指定git地址与svn地址上的所有人员的代码行变更情况. 解决方案 最初为根据数据库中存储的所有git与svn地址来统计所有人员的提交代码行.之后由于库中存储的地址不全,改为 ...

  9. [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,11.2.0.4 , 也可以使用Pfile来运行Primary和Standby(虽然很少有人用)

    ####Primary#### [oracle@primary ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 金 ...

  10. unity解压缩zip发布后的一些问题

    前段时间项目需要,搞了下zip的解压缩问题,也是利用ICSharpCode.SharpZipLib.dll来处理的zip,这里说下之前遇到的坑(这里提供我用的这个库ICSharpCode.SharpZ ...