Reactor:构建响应式快速数据应用程序的开发库

  • A+
所属分类:Java Java框架 Java实战

Reactor:构建响应式快速数据应用程序的开发库

Reactor是第二代响应式开发库,支持构建基于JVM的非阻塞式应用程序,遵循Reactive Streams规范

1.1 主要特性

1.1.1 REACTIVE CORE

Reactor完全非阻塞式通信基础框架,支持高效按需管理。它可以用Java 8 functional API、Completable FutureStreamDuration直接交互。

1.1.2 TYPED [0|1|N] 序列

Reactor提供了两种响应式AP组合 [Flux N] 和 [Mono 0|1] 实现了丰富的Reactive扩展。Reactor还通过Bus扩展支持可扩展的内存路由。

1.1.3 非阻塞IO

适用微服务架构,Reactor IO提供了带反向压力(backpressure)的网络引擎,支持HTTP(包括Websockets)、TCP和UDP。非阻塞IO还完全支持响应式编码和解码。

1.1.4 高效消息传输

Reactor Processors、Operators 和 Timers 可以持续提供高传输吞吐率,每秒传输的消息数量可达到10的百万次方。低内存开销也是Reactor让大家青睐的原因之一。不仅如此,Reactor还是正在进行的研究项目的一部分,该项目旨在对传输流程做进一步优化。

1.1.5 易于使用

作为响应式引擎和SPI,Reactor Core 和 IO模块可以根据具体用例构建响应式数据流,并且还支持与SpringRxJavaAkka StreamsRatpack等框架集成。作为响应式API,Reactor框架模块还提供了像组合(composition)和事件发布订阅这样的丰富特性。

1.1.6 延迟守护者

水平扩展是降低延迟、解决微服务速度慢的一个重要工具。通过支持异步结构的水平扩展,Cloud Native app可以获得更好的效果。为了支持这样的设计,Reactor提供了非阻塞式和带有反向压力的嵌入式解决方案,包括本地和远程单播、多播消息通信,或者TCP、HTTP、UDP客户端和服务器。

1.2 项目结构

Reactor:构建响应式快速数据应用程序的开发库

1.2.1 Reactor Core

APP和框架响应式支持基础,受 Mono(1元素)和Flux (n元素)启发提供了丰富的响应式API扩展:

1.2.2 Reactor IO

2.5.0.BUILD-SNAPSHPOT

1.2.3 Reactor Addons

2.5.0.BUILD-SNAPSHPOT

1.2.4 Reactor Incubator

2.5.0.BUILD-SNAPSHPOT

1.2.5 Reactive Streams Commons

在为Reactive Streams设计高效并发操作符的工作中提出了公用基础代码项目,即Reactive Streams Commons。Reactor完全符合RSC设计理念,在reactor-core稳定版API中直接使用了RSC。Reactive Streams Commons旨在为大家提供了一种高效流处理解决方案,因此从设计开始就确保不依赖其它框架。

1.2.5.1 注册

可以随时加入、fork、讨论和PR。在项目的路线图中就采取了协作方式,我们欢迎新点子、简化建议、文档、反馈。

1.2.5.2 Maven

最新的快照和发布文件在 repo.spring.io 中提供。稳定版会同步到Maven中央仓库。把这个仓库加入到Gradle构建,指定下面的URL:

XHTML

    repositories {
      //maven { url 'http://repo.spring.io/libs-release' }
      //maven { url 'http://repo.spring.io/libs-milestone' }
      maven { url 'http://repo.spring.io/libs-snapshot' }
      mavenCentral()
    }
 
    dependencies {
      // Reactor Core
      compile "io.projectreactor:reactor-core:2.5.0.BUILD-SNAPSHOT"
 
      // Reactor Aeron
      // compile "io.projectreactor:reactor-aeron:2.5.0.BUILD-SNAPSHOT"
 
       // Reactor Pipes
      // compile "io.projectreactor:reactor-pipes:2.5.0.BUILD-SNAPSHOT"
 
       // Reactor Netty4
       // compile "io.projectreactor:reactor-netty:2.5.0.BUILD-SNAPSHOT"
 
       // Reactor Codecs (Jackson, Kryo...)
       // compile "io.projectreactor:reactor-codec:2.5.0.BUILD-SNAPSHOT"
 
    }

1.3 开始

将Reactor添加到现有项目,只需把配置好的文件添加到项目中。像Fluxand Mono 这样的Reactor基础组件已经包含在reactor-core 中。附加组件由reactor-aeron、reactor-netty、reactor-pipes、reactor-bus和reactor-pylon提供。

build.gradle

repositories {
    // maven { url 'http://repo.spring.io/release' } // 1
    // maven { url 'http://repo.spring.io/milestone' } // 2
    maven { url 'http://repo.spring.io/snapshot' }  // 3
}
 
dependencies {
    //Core stuff (Flux, Mono, Schedulers...)
    compile "io.projectreactor:reactor-core:2.5.0.M3"
 
    //Everything Routing (Event Bus)
    //compile "io.projectreactor:reactor-bus:2.5.0.BUILD-SNAPSHOT"
 
    //Netty TCP/HTTP/UDP client/servers
    //compile "io.projectreactor:reactor-netty:2.5.0.BUILD-SNAPSHOT"
    //compile "io.netty:netty-all:4.0.34.final"
 
    //Reactive Aeron client/servers
    //compile "io.projectreactor:reactor-aeron:2.5.0.BUILD-SNAPSHOT"
}
  • 取消注释使用发布版本。
  • 取消注释使用里程碑版本。
  • 取消注释使用快照版本。

添加reactor-core到项目后,可以使用Flux、Mono和availableProcessor创建事件序列执行带有反向压力(backpressure)的异步操作。

1.4 开发资源

  • 文档

1.5 协议

Reactor遵循Apache 2.0开源协议发布。

官方网站:http://projectreactor.io/ 开源地址:https://github.com/reactor

  • 资源分享QQ群
  • weinxin
  • 官方微信公众号
  • weinxin
沙海
动力节点最牛Java自学基础教程
C语言项目源码分享
AnyNode:最便宜的国外服务器
美女讲师教你学C语言

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: