萬精油NATS在Micro中的應用
阿新 • • 發佈:2018-11-15
工作 模型 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中的應用