3、工程分析平台架构:平台分层架构与核心组件
工程分析平台采用四层解耦架构,将数据接入、规则定义、校验执行与结果可视化分离,确保各层可独立扩展与维护。以下从分层逻辑与核心组件两个维度展开。
3.1 平台分层架构总览
平台自底向上划分为数据源层、规则引擎层、校验执行层与结果展示层,层间通过标准化接口通信,降低耦合度。
3.2 各层核心组件与职责
下表汇总了每层的关键组件及其在质量校验场景中的具体职责:
| 架构层 | 核心组件 | 职责说明 | 典型技术选型 |
|---|---|---|---|
| 数据源层 | 数据接入网关、元数据管理、采样器 | 统一接入多源异构数据,完成格式转换与字段映射,提供数据预览与采样能力 | Kafka Connect、Flume、DataX |
| 规则引擎层 | 规则编辑器、规则解析器、版本仓库、依赖图 | 支持可视化/DSL定义规则,解析为可执行计划,管理规则生命周期与依赖关系 | Drools、自研DSL、Git |
| 校验执行层 | 任务调度器、分布式计算引擎、异常检测器、结果收集器 | 按调度策略触发校验任务,利用分布式计算完成大规模数据扫描,检测异常并回写结果 | Apache Spark、Flink、Airflow |
| 结果展示层 | 仪表盘、告警服务、报告生成器、趋势分析器 | 实时展示校验结果,通过多维度下钻定位问题,生成周期性质量报告 | Grafana、Elasticsearch、ECharts |
3.3 数据源层:多源异构数据接入
数据源层是质量校验的第一道关口,负责将分散在不同系统中的数据统一接入平台。该层需要解决以下核心问题:
- 多协议适配:支持 Kafka(实时流)、Hive 分区表(批量)、MySQL Binlog(增量)、日志文件(文本)等多种接入方式。
- 元数据自动发现:从 Hive Metastore、Kafka Schema Registry 等元数据中心自动拉取字段定义与类型,减少人工配置。
- 数据采样与预览:在正式校验前提供小批量采样,帮助规则编写者验证字段值与规则逻辑。
工程经验:数据源层建议统一使用 Schema Registry 管理字段版本。当上游表结构变更时,平台可自动感知并触发规则兼容性检查,避免因字段缺失导致校验任务大面积失败。
3.4 规则引擎层:规则定义与编排
规则引擎层是平台的逻辑中枢,它将业务质量需求转化为机器可执行的校验规则。核心组件包括:
- 规则编辑器:提供可视化拖拽与 DSL 两种模式。DSL 示例:
RULE "订单金额非负校验"
WHEN
source: orders
condition: amount < 0
THEN
severity: ERROR
action: 写入异常表 + 触发告警
END
- 规则解析器:将 DSL 或图形化规则解析为抽象语法树(AST),再转换为 Spark/Flink 算子逻辑。
- 版本仓库:基于 Git 存储每条规则的变更历史,支持回滚与 diff 对比。
- 依赖图:当规则之间存在上下游依赖(如先校验数据完整性,再校验业务逻辑)时,自动构建 DAG 确保执行顺序。
3.5 校验执行层:分布式校验与异常检测
校验执行层是平台的计算核心,负责将规则引擎生成的执行计划分发到集群中运行。该层的关键设计要点:
| 组件 | 功能 | 故障排查关注点 |
|---|---|---|
| 任务调度器 | 基于 Cron 或事件触发,管理校验任务的启停与重试 | 调度延迟、任务堆积、死锁 |
| 分布式计算引擎 | 执行数据扫描、聚合、比对等计算密集型操作 | 数据倾斜、OOM、Shuffle 异常 |
| 异常检测器 | 基于阈值、波动率或机器学习模型识别异常记录 | 误报率、漏报率、检测延迟 |
| 结果收集器 | 将校验结果(通过/失败/异常详情)写入结果表或消息队列 | 写入性能、数据丢失、重复写入 |
常见故障:校验执行层最容易出现 数据倾斜 问题。例如按某个低基数字段(如状态码)分组校验时,某个分组数据量远超其他分组,导致单个 Task 长时间运行甚至 OOM。解决方案包括:采用 Salting 技术打散 Key、调整并行度、或改用 Bucket 分区策略。
3.6 结果展示层:可视化与告警
结果展示层将校验执行层产出的原始结果转化为可读、可追踪、可决策的信息。核心能力包括:
- 实时仪表盘:展示当日校验总量、通过率、严重异常分布、Top 问题表等关键指标。
- 告警中心:支持多级告警(邮件、钉钉、短信),并关联规则版本与执行日志,便于快速定位根因。
- 质量报告:按周/月自动生成 PDF 或 HTML 报告,包含趋势图、环比变化、改进建议。
- 趋势分析:通过时间序列分析,识别质量指标的周期性波动或持续恶化趋势。
3.7 架构设计要点总结
架构设计要点:
- 层间解耦:每层通过 API 或消息队列通信,任一层的升级或故障不影响其他层。
- 可观测性:每层暴露核心指标(数据接入延迟、规则解析耗时、任务执行时长、结果写入 QPS),便于全链路监控。
- 弹性伸缩:校验执行层基于 Spark/Flink 的弹性资源管理,可根据数据量自动扩缩容。
- 故障隔离:单条规则执行失败不影响其他规则,异常检测器采用熔断机制防止级联故障。