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消息通讯模型