节省60个开发工时,携程远离在线集成数据仓库的实施

小夏 社会 更新 2024-02-22

本文主要介绍携程旅行团队数据仓库建设的实施与实践,将从业务痛点、业务目标、项目架构、项目建设等维度进行。

一、业务痛点

随着对实时数据需求的不断增加,离线数据仓库暴露出的业务痛点越来越多,例如:

烟囱开发模式的实时需求。

中间数据的可重用性较差。

与数据开发分离。

数据生产服务周期长。

实时表任务杂乱无章且难以管理。

缺少实时谱系、基本信息、监控等。

实时数据:没有质量监控工具。

实时任务:运维门槛高,质量体系薄弱。

这种典型问题会给我们人类的效率、素质、管理等带来极大的考验,亟需一个系统的平台来解决。

2. 业务目标

围绕已知业务痛点,依托公司现有的计算资源、存储资源、离线数仓标准规范等,我们的目标是构建一个在人力、质量、管理层面的体系。 如下图所示:

1.人类效率水平

实现数据开发解决方案的标准化,如标准化数据处理、兼容性、算力集成等。

分钟级数据部署,实现BI学生级数据接口注册、发布、调试等可视化操作。

2.质量水平

数据内容DQC,如内容是否正确、不完整、及时、是否符合**等。

数据任务预警,如有无延迟、有无背压、吞吐量如何、系统资源是否充足等。

3.管理层

可视化管理平台,如端到端血缘、数据表任务、质量覆盖率等基础信息。

规范一体化数据仓库的全流程,如数据建模规范、数据质量规范、数据治理规范、存储选型规范等。

三、项目结构

项目架构如下,系统主要包括:原始数据、数据开发、数据服务、数据质量、数据管理等模块,提供秒级实时数据处理和分钟级数据服务部署,用于实时数据开发学生和后端数据服务开发。

不同数据的数据首先由标准化的ETL组件进行标准化,数据由流量工具进行预处理,采用流批融合工具和业务数据处理模块进行分层域构建,产生的数据由数据服务模块直接部署进行数据API部署, 最后被业务应用使用,整个环节都会有相应的质量和运维保障体系。

四、项目建设

1.数据开发

本模块主要包括数据预处理工具和数据开发方案选择。

1)流量**工具

由于入口数量多,人流量大,主要问题如下:

可能有多种方法可以解析同一维度中的数据**;

使用的埋地数据占总量的20%左右,资源消耗严重,每个下游都会重复操作;

新增埋点后,需要对数据处理进行开发和干预(极端情况下,所有用户都参与其中);

如下图所示,流量工具动态接入多个数据源,数据处理简单,标准化后将有效数据写入下游,可以解决上述问题。

2) 业务数据处理解决方案的演变

选项 1 - 简单融合来自 ** 的数据

背景

刚开始的时候,业务需求比较简单,比如计算用户历史的实时订单量,汇总用户历史购买的景点信息等。 这些简单的要求可以抽象为离线数据和实时数据的简单聚合,如数值加减乘除、字符追加、去重和汇总等。

溶液

如下图所示,数据提供者提供标准化的T+1和实时数据访问; 数据处理:T+1和实时数据融合; 一致性检查; 动态规则引擎处理等; 数据存储:聚合数据的水平扩展; 标签映射等。

方案 2 - 支持 SQL

背景

尽管选项 1 具有以下优点:

分层简单且对时间敏感。

规则配置速度快,可以处理大量复杂的 UDF

规则引擎等

兼容整个 J**A 生态系统。

但也有明显的缺点:

BI SQL开发人员基本上无法干预并依赖开发。

在很多SQL场景下,使用J**A的开发成本高,稳定性差。

没有有效的数据分层。

过程数据基本不可用,如果要保存过程数据,需要重复计算,浪费计算资源。

溶液

如下图所示,Kafka 承载数据分层功能,Flink SQL 计算引擎,OLAP 承载数据存储和分层查询,完成了数据仓库系统的典型分层构建。

但是,由于 Kafka 和 OLAP 存储引擎是两个实体,因此可能会存在数据不一致的情况,例如 Kafka 正常,数据库异常,这会导致中间分层数据异常,但最终结果是正常的。 为了解决上述问题,如下图所示,采用传统数据库使用的binlog模式,Kafka数据很大程度上依赖于DB的数据变化,因此最终结果强烈依赖于中间的分层结果,无法避免组件BIG导致的数据不一致, 但大多数场景基本上都可用。

方案 3

背景

但是,选项 2 具有以下优点:

SQL格式。 自然分层查询。

但也有明显的缺点:

数据不一致。

插入binlog时没有问题,但是更新删除不容易,更新时需要大量的去重操作,SQL非常不友好。

对于长期的数据聚合,一些算子,如max和min,具有较大的flink状态,容易出现不稳定。

还要考虑 Kafka 数据乱序导致的数据覆盖问题。

溶液

如下图所示,借用存储引擎的算力,以 Kafka 的二进制日志作为数据计算的触发逻辑,使用 Flink udf 查询数据库进行直接连接。

优势:

SQL格式。 自然分层查询。

数据是一致的。 flink 状态很小。

它可以支持长期持久的数据聚合。

您无需担心无序的二进制日志和更新引起的问题。

弊:

