Reactive Programming
所属分类 architecture
浏览量 689
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 例子