DDIA 阅读笔记第 11 章:流处理
摘要
本章讨论了流处理,是介于在线系统和离线批处理间的系统,通常基于消息代理实现。流处理可以用于捕获数据变更(Change Data Capture,CDC),例如消费数据库的变更日志,达成近似实时地数据同步的效果。
本章讨论了流处理,是介于在线系统和离线批处理间的系统,通常基于消息代理实现。流处理可以用于捕获数据变更(Change Data Capture,CDC),例如消费数据库的变更日志,达成近似实时地数据同步的效果。
本章讨论了离线批处理系统,作为之前讨论的 “请求 - 响应” 式在线系统的补充。相较于在线系统,批处理系统对延迟不敏感,通常要处理海量的数据;吞吐量是衡量性能的重要指标。MapReduce
就是经典的批处理系统, 基于 map,reduce
两个用户定义的函数,进行分布式地批处理,具有易于理解、安全重试等优点。但是,排序操作的耗时、中间状态的冗余存储、对数据流支持不好,也是难以避免的问题。 数据流引擎,例如 Flink
,则支持以算子的维度构建 DAG 图,实现类似 unix
管道的任务处理。
分布式系统中,任何可能出错的事情都会出错。不可靠的网络、不同步的时钟,这些麻烦使得分布式系统的软件需要处理更多棘手的问题。本章讨论了这些问题和他们能够避免的程度。