一种开源的分布式消息系统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消息通信模型
一种开源的分布式消息系统Nats的更多相关文章
- Kafka——分布式消息系统
Kafka——分布式消息系统 架构 Apache Kafka是2010年12月份开源的项目,采用scala语言编写,使用了多种效率优化机制,整体架构比较新颖(push/pull),更适合异构集群. 设 ...
- 分布式消息系统kafka
kafka:一个分布式消息系统 1.背景 最近因为工作需要,调研了追求高吞吐的轻量级消息系统Kafka,打算替换掉线上运行的ActiveMQ,主要是因为明年的预算日流量有十亿,而ActiveMQ的分布 ...
- 分布式消息系统jafka快速起步(转)
Jafka 是一个开源的/性能良好的分布式消息系统.在上一篇文章中有所简单介绍.下面是一篇简单的入门文档.更多详细的文档参考wiki. Step 1: 下载最新的安装包 完整的安装指南在这里.最新的发 ...
- 分布式消息系统Jafka入门指南之二
分布式消息系统Jafka入门指南之二 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 三.Jafka的文件夹结构 1.安装tree命令 $ sudo yu ...
- [kfaka] Apache Kafka:下一代分布式消息系统
简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交 ...
- 在Centos 7上安装配置 Apche Kafka 分布式消息系统集群
Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据.Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还 ...
- [Apache Pulsar] 企业级分布式消息系统-Pulsar快速上手
Pulsar快速上手 前言 如果你还不了解Pulsar消息系统,可以先看上一篇文章 企业级分布式消息系统-Pulsar入门基础 Pulsar客户端支持多个语言,包括Java,Go,Pytho和C++, ...
- 分布式消息系统Kafka初步
终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到.从这一篇开始分布式消息系统的入门. 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到 ...
- KAFKA分布式消息系统[转]
KAFKA分布式消息系统 转自:http://blog.chinaunix.net/uid-20196318-id-2420884.html Kafka[1]是linkedin用于日志处理的分布式消 ...
随机推荐
- 应用Mongoose开发MongoDB(1)数据库连接
最近因为项目,接触了MongoDB,因为是分工合作,我负责的部分主要是实现前端对数据库增删查改的需求,因此以下内容只着重于针对不同问题如何进行解决. 整个工程的最终目的是通过mongoose编写数据库 ...
- python删除执行路径下的空文件夹
def rm_emp_dir(path): """ 删除指定路径下的空文件夹 :param path: 指定路径 :type path: str :return: Non ...
- Java 内部类.md
Java 内部类 学习自 <Java编程思想> Overview 什么是内部类? Thinking In Java 中如此定义: 将一个类的定义放在里另一个类的定义的内部,这就是内部类. ...
- hdu 1241Oil Deposits(dfs模板)
题目链接—— http://acm.hdu.edu.cn/showproblem.php?pid=1241 首先给出一个n*m的字符矩阵,‘*’表示空地,‘@’表示油井.问在这个矩阵中有多少组油井区? ...
- JDK版本的特性
1. 2.JDK1.5增加的是: (1) 泛型与枚举类型(枚举类型是静态,常量.里面也可以包含构造方法,成员方法,但是构造方法一定是私有的. 适合枚举的是 有限数据,封装特定的数据,), (2)注解( ...
- Atcoder Grand Contest 010 B - Boxes 差分
B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...
- Spring使用注解方式注入多例的方式
目前Spring+Netty的开发方式这么火热,想把Netty注册成Spring组件就一定得用多例的方式,我不由得想吐槽明明这么常见的需求网上相关博客都少的很,这里给出Spring使用注解注入多例的方 ...
- rails 数据迁移 -migration
1.创建一个fruits 项目: rails new fruits -d mysql --skip-bundle 2.修改Gemfile: source 'https://gems.ruby-chin ...
- MongoDB简单使用 —— 安装
下载 MongoDB的下载路径为:MongoDB Download Center.Win.Linux.Mac平台的都有,光Win平台的就提供msi和zip绿色版本的,这里我下载的是zip版本的. 命令 ...
- HDU 4453 Looploop (伸展树splay tree)
Looploop Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...