reactor
背压:流量控制 -消费者往--生产者推流量
Blocking模式的问题(thread per request)
•
一个Thread可能占据1M内存( 64bit JVM )
•
Context switch 开销大
•
需要依靠同步工具互斥
•
涉及到多状态更新的代码逻辑不易维护
JDK 异步API 的限制
•
Future的不足
•
调用get()强迫变回同步模式
•
多个异步任务协作过于困难
•
Callback hell
•
代码难以阅读
•
改变顺序特别困难
•
难以表达并行的语义
Project Reactor 特性
•实现了reactive-stream规范
•作为Spring 5 Reactor模式的默认实现
•使用JDK8 API
•支持背压
•Composability and readability
Reactive编程关键点
•
Synchronous vs Asynchronous
•
Assembly time vs subscription time
•
Pull vs Push
•
Hot vs Cold