zoukankan      html  css  js  c++  java
  • 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通信模型也可以实习,但是是随机的,效果应该不会很好。

  • 相关阅读:
    php 观察者模式
    php 策略模式
    php 适配器模式
    php 单例模式
    程序员应该关注的行业网站
    Mysql 5.7 索引使用规则和设计优化
    Docker官方镜像源或阿里云镜像源加速解决pull过慢的问题
    MySQL 优化案例
    mysql优化count(*)查询语句
    Mysql超大分页优化处理
  • 原文地址:https://www.cnblogs.com/cqvoip/p/9964804.html
Copyright © 2011-2022 走看看