并发是不能承载的,很大程度上取决于OLAP引擎的性能,所以当数据源在数据源中时,我们会限制窗口的速率或水平扩容数据库。

sink 和 drawdown 流的组合被打断了,比如:group by,其实就是一个无脑的upsert,UDF的聚合无法取代Flink的原生聚合;

每个解决方案都有自己的场景,您需要根据不同的业务场景和时延需求来选择解决方案。 目前,我们 86% 的场景可以使用解决方案 3 进行,并且由于 Flink 116、在各类集成特性的加持下,基本可以覆盖后期的所有场景。

2.数据服务

该模块提供数据同步、数据存储、数据查询、数据服务等能力,可在简单场景下实现分钟级数据服务部署能力,节省90%的开发工时。 实现离线数据DQC强依赖、工程端DQC异常、客户端>接口层资源隔离、限流、断路器、全链路沿袭(客户端-服务器端表Hive沿袭)管理等,提供部署各种性能需求接口的能力,按需提供运维保障能力。

架构如下:

3.数据质量

该模块主要分为数据内容质量和数据任务质量。

1) 数据内容

正确性、及时性、稳定性

这部分又分为数据操作变更、数据内容一致性、数据读取一致性、数据正确性和及时性等。 如下图所示,如果数据异常,可以将数据录入公司的HickWall报警中心,并根据预警规则生成报警。 数据内容:会有定时任务,执行用户自定义的SQL语句,将数据写入告警平台,可实现秒级、分钟级预警。

读取一致性

如下图所示,如果在数据读取过程中存在跨表联合查询,如果其中一个表出现问题,大多数情况下不会显示错误的数据,只会显示历史记录中的正确数据,恢复表后会显示所有数据。

例如,如果表2中的数据异常,最近2小时内没有数据,则当数据暴露给用户时,业务需要展示2小时前的数据,异常数据会给出前端异常提醒。

一致性

关于离线和实时数据一致性。 如下图所示,我们用一种简单的方法,直接将实时数据同步到Hudi,使用Hudi对照离线和实时数据进入告警平台。

2) 数据任务

上游任务

依托公司定制的预警埋点、告警中台、计算平台等工具,对上游消息队列是否延迟、音量是否异常等关键指标进行监控预警。

当前任务

您可以对数据处理任务的吞吐量、时延、反压、资源等关键指标进行监控和预警,防止数据处理任务出现长期异常。

4.数据管理

该模块可以串联数据处理、质量等模块,并提供可视化管理平台,如:表沿袭、DQC配置、任务状态、监控等基本信息。

下图显示了每个数据表中上下游数据生产任务的血缘关系。

数据表的质量信息详情如下图所示。

下图总结了各种UDF表的基本信息。

第5章 展望

目前系统基本能够承接团队大部分数据开发需求,后期我们还会在可靠性、稳定性、易用性等方面继续探索,如完善整个数据治理体系、构建数据自动恢复工具、排查运维智能组件、探索服务分析一体化等。

作者丨成瑞**丨***携程科技 (ID: 携程科技) DBAPLUS社区欢迎技术人员投稿,投稿邮箱editor@dbapluscn

相似文章

    大港油田60年勘探开发工作回顾

    六十年的辛勤耕耘诚信为本,创新未来 大港油田年勘探开发工作回顾 如果说大港油田近年的勘探开发工作是一部辉煌的石油交响曲史诗,那么自年月日以来,华北石油勘探指挥部钻出第一口探井,声音震动森林,开启了渤海湾地区勘探开发的序幕。从年到年,大港油田走过了整整一年,在中国共产党的领导下,大港油田人始终高唱 我...

    如何消除浪费,实现节约?

    要杜绝浪费,可以从以下几个方面入手 .节约食物 正确计划饮食,避免过度购买可能过期或变质的食物。贮存食物时,应使用密闭容器,合理分割食物,减少食物浪费。.减少能源消耗 关掉不必要的电器和电灯,明智地使用空调和暖气。选择具能源效益的电器和灯具,以减少能源浪费。.节约用水 修理漏水的水龙头和水管,明智地...

    如何节约用水?

    节约用水是现代社会面临的重要课题。随着人口的增长和工业化,对水的需求不断增加,而可用的水资源相对有限。因此,如何有效节约用水 保护和合理利用水资源成为全球关注的焦点。在本文中,我们将介绍一些节约用水的方法和建议。.提高用水效率 提高用水效率是节约用水的关键。在家庭 工业和农业中,我们可以通过改进用水...

    “情人节”约会初恋

    月日晚,我的好朋友,四川农村青年新闻工作坊的学生,澄清并分享了他在月日情人节晚上写的 情人节约会初恋 希望我能给出我的意见。我觉得这是一个非常有味道的初恋故事,我和读者分享一下 情人节 约会初恋作者清晰 农历正月初四,我从居住地出发,参加 四川农村青年新闻工作坊成立周年暨郫都区风收集活动 目的地是初...

    节俭是经营家庭的方式

    勤俭节约是中华民族的传统美德,也是家族办家之道的核心原则。在家庭生活中,节俭不仅是一种生活方式,更是一种精神追求。节俭节约有助于合理利用家庭资源。通过减少浪费和不必要的支出,家庭可以更有效地管理财务,确保经济稳定和可持续性。勤奋和节俭有助于培养儿童良好的道德品质。在家庭教育中,家长要以身作则,引导孩...