Files
rikako-note/spring/webflux/Reactor.md
2025-03-19 12:51:49 +08:00

19 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Reactor
## Reactive Programming
响应式编程是一种异步编程范式,关注于`数据流``状态变化的传播`。java的响应式编程接口被包含在java9的`Flow`中。
响应式编程范式和观察者设计模式类似,相比于迭代器模式,用户可以选择何时调用`next`方法reactive stream是基于`发布/订阅`模型的。
> 迭代器模式是`pull-based`而reactive stream为`push-based`。
### 命令式迁移到响应式所解决的问题
#### 可组合性与可读性
“可组合性"代表编排多个异步任务的能力通过“组合”可以将前一个异步任务的输出作为后一个异步任务的输入。或者可以按照fork-join的形式对异步任务进行编排。
reactor同样能解决“可读性”的问题在使用传统的callback model编写程序时随着逻辑的复杂异步进行的层数也会增加这将会极大降低代码的可读性和可维护性。
> 在使用call model时通常需要在回调中执行另一个回调回调的嵌套通通常会被称为`callback heil`。
reactor提供了复杂的“组合”选项能够反映抽象异步进程的组织并且所有的内容通常都会位于同一层级。