响应式编程的优势
- 不用Thread per Request模型,使用少量线程即可处理大量的请求。
- 在执行I/O操作时不让线程等待。
- 简化并行调用。
- 支持背压,让客户端告诉服务端它可以处理多少负载。
响应式系统应用的设计目标
- 响应性(以时序的方式响应)
- 健壮(即使发生错误也可以保证响应性)
- 弹性(在不同的工作负载下保持响应性)
- 消息驱动(依赖异步消息传递机制)
流
- 流是一个时序事件序列,可以发射三种不同的事件:(某种类型的)值、错误或者一个完成信号。
- 分别为这三类事件定义事件处理函数,异步地处理事件。
- 监听一个流称为订阅,定义的函数是观察者,流是被观察者,即观察者模式。
- 当调用其中一个方法时,它会基于原来的流返回一个新的流。它不会对原来的点击流作任何修改。这个特性称为不可变性,也可以对方法进行链式调用。
