万精油NATS在Micro中的应用

Posted cqvoip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万精油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通信模型也可以实习,但是是随机的,效果应该不会很好。


以上是关于万精油NATS在Micro中的应用的主要内容,如果未能解决你的问题,请参考以下文章

NATS_13:NATS Streaming案例讲解

NATS_10:服务配置详解

高性能消息中间件——NATS

品质315|多特瑞对产品和质量诚信进行承诺

[golang] nats的消息传递模型介绍

通过nats消息运行分子微服务