NATS是一個開源的、輕量級的、高性能的分佈式消息通訊系統,實現了高可伸縮性和優雅的公佈/訂閱模型。php
NATS適合雲基礎設施的消息通訊系統、IoT設備消息通訊和微服務架構。java
Apcera團隊負責維護NATSserver(Golang語言開發)和client(包含Python、Ruby、Node.js、Elixir、Java、Nginx、C和C#)。開源社區也貢獻了一些client庫,包含Rust、PHP、Lua等語言的庫。
採用了NATS系統的公司有:愛立信、HTC、百度、西門子、VMware。node
與ActiveMQ、Kafka、Kestrel、NSQ、RabbitMQ、Redis在Broker吞吐量方面的比較:
nginx
NATSserver:用Golang語言開發,發行版包含二進制公佈包和Docker鏡像。
NATSclient:包含了多種語言的client。git
對於GolangclientAPI文檔。需要這樣:github
1)用Git下載源代碼及文檔api
$ git clone git@github.com:nats-io/nats.git
2)進入源代碼文件夾瀏覽器
cd $GOPATH/src/github.com/nats-io/nats
3)執行Godoc文檔創建工具ruby
$ godoc -http=:6060
4)瀏覽器訪問API文檔:http://localhost:6060/pkg/github.com/nats-io/nats/markdown
NATS的設計原則是:高性能、可伸縮能力、易於使用。基於這些原則,NATS的設計目標包含:
1)高性能(fast)
2)一直可用(dial tone)
3)極度輕量級(small footprint)
4)最多交付一次(fire and forget,消息發送後不管)
5)支持多種消息通訊模型和用例場景(flexible)
五、NATS用例場景
1)尋址、發現
2)命令和控制(控制面板)
3)負載均衡
4)多路可伸縮能力
5)定位透明
6)容錯
1)持久化 2)事務處理 3)加強的交付模式 4)企業級隊列 六、NATS消息通訊模型