写点什么

Pivotal Reactor 发布 1.0

  • 2013-11-26
  • 本文字数:1152 字

    阅读完需:约 4 分钟

Pivotal 恰当命名的开源反应式编程类库“Reactor”到达了一个里程碑,该类库于最近对外发布了 1.0 版本。Reactor 为事件驱动、反应式编程模型提供了一个低级别的抽象,同时它还是 Spring IO 平台的一个组件成员,在它的“IO 基础”层。

虽然 Reactor 的内部并没有直接依赖于 Spring 框架,但是 Reactor 是作为 Spring IO 平台的一个基础组件而设计的。该项目的wiki 中提到,它能够借助于“reactor-spring”模块为Spring 提供“开箱即用的支持”,但是核心API 是作为一个自包含的类库提供的,同时可以在一个Spring 应用程序上下文的外部使用。

开发者能够借助于Reactor 构建高吞吐量、低延迟时间的应用程序,这类应用程序每秒钟可能必须处理几千、几万或者甚至是几百万的并发请求。实际上,在宣布该版本发布的博客文章中提到,在一台标准的开发者笔记本上Reactor 每秒钟能够处理“一千到一千五百万事件”。该博客文章还提醒大家一定要注意,无论如何“Reactor 是否能够快速运转一定程序上取决于任务”。

Reactor 中的很多灵感来源于 Reactor 设计模式,该模式为异步事件的分发和处理定义了一个模型。但是该模式并不是构建 Reactor 的唯一灵感源泉,发布说明中提到其他的灵感来源于很多开源项目和类库,包括即将发布的 Java 8。Reactor 从这些领域借鉴了一些理念以便于为 Streams 和 Promises 这样的异步编程技术提供抽象。

为了简化与它的集成,Reactor 为许多流行的类库和语言提供了内置的良好支持。随着对自己宣传口号“快速数据(Fast Data)”的强化,该项目确信公众能够注意到它的高吞吐量 LMAX Disruptor API(为了创建超高性能的金融交易而设计)。

项目的“reactor-tcp”模块提供了一个由 Netty 支持的 TCP 客户端和服务器 API。Netty 是一个 JVM 网络类库,它提供了一个“异步事件驱动的网络应用程序框架和工具……可用于高性能和高扩展性程序”。

它提供语法简化并支持函数式编程技术,将 Groovy 作为一流语言提供支持,包括使用闭包作为回调。Reactor 提供了一个综合的 Groovy DSL,用户能够通过该 DSL 享受简化的配置体验。Java 8 也是作为一流语言提供支持的,通过 Reactor 的 API 可以利用 lambda 表达式,还能将方法引用作为回调。Clojurewerkz 项目, Meltdown ,提供了一个从 Clojure 到 Reactor 的接口。Reactor 团队强调类库的 API 已经被设计为可扩展的…所以非 JVM 语言也能够从它的产品中受益。

Reactor 的源码可以免费从GitHub 上获取到,它是基于Apache 许可的。另外,还可以获取到quickstart 和示例项目,通过具体的示例指导新手入门。最近重新设计的 Spring.IO 网站上的指南部分还提供了一个全面的“入门”教程

用户还可以从Maven Central 上获取到针对各种Reactor 模块的Maven 构件,这在发布说明的底部有提到。

查看英文原文 Pivotal’s Reactor Goes GA

2013-11-26 06:262051
用户头像

发布了 321 篇内容, 共 129.5 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

【SSM】Mybatis系列——mybatis的简介、环境搭建、CRUD操作

胖虎不秃头

mybatis SSM框架 9月月更

网络协议中链接与断开的握手有何区别?

想要飞的猪

三次握手 网络协议、 TCP四次挥手

C++学习---变长参数(stdarg.h)的实现原理

桑榆

c++ 源码阅读 9月月更

到底什么才是完美的回答:什么是事务?

Joseph295

Java 并发:这是你需要的最后一篇文章

Joseph295

关于Linux网络与网络编程

Joseph295

HDFS Block状态转移详解

Joseph295

性能:顶尖高手必备

Joseph295

Java基础语法知识点 1

喜羊羊

9月月更

【SSM】Mybatis系列——配置解析

胖虎不秃头

mybatis ssm 9月月更

美团前端面试题(附答案)

hellocoder2029

JavaScript 前端

【Vue】Vue项目需求--实现搜索框输入防抖处理

Sam9029

JavaScript Vue 前端 9月月更

面试突击82:SpringBoot 中如何操作事务?

王磊

Java 面试题

2022-09-12:以下go语言代码输出什么?A:true;B:false;C:无法编译;D:运行时 panic。 package main func main() { var x chan<-

福大大架构师每日一题

golang 福大大 选择题

Kubernetes: 关于云原生,我知道的一切都在这里了

Joseph295

Java基础知识之数组

喜羊羊

9月月更

构建自动化运维体系的三大层级

穿过生命散发芬芳

自动化运维 9月月更

从程序员的视角看待Linux操作系统

Joseph295

Kafka 最重要的 10 issues 详解

Joseph295

『数据结构与算法』之时间复杂度与空间复杂度,看这一篇就够啦

喜羊羊

9月月更

【SSM】Mybatis系列——解决属性名和字段名不一致的问题、日志

胖虎不秃头

mybatis SSM框架 9月月更

质量问题不是不爆,时候未到

Java 架构 职场

Flink精粹:可能是关于Flink知识点最密集的文章

Joseph295

分布式系统的一致性算法导论

Joseph295

面向对象、DDD与设计模式

Joseph295

下载量已过亿次!阿里内部不外传秘籍50万字Java面试手册首次开放

钟奕礼

Java 程序员 架构 后端 java面试

常见的主要监控数据获取方式

阿泽🧸

监控 9月月更

滴滴前端面试题合集

coder2028

JavaScript 前端

关于 Java Stream 以及lambda

Joseph295

【C语言深度剖析】深入理解C语言中的移位操作符(代码+图解)

Albert Edison

C语言 9月月更 左移操作符 右移操作符

关于 HBase

Joseph295

Pivotal Reactor发布1.0_语言 & 开发_Dan Woods_InfoQ精选文章