doc: 阅读reactor assembly line文档

This commit is contained in:
asahi
2025-03-20 12:49:41 +08:00
parent 275372be35
commit 2a4931ac51

View File

@@ -6,7 +6,7 @@
> 迭代器模式是`pull-based`而reactive stream为`push-based`。
### 命令式迁移到响应式所解决的问题
### 命令式迁移到响应式
#### 可组合性与可读性
“可组合性"代表编排多个异步任务的能力通过“组合”可以将前一个异步任务的输出作为后一个异步任务的输入。或者可以按照fork-join的形式对异步任务进行编排。
@@ -16,3 +16,21 @@ reactor同样能解决“可读性”的问题在使用传统的callback mode
reactor提供了复杂的“组合”选项能够反映抽象异步进程的组织并且所有的内容通常都会位于同一层级。
#### Assembly Line
响应式应用中的数据处理类似于流水线其中reactor既是传送带又是工作站。数据来源于`original publisher`,最终传传递给`subscriber`
数据在从publisher传送到subscriber的过程中可以经过各种转换和其他中间步骤。如果在数据处理的过程中耗费了较多时间受影响的workstation会向上游发送消息来控制数据的生成速率。
#### Operators
在reactor中Operator即是Assembly Line中的Workstation。每个operator都会将新的行为添加到`publisher`并且前一个publisher包装到一个新的publisher实例中。
故而operator将整个chain都链接起来数据来源于第一个publisher并随着chain移动依次被每个链接处理最终由subscriber结束该过程。
#### Nothing Happens Until You subscribe()
当通过reactor编写publisher chain时数据并不会被泵入到chain中编写chain只是创建了异步处理的抽象描述。
通过订阅行为将publisher和subscriber绑定到了一起订阅行为会触发chain中的数据流。该行为通过内部的signal实现subscriber将会发送一个`reuqest signal`该信号会被传递到chain上游一直被传递到source publisher。
#### backpressure
`传递到上游的信号`该机制也被用于实现backpressure在assembly line模型中也被描述为workstation传递给上游的反馈信号当workstation处理消息比上游workstation满时会发送该反馈。