• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

一种开源的分布式消息系统Nats

一种开源的分布式消息系统Nats

作者:chszs。未经博主同意不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs

1、NATS介绍

NATS是一个开源的、轻量级的、高性能的分布式消息通信系统,实现了高可伸缩性和优雅的公布/订阅模型。

NATS适合云基础设施的消息通信系统、IoT设备消息通信和微服务架构。

Apcera团队负责维护NATSserver(Golang语言开发)和client(包含Python、Ruby、Node.js、Elixir、Java、Nginx、C和C#)。开源社区也贡献了一些client库,包含Rust、PHP、Lua等语言的库。
採用了NATS系统的公司有:爱立信、HTC、百度、西门子、VMware。

2、NATS系统的Broker的吞吐量

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

3、NATSserver与client

NATSserver:用Golang语言开发,发行版包含二进制公布包和Docker镜像。
NATSclient:包含了多种语言的client。

官方提供的client

  • Go client:https://github.com/nats-io/nats
  • Node.js client:https://github.com/nats-io/node-nats
  • Ruby client:https://github.com/nats-io/ruby-nats
  • Java client:https://github.com/nats-io/jnats
  • C client:https://github.com/nats-io/cnats
  • C# client:https://github.com/nats-io/csnats
  • Nginx C client:https://github.com/nats-io/nginx-nats

还有社区提供的client:

  • Spring:https://github.com/cloudfoundry-community/java-nats
  • Lua:https://github.com/DawnAngel/lua-nats
  • PHP:https://github.com/repejota/phpnats
  • Python:https://github.com/mcuadros/pynats
  • Scala:https://github.com/tyagihas/scala_nats/
  • Haskell:https://github.com/ondrap/nats-queue

clientAPI文档:

  • C client API documentation:http://nats-io.github.io/cnats/
  • C# client API documentation:http://nats-io.github.io/csnats/
  • Java client API documentation:http://nats-io.github.io/jnats

对于GolangclientAPI文档。须要这样:

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应该在client构建,故仅仅建立了请求-应答。不提供:

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

posted on 2017-08-17 17:07  cynchanpin  阅读(1765)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3