在微服务架构中使用断路器模式,在出现数据质量问题时,断路器会打开,防止低质量数据传播到下游进程。结果是报告中的低质量数据将在某个时间段内丢失,但如果存在,则保证肯定是正确的。本文描述了实施和部署断路器的细节,并分为三个部分:
- 数据管道基础现实
- 数据管道的断路器模式
- 在生产中实施断路器
数据管道基础现实
数据管道是一种逻辑抽象,表示将原始数据转换为观察分析所需的一系列数据转换。在我们的数据平台中,我们每天都有数千条数据管道运行。每个管道都从不同来源提取数据,并应用一系列ETL和分析查询,以报告,仪表板,ML模型,输出表的形式生成见解。这些见解既用于数据驱动的业务操作,也用于 - 产品客户体验。
我们在100多个关系数据库以及NoSQL存储中收集了4种类型的数据:
- 用户输入数据(UED):客户在使用产品时输入的数据
- 行为分析数据:捕获产品使用情况的点击流数据
- 企业数据:用于客户服务,计费等的后台系统
- 第三方数据:包括社交Feed,贷方文件,银行数据等
在数据管道中,数据质量问题在不同阶段引入。我们将问题分为三个部分:a)与源有关的问题; b)与摄取有关的问题; c)参照完整性。对于每个存储桶,我们遇到很多最常见问题,这些问题的根本原因是操作错误,逻辑错误,缺乏变更管理,数据模型不一致。
数据管道的断路器模式
电路断路器以主动管理电涌,否则电涌会过载并引起房屋着火。通过权衡电力供应,断路器可以防止潜在的火灾。断路器模式在微服务架构中也很流行 - 而不是让API等待缓慢或饱和的微服务,断路器主动跳过调用服务。最终结果是可预测的API响应时间,以及某些服务可能无法获得的权衡。解决微服务问题后,断路器关闭,服务可用。
数据管道的断路器遵循类似的模式。主动分析数据的质量 - 如果它低于阈值,而不是让管道工作继续并混合高质量数据和低质量数据,这时打开断路器,阻止低质量数据到达下游处理。因此,如果数据质量低,则会丢失,对于数据工程师,分析师,数据科学家和其他有见解的消费者而言,这是一个易于理解的约定。
它取代了根据具体情况手动验证结果的需要,在湖中摄取的数据在每小时或每日批次持续存放在一个集结区;分析每批次的数据质量 - 当检测到问题时,断路器打开,防止此批次数据到达下游处理,断路打开时,会提醒团队诊断问题,如果可以解决问题,则回填该批次并使其可用于下游处理。
在数据流水线断路器模式中,有两种状态:
- 断路器关闭:数据正在流经管道。
- 断路器开放:数据不流动,即发现问题,因此下游数据不可用
在数据平台中实现断路器
实施断路器需要实现3个核心功能:
- 跟踪数据沿袭:查找从源表到输出表,报告,ML模型的转换中涉及的所有表和作业。
- 配置文件数据管道:跟踪与数据管道关联的事件,统计信息和异常。分析分为操作和数据级别,如稍后所述。
- 控制断路器:根据分析发现的问题触发断路器
分析分为两个桶:
- 操作性能分析:重点是工作健康和数据结构健康。作业健康涉及跟踪执行相关的统计数据,如完成时间,开始时间等.Data Fabric健康专注于跟踪系统组件的事件和统计数据,即源数据库,摄取工具,调度框架,分析引擎,服务数据库,发布框架(如如Tableau,QlikView,SageMaker等)
- 数据分析:本文的重点是分析数据相关模式。
数据流水线断路器是一种使数据可用性与数据质量成比例的模式。通过定义硬和软警报如何控制断路器,它允许更改为数百个下游表提供数据的关键表的比例斜率。