Update ch11.md

This commit is contained in:
qtmuniao 2024-03-26 10:38:52 +08:00 committed by GitHub
parent bc4facbfd9
commit 8859c04986
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -465,7 +465,7 @@ CEP 系统常使用偏高层的描述式查询语言,如 SQL 或者图形用
### 管理物化视图 ### 管理物化视图
我们在数据库和流处理TODO: link一节中提到过数据库的变更流可以用来维护一些衍生数据系统如缓存、搜索索引和数据仓库。这些衍生数据系统可以看做物化视图参见[聚合:数据立方和物化视图](https://ddia.qtmuniao.com/#/ch03?id=%e8%81%9a%e5%90%88%ef%bc%9a%e6%95%b0%e6%8d%ae%e7%ab%8b%e6%96%b9%e5%92%8c%e7%89%a9%e5%8c%96%e8%a7%86%e5%9b%be))的一些特例:**构造一个面向某种查询优化的视图,并将新到来的更改不断更新到该视图上。 我们在数据库和流处理TODO: link一节中提到过数据库的变更流可以用来维护一些衍生数据系统如缓存、搜索索引和数据仓库。这些衍生数据系统可以看做物化视图参见[聚合:数据立方和物化视图](https://ddia.qtmuniao.com/#/ch03?id=%e8%81%9a%e5%90%88%ef%bc%9a%e6%95%b0%e6%8d%ae%e7%ab%8b%e6%96%b9%e5%92%8c%e7%89%a9%e5%8c%96%e8%a7%86%e5%9b%be))的一些特例:构造一个面向某种查询优化的视图,并将新到来的更改不断更新到该视图上。
类似的,在事件溯源系统中,应用层的状态也是通过持续应用事件日志来维持的;这里的应用层的状态本质上也是一种物化视图。但和**数据流分析**场景不同,在**物化视图**场景中仅考虑固定的时间窗口内的状态是不够的——物化视图通常需要将所有时间以来的事件进行叠加应用除非有些过时日志已经通过日志紧缩TODO: link被删掉了。如果仍然用时间窗口来解释的话就是——在物化视图的场景中你需要一个足够长的、一直延伸到事件流起点的时间窗口。 类似的,在事件溯源系统中,应用层的状态也是通过持续应用事件日志来维持的;这里的应用层的状态本质上也是一种物化视图。但和**数据流分析**场景不同,在**物化视图**场景中仅考虑固定的时间窗口内的状态是不够的——物化视图通常需要将所有时间以来的事件进行叠加应用除非有些过时日志已经通过日志紧缩TODO: link被删掉了。如果仍然用时间窗口来解释的话就是——在物化视图的场景中你需要一个足够长的、一直延伸到事件流起点的时间窗口。
@ -487,7 +487,7 @@ CEP 系统常使用偏高层的描述式查询语言,如 SQL 或者图形用
- Actor 之间的通信通常是短暂且一对一的,而事件日志则是持久的且通常是多下游的(多个订阅者/消费者)。 - Actor 之间的通信通常是短暂且一对一的,而事件日志则是持久的且通常是多下游的(多个订阅者/消费者)。
- Actor 间可以用任意模式注意区分模式和方式Actor 的通信方式肯定是消息传递)进行通信(包括循环往复的请求-应答模式),但流处理通常由有向无环的流水线构成。每个任务通常以多个流作为输入,进行处理后,然后产生一个新的流。 - Actor 间可以用任意模式注意区分模式和方式Actor 的通信方式肯定是消息传递)进行通信(包括循环往复的请求-应答模式),但流处理通常由有向无环的流水线构成。每个任务通常以多个流作为输入,进行处理后,然后产生一个新的流。
也就是说,类 RPC 系统和流处理系统间在定位上有一些交叉。举个例子Apache Storm 有一个叫做**分布式 RPC的功能可以将用户的一个查询分发到所有处理事件流上的节点。在这些节点上查询请求和事件会被交替的执行之后所有查询结果会被聚合后返回给用户参阅多分区的数据处理 也就是说,类 RPC 系统和流处理系统间在定位上有一些交叉。举个例子Apache Storm 有一个叫做分布式 RPC的功能可以将用户的一个查询分发到所有处理事件流上的节点。在这些节点上查询请求和事件会被交替的执行之后所有查询结果会被聚合后返回给用户参阅多分区的数据处理
当然,也可以使用 Actor 框架来进行流处理。但在系统节点宕机时,这些框架通常不对消息的交付有任何保证。因此,除非你实现额外的逻辑,否则这种方式通常不能够进行容错。 当然,也可以使用 Actor 框架来进行流处理。但在系统节点宕机时,这些框架通常不对消息的交付有任何保证。因此,除非你实现额外的逻辑,否则这种方式通常不能够进行容错。