geek的技术日志,记录每一次技术思考的闪光点。

开源的分布式消息系统Nats与EMQ的比较

1、NATS介绍

NATS是一个开源的、轻量级的、高性能的分布式消息通信系统,实现了高可伸缩性和优雅的发布/订阅模型。NATS适合云基础设施的消息通信系统、IoT设备消息通信和微服务架构。Apcera团队负责维护NATS服务器(Golang语言开发)和客户端(包括Python、Ruby、Node.js、Elixir、Java、Nginx、C和C#),开源社区也贡献了一些客户端库,包括Rust、PHP、Lua等语言的库。
采用了NATS系统的公司有:爱立信、HTC、百度、西门子、VMware。

2、NATS系统的Broker的吞吐量

与ActiveMQ、Kafka、Kestrel、NSQ、RabbitMQ、Redis在Broker吞吐量方面的比较:
这里写图片描述

3、NATS服务器与客户端

NATS服务器:用Golang语言开发,发行版包括二进制发布包和Docker镜像。
NATS客户端:包含了多种语言的客户端。

官方提供的客户端

还有社区提供的客户端:

客户端API文档:

对于Golang客户端API文档,需要这样:

1)用Git下载源码及文档

$ git clone git@github.com:nats-io/nats.git

2)进入源码目录

cd $GOPATH/src/github.com/nats-io/nats

3)运行Godoc文档建立工具

$ godoc -http=:6060

4)浏览器访问API文档:http://localhost:6060/pkg/github.com/nats-io/nats/

4、NATS的设计目标

NATS的设计原则是:高性能、可伸缩能力、易于使用,基于这些原则,NATS的设计目标包括:
1)高性能(fast)
2)一直可用(dial tone)
3)极度轻量级(small footprint)
4)最多交付一次(fire and forget,消息发送后不管)
5)支持多种消息通信模型和用例场景(flexible)
5、NATS用例场景

NATS理想的使用场景有:

1)寻址、发现
2)命令和控制(控制面板)
3)负载均衡
4)多路可伸缩能力
5)定位透明
6)容错

NATS设计哲学认为,高质量的QoS应该在客户端构建,故只建立了请求-应答,不提供:

1)持久化
2)事务处理
3)增强的交付模式
4)企业级队列
6、NATS消息通信模型

NATS与EMQ的比较

EMQ是基于MQTT标准协议的.MQTT支持的协议EMQ都支持。

EMQ使用erlang开发,分布式集群容易。

NATS不提供的持久化 事务处理等等,EMQ都支持。

 

 

未经允许不得转载:极客技术 » 开源的分布式消息系统Nats与EMQ的比较

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址