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
评论