数据流水线架构——从数据源到洞察

数据流水线架构,在一张交互式画布上讲清楚:源系统、变更数据捕获、采集、流处理与批处理、数据仓库,以及让回路闭合的数据消费。

数据流水线把数据从产生它的系统搬到使用它的地方:数据源喂给采集层,处理层做转换,存储层把它留住,看板和模型再把它变成决策。

数据流水线架构——从数据源到洞察

The interactive FlowJam canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.

How to read this visual

  • 把收集这一列从上往下读:数据源产生数据,采集把它搬走,队列给它做缓冲。
  • 转换这一列分成流处理和批处理——两条路径,在存储里汇到同一个终点。
  • 把供给这一列当作回报来读:存储同时喂给分析和机器学习,而两者又都喂回业务。

收集数据

“源系统——应用、数据库、日志、API”点出了每一个数据生产者,“变更数据捕获追踪新数据”则是一条现代流水线跟得上节奏的办法——盯着源数据库,把每一次变更都作为事件发出来,于是流水线是被持续喂养的。“消息队列为数据流做缓冲”是减震器:如果下游处理变慢,数据会排队等待,而不是被丢掉。

转换数据

处理这条泳道按速度分岔:“流处理器实时做转换”在事件到达时就处理它们,服务于低延迟的用法;而“批处理作业按计划周期做转换”承担沉重的历史数据关联和聚合,它更便宜,也更容易排查问题。两条路都汇进“数据仓库存放清洗并关联好的数据”——那份对一切的、单一而可查询的一致视图。

供给与闭合回路

“分析看板查询数据仓库”和“机器学习模型在这些数据上训练”是存下来的数据被消费的两种方式,而“洞察回流到业务中”是那条返回的回路——洞察改变一个决策,决策改变产品,产品又产生新的数据。正因为有这条回路,结尾才被画成一次返回,而不是一个终点:一条没有回路的流水线是成本,不是资产。

Key relationships and takeaways

  • 五条泳道就是流水线的解剖结构:数据源、采集、处理、存储、消费。
  • 流处理和批处理是同一条流水线上的两条路径,按延迟和成本来选。
  • 变更数据捕获让采集变成持续的,于是数据仓库跟住的是数据源,而不是每晚一次的全量导出。
  • 数据仓库是每一个消费方都要读的那份单一的一致视图。
  • 流水线的价值在于回到业务的那条回路——洞察必须改变决策。

When to use this visual

  • 在团队选型之前,先讲清楚一条数据流水线有哪些层,好让工具对得上角色。
  • 设计一条新流水线:这张画布指出了在哪里做流处理与批处理的取舍、在哪里做存储的取舍。
  • 审视一条已有的流水线——少了一个队列,或者没有变更数据捕获,都是这张图会一眼摆明的缺环。

运作方式

  1. 写出你真实的数据源

    用你实际的系统替换掉这些通用数据源——你的交易数据库、你的事件分析、你的 SaaS 导出——每个数据源一个方框。

  2. 选定你的处理路径

    在流处理和批处理两个方框上标注你各自真正在用的工具,并注明哪些事件走哪条路。

  3. 画出数据仓库的模式

    在存储方框上注明你的数据仓库和关键表,让这张图显示出清洗后的视图里到底有什么。

  4. 画上质量与监控关卡

    在处理与存储之间加上数据质量校验,并给整条流水线加一个监控方框,每一项都以一个明确的告警或隔离状态收尾。

常见问题

什么是数据流水线?

数据流水线是把数据从产生它的地方搬到使用它的地方的那套系统,途经采集、处理、存储和消费几个阶段。它的任务是把数据收集起来,让它变得一致、可查询,再把它供给使用它的看板、报表和模型——持续地供给,而不是靠脆弱的人工导出。

流处理和批处理有什么区别?

流处理在事件到达时就做转换,能给出秒级或分钟级的低延迟,代价是系统更复杂、更贵。批处理对累积下来的数据跑定时作业,结果要等上几个小时,但成本更低,也更容易排查问题。真实的流水线两者都跑:对时间敏感的数据走流处理,沉重的历史工作走批处理。

什么是变更数据捕获?

变更数据捕获(CDC)盯着一个源数据库,为每一次插入、更新或删除发出一个事件,于是下游系统几乎在变更发生的同时就知道了。它用一条持续的变更流取代了每晚一次的全量导出,这正是数据仓库能近乎实时地跟住数据源、而不是一天只跟一次的原因。

数据流水线为什么需要消息队列?

因为生产者和消费者跑的速度不一样。队列把两者解耦:生产者发出一个事件就继续往前走;而如果下游处理慢了下来,事件就在队列里等着,既不会被丢掉,也不会把生产者堵住。正是这种缓冲让流水线扛得住突发流量和变慢的环节,这也是图里把队列摆在采集紧后面的原因。

在 QueryChart(FlowJam)中编辑这张图解

把上面这张数据流水线画布原样打开成你自己的图表,把各阶段改成你自己的技术栈,再把你的数据流画上去。

在 QueryChart(FlowJam)中编辑这张图解

可视化图解中的更多内容