首页  

Reactive Programming     所属分类 architecture 浏览量 680
Reactive Programming  

In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change

响应式编程 反应式编程 
异步编程  事件驱动  event-driven



Reactive Streams规范于2015年出现,旨在为具有无阻塞背压的异步流处理提供标准,确保库的互操作性
背压(backpressure)
接收方接收数据速度较慢时,强制降低发送方的数据发送速度,也称为流量控制

响应式编程框架
RxJava SpringReactor
Akka  Vert.x

akka提供了几种不同的OverflowStrategy,除了backpressure之外还有 DropHead DropTail DropBuffer DropNew 和 Fail


Vert.x是一个基于netty的异步工具集 ,可以简单理解成运行在JVM上的Node.js
vertx-sync 解决异步代码编写的困难
Sync.awaitEvent    从Handler里返回一个事件结果(同步的),且不会阻塞EventLoop
Sync.awaitResult   从Handler里返回一个异步事件结果(同步的),且不会阻塞EventLoop
Sync.fiberHandler  handler里的一些逻辑在Fiber里运行 

In Akka you would create an Actor subclass that would receive messages which are serialized objects.
In vert.x you would create a verticle that would receive messages which are json objects.
其中 actor 和 verticle 都是 lightweight concurrent entities
vertx的json格式对语言的兼容性更好
vert.x is designed to be more language neutral through the use of json as opposed to language specific objects

异步是反人类的
人类生活在一个充满异步事件的世界,但是开发者在构建应用时却遵循同步式思维,究其原因就是因为同步符合直觉,并且可以简化应用程序的构建

异步编程的问题和困难 回调地狱 逻辑分散  难以调试

回调 promise future rx

上一篇     下一篇
shapeless scalaz cats zio

akka actor ask 模式 实例

idea debug 技巧

sbt 创建运行 Scala play 项目

scala Option Try Either

scala try future 例子