1. 程式人生 > >萬精油NATS在Micro中的應用

萬精油NATS在Micro中的應用

工作 模型 latest 官方 一點 就是 指標 request ans

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中的應用