滴滴数据服务体系建设实践

news2024/11/15 2:17:43

什么是数据服务化

大数据开发的主要流程分为数据集成、数据开发、数据生产和数据回流四个阶段。数据集成打通了业务系统数据进入大数据环境的通道,通常包含周期性导入离线表、实时采集并清洗导入离线表和实时写入对应数据源三种方式,当前滴滴内部同步中心平台已经提供了MySQL、Oracle、MongoDB、Publiclog等多种数据源的数据采集能力;数据开发/生产,用户可以构建实时、离线两种数据仓库,并基于SQL、Native、Shell等多种任务方式下的数据建模;数据回流通过将离线数据导入OLAP、RDBMS等,以提升访问性能,下游服务直接访问该数据源进行数据分析、数据可视化。

滴滴内部的数据梦工厂,就是提供一站式数据开发、生产的解决方案,核心关注的是数据开发、生产环节中的效率、安全和稳定性。

c6def9231c2cef4a42c02284e7f2c233.png

数据开发流程

为了体系地将数据交付用户,我们构建的是一站式的数据消费平台,包含了数易、数据智能问答机器人、异动分析等通用数据消费产品,和横向沉淀的内容产品北极星、集团展厅。一站式消费平台需要通过查询结构化、标准化的数据来提供可视化、分析能力。从数据消费产品的技术架构中,对查询性能有一定要求,会根据查询的方式回流到合适的多维分析存储引擎,最为常见的是MySQL、ClickHouse、Druid和StarRocks。因此,对多维分析存储引擎的查询收口、扩展计算能力扩展、性能优化实施和查询稳定性保障等,对于消费类数据产品来说都是公共、通用能力。

此外,对于其他个性化数据产品、运营平台、B端/C端产品来说,都是亟需的数据访问能力。这也是数据中台建设,对于数据访问能力统一化的核心问题:数据服务化能力。

对于该项能力建设,我们也不是一蹴而就的,主要分为三个阶段。

45afc15bb52e16dbed6aad49f1a5b3df.png

数据消费产品技术架构示意

阶段一:

建设同步中心数据回流能力

2019年滴滴发起了数据体系2.0建设,作为核心产出的数据梦工厂,其第一阶段目标是建设一站式的数据开发、生产平台,关键节点以同步中心的一站式建设完毕为里程碑。同步中心通过自动化流程的建设,结束了通过提工单的方式,来人工构建数据源间同步任务的历史,其核心产出是数据进入Hive链路的自主管理能力建设。另外,我们新建了Hive回流到MySQL、ClickHouse、Druid、Hbase和ES链路,使得数据回流完成平台化建设。

a4b1fd6a40f73f6743e35db21dc1ec85.png

基于数据回流实现的数据服务化能力,使得服务分、北极星和数易等相关场景得以系统化覆盖。核心解决了业务直接访问大数据环境的性能问题,以数易为例,通过数据回流到ClickHouse,使数据查询性能P90从5s下降到2s以内,这样的性能提升使数易的用户体验有质的提升。这个阶段的数据产品的基本架构,尤其是查询侧,类似于下图所示,都抽象出来了数据回流和取数逻辑两个模块。

59452a1cac73f5ffdd91c23c18d4bd8c.png

数据回流实现数据导出到多维分析存储引擎,并沉淀有任务的管理和运维能力,这些数据产品均深度打通了数据梦工厂,基于数据梦工厂强大的离线任务运维能力保障数据的产出。取数逻辑维护着具体的查询逻辑,除了北极星,其他两款产品均衍生出了基于查询抽象的中间件,例如InSight的QE(QueryEngine)、数易的查询中心。数据回流和取数逻辑,是数据产品的核心能力,也是建设成本极高的模块。所以,这个阶段,类似于数据智能问答机器人、数据门户、复杂表格等产品,采用了基于数易数据集的查询、加速能力,以快速验证产品。

阶段二:

建设数链平台,统一数据服务化

阶段一提供了数据回流在线存储能力,提升了相关系统调用性能,为数据产品发展做出了阶段性贡献。随着业务发展,数据表数量提升,取数逻辑隔离沉淀在不同系统问题凸显出来,管理成本不断提升。为了提升取数性能,除了加速到多维分析存储引擎之外,还需要对数据进行高度聚合,构建数据量较少的APP层。APP层表和业务需求有着强相关性,因此,需求的变化常常导致需要变更APP表支持业务。阶段一中,取数逻辑场景散落在不同的系统内部,APP表变更将是比较大的工作量,包含了不同看板的数据源切换,看板质量的再次验收,过程十分繁杂。

数据回流和取数逻辑在不同的数据产品内进行重复建设,也增加了数据产品构建的效率。为了提升效率,内部产品基本都依赖数易数据集进行建设,例如数据智能问答机器人、复杂表格。

但这不是最优的解决方案,问题主要体现在:

  • 基于数易数据集,加速、限流、隔离等措施建设都非常复杂、庞杂。尤其,数易数据集加速方式分成一级的SQL任务加速、二级ClickHouse加速,形式固化。

  • 数易的查询都是基于MPP建设,对于相对高的并发查询、点查很难支撑。

  • 运维保障能力较弱,加速任务都由平台代持,用户感知较弱,且无法运维。

  • 数易数据集是数易的强依赖,剥离建设服务化能力难度较大,当时对于数易来说也不是第一优先级考虑的事情。

综上所述,构建一个统一的数据服务化平台,有着较强的业务收益。从2021年初开始,数链平台应运而生,其基本思路在于对加速链路、查询逻辑进行统一管理,并提供统一、完备的查询网关。

96bdd4dc7cb05a4645a75bbf71c66ca3.png

数链的基本能力在于:

  • 多样化的数据源:支持ES、MySQL、ClickHouse、Hbase、Druid等数据源的访问;

  • 多场景的数据访问:支持key/value键值对的高并发查询、支持复杂的多维分析和支持数据下载能力;

  • 统一的接入标准:统一的访问网关、统一数据访问协议、统一的数据运维和统一的API管理能力;

  • 数据安全管控:支持对敏感数据访问的审计,数据下载外发管控能力。

数链平台构建之后,数据API构建时间从天级别下降到分钟级别,实现了白屏化API建设能力。当前,数链的API数量已经超过4000,周活API数量也超过了1600,服务了200多个应用,覆盖了所有的业务线,达成既定建设目标。

阶段三:

建设数链标准指标服务化

通过阶段二的平台建设,收益的数据产品主要是监控、看板、门户、运营系统和安全相关系统。这些系统主要看中数链构建API的效率,API业务逻辑的管理能力和API的运维能力。但是,数易、北极星等早期建设,有相关能力闭环的产品,很难找到接入数链的突破口,或者说收益很难看到。

当前,大数据中指标交付,长期通过Hive表和沉淀在指标管理工具的指标描述来交付,也就是说,数仓会提供给业务方一张Hive表,和描述性的取值逻辑。业务方通过Hive表构建看板、临时取数时,需要反复校验取数逻辑,效率比较低下。同时,同一个指标常常在北极星、数易等产品展示,最为尴尬的是常常出现数值的不一致,也就是指标消费的一致性问题凸显。

指标管理工具是根据指标管理方法论,构建的指标、维度元数据管理系统。为了录入指标、维度,数据团队花费非常大的成本。指标管理工具仅仅提供指标录入和检索能力,指标规范性建设只能依赖于自上而下的管理,无法有效自运转。对于指标一致性,只能是确保指标来自一个来源,并且交付方式不能是Hive表,而是指标本身,指标需要提供直接消费能力。

第二阶段服务化建设的困境,北极星、数易指标消费的二义性问题,以及指标管理工具的本身困局,标准指标服务化建设应运而生。基本思路如图所示,一个是指标管理工具提供模型管理,把指标和物理表进行关联,另外,就是数链提供统一的消费网关,让数易、北极星等数据产品打通这个消费渠道。

1eed0bead0ee6f45a4e008eed3fd7663.png

标准指标服务化建设,元数据管理需要扩展指标、维度的表达能力,并通过逻辑模型去关联指标、维度和具体物理表的具体字段。为了简化下游消费逻辑,标准指标服务化需要提供一定的自动化取数逻辑能力。通常一个指标会在不同的物理表中实现,通过不同物理表间指标实现的一致性校验,有效避免指标的二义性。

元数据管理

标准指标服务化最为关键的元数据:指标、维度和逻辑模型。下面依次进行介绍。

指标

指标管理方法论主要介绍为了提升指标表达语义能力,引入的计算指标和复合指标。派生指标是指物理表(Hive/Starrocks/ClickHouse)开发后可以直接对外服务的指标,也就是一定物化在物理表上对应字段的指标。计算指标是根据已注册派生指标计算生成的指标,可以不物化到物理表上对应字段的指标,当前计算方式只支持加减乘除四则运算。例如,应答后取消率=应答后取消订单量/当日应答订单量。复合指标是指已注册派生复合维度生成的指标,可以不物化到物理表上对应字段的指标,例如,“网花出GMV”是根据指标“含openapi含扫码付GMV”,复合维度“订单聚合业务线”,维值为“网+出+花”生成的。如下图所示,复合指标和计算指标可以相互嵌套,当前复合指标在嵌套链中最多只能出现一次。

d92be30617d13f1e18b01b8d93b636e0.png

纬度

纬度类型,当前构建了四种:

  • 维表维度:独立的维表,维表会有唯一主键,以及其他属性信息。维表维度可以构建数仓的星形模型。如果还有存在外键,则可以构建多层维表依赖的雪花模型。例如,城市维表维度 whole_dw.dim_city。

  • 枚举维度:key/value 键值对,键值对集中管理。例如:性别维度,对应的键值对男(M)/女(F)。

  • 退化维度:维度逻辑无法集中管理,在不同物理表有着不同的实现,但表示的是同一个维度。例如,北极星的业务线维度,不同板块下的业务线id转换到北极星的业务线id有着不一样的转换逻辑,需要在具体实现中确定。

  • 衍生维度:与退化维度不一样的情况,维度逻辑可以集中化管理,该逻辑是一段处理代码。

逻辑模型

逻辑模型在不同地方有不同的解读,指标管理工具中的逻辑模型是指标、维度和物理表绑定的载体。逻辑模型可以绑定派生指标、计算指标、复合指标三种指标,也可以绑定维表维度、枚举维度、衍生维度和退化维度四种维度。绑定到逻辑模型的指标、维度,可以直接绑定到物理表的字段,也可以绑定到根据物理表字段构建的计算字段。计算指标、复合指标还能根据计算逻辑或者复合逻辑,非物化的绑定。逻辑模型可以绑定多个指标、多个维度,反过来,一个指标、维度可以绑定到多个逻辑模型中。更通俗的说,一个指标的多种实现方式,是通过逻辑模型指定的。

cb464788647266ce948eded484549272.png

逻辑模型在指定物理表的时候,还对物理表的存储引擎、物理表的数据布局、数仓层级进行了指定。当前数链支持Hive、SR、ClickHouse三种存储引擎;数据布局支持一般APP表、Cube表和GroupingSets表;数仓层级支持APP、DM、DWS和DWD。

取数逻辑自动化

数链建设标准指标服务化中,取数逻辑自动化,一方面能实现集中管理(Single Source of Truth),另一方面也是提效过程。取数逻辑自动化,在标准指标服务化中主要体现在:

支持通过指标、维度取数,用户只需要提供所需要的指标和维度,通过取数接口获取数据。上面逻辑模型中提到,指标与逻辑模型是一对多关系。自动化的取数逻辑,会根据所需的指标、维度、分区范围,以及性能最佳的取数方式去选择合适的逻辑模型。需要重点指出的是,当计算指标依赖的派生指标只能通过不同的模型获取时,该取数过程支持通过联邦查询完成。

支持多种数据布局的表,当前已经支持一般APP表、Cube表和GroupingSets表。在取数中,已经屏蔽了不同数据布局的取数逻辑,用户无需关心原先表的数据布局方式。

支持多样的数仓建模模型,数仓建模规范产出中,可以是单例、星形和雪花模型。雪花和星形模型,自动化取数逻辑已经可以通过自动关联所需的维表,实现维表维度中的不同维度属性上卷等复杂的取数逻辑。

支持日、周、月、季粒度的上卷,在之前不同时间粒度的数据,只能通过开发不同的表实现。在查询性能有保障的情况下,现在可以实现时间粒度的上卷能力。

1bf284f3425dea430f264b8f2356b127.png

一致性校验

除了通过取数逻辑自动化实现取数提效之外,指标一致性也是数链建设标准指标服务化的核心出发点。指标一致性,一方面是通过统一的消费接口,另一方面,则是根据指标的实际现状,进行被动和自动的校验。

被动指标校验,由用户在平台配置所需要的进行校验的指标,如下图所示,像“最近一天全集团GMV”一样,可能在多个逻辑模型中实现。因此,校验逻辑是在几个逻辑模型产出后,进行一次周期性的校验。还有一种情况则是,“最近一天全集团GMV”,可以通过“最近一天网约车GMV”+“最近一天两轮车GMV”+“最近一天货运GMV”实现。因此,如下图所示,检验逻辑可以是左侧的逻辑模型_1和右侧的逻辑模型_1‘、逻辑模型_2’、逻辑模型_3‘产出后,进行一次周期性的校验。

15d95f2bd7986a2059a8a338d9357d3f.png

自动指标检验,检验的逻辑跟被动指标校验的区别在于,模型拆解方式由系统自动生成,另外,可以进行校验的指标也由系统筛选出来。

接入&查询流程

当下接入数链标准指标服务化的服务有北极星、数易和InSight,这三个产品也是滴滴最核心的数据产品。标准指标服务化在打通这三个产品的时候,都具备不同的挑战,具体会在其他同学分享的文章进行详述。这里只简单介绍下数据产品接入、查询的基本流程。

通常流程中,数据BP将会根据指标管理工具依次录入指标、维度,数据开发同学依据不同的数据架构方式构建数仓,并创建逻辑模型,和指标、维度进行关联绑定。管理好的元数据,会被实时同步到数链。

数易、北极星、InSight通过元数据接口,对报表、看板进行构建。发起数据查询时,请求将发送到数链,并经过模型筛选、优化,生成最终的执行SQL,查询的数据再返回数据产品侧。

fd1fbcc9cd5a6a58e33f866ef8a295d9.png

数据服务体系整体架构

数链平台旨在打造一站式规范、高效、稳定和安全的数据服务化平台。当前服务的业务场景主要分为本地数据服务化、离线数据服务化、特征服务化和标准指标服务化。数链平台分为网关层和引擎层。网关实现的是统一的入口,并提供了鉴权、限流、缓存、路由、监控等能力。引擎层将实现场景分成了key/value键值对场景、多维分析场景和标准指标服务化场景。key/value键值对场景主要服务特征服务化,即牛盾、地图特征等业务场景。多维分析场景,主要服务于本地数据服务化和离线数据服务化,即Horus、九霄等业务场景。key/value键值对场景、多维分析场景是阶段二的核心能力,标准指标服务化场景则是阶段三的核心能力。

为了支撑多样、复杂的数据查询诉求,我们还建设了统一的查询中间件:DiQuery。DiQuery依托于MPP的强大查询能力,构建了统一的查询能力,服务于数链、数易等数据产品。DiQuery除了支持单表查询能力之外,还支持了联邦查询、LOD复杂函数查询能力。DiQuery支持同环比、四周均值等扩展函数,并支持在此基础上的上卷能力。

a004180e632d51f830ec66ec5968f91e.png

总结与展望

滴滴数据服务体系的发展,经历了原始的数据回流任务方式、统一数据服务化平台建设、标准指标服务化建设,一步步在建设更好的数据服务体系。标准指标服务化建设,是今年的重头戏,在数仓研发、产品和平台研发的鼎力协作中高速发展。

现在的数据服务体系,解耦了数据生产和数据消费的关系。接下来,需要推进数据生产的标准化,进一步解决指标一致性问题,提升数仓建设效率,并通过指标视角提升数据质量等等。标准指标服务化,将是一场一步步推进的数据平台重要演化,并在业界已经慢慢拉开帷幕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/824325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql入门基础-2

Dml语句 对数据的增删改查 关键字 Insert增 Update删 Delete改 添加数据 给指定字段添加数据 Insert into 表明 (字段名1,字段名2) values(值1,值2); 给全部字段添加数据--(根据位置对应添加到字段下) Insert into 表名 values…

24考研数据结构-树与二叉树的基本概念

目录 第五章:树5.1树的基本概念5.1.1树的定义5.1.2 基本术语5.1.3 树的性质 5.2二叉树的概念5.2.1 二叉树的定义与特性5.2.2 几种特殊的二叉树5.2.3 二叉树的性质5.2.4 完全二叉树的性质5.2.5 二叉树的存储结构1. 顺序存储重要的基本操作非完全二叉树2. 链式存储逆向…

Flowable-子流程-事件子流程

目录 定义图形标记XML内容使用示例视频教程 定义 事件子流程是 BPMN 2.0 中加入的新元素,它是指通过事件触发的子流程,可以存在于在流程 级别,或者任何子流程级别。和内嵌子流程类似,把一系列的活动归结到一起处理,不…

vue: dev-tools控制台不显示问题

安装好dev-tools 导致控制台不显示的原因&#xff1a; 使用的vue压缩版本 vue.min.js。配置问题导致 1.查看public/index.html中引用的vue是否为压缩版本&#xff08;vue.min.js&#xff09;。 需要把压缩版换成vue.js <% if (process.env.NODE_ENV production) { %> &…

C语言中char、short、int、long各占多少字节

1byte 8bit 一个字节占8个二进制位 windows操作系统&#xff0c;32位机中&#xff0c; char&#xff1a; 1个字节 short&#xff1a; 2个字节 int&#xff1a; 4个字节 long&#xff1a; 4个字节 以下是windows操作系统&#xff0c;32位机下的代码测试结果&#xff08;3…

嵌入式高星github项目仓库

awesome-embedded soft-and-hard freemodbus

C# 外观模式

概述 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性&#xff0c;使得客户端可以通过简单的接口与子系统进行交互。 外观模式定义了一个高层…

计算机体系结构知识点大全

计算机体系结构知识点大全 计算机体系结构Chapter-1&#xff1a;计算机系统结构的基本概念Chapter-2&#xff1a;指令系统Chapter-3&#xff1a;流水线技术Chapter-4&#xff1a;存储层次Chapter-5&#xff1a;输入输出系统Chapter-6&#xff1a;多处理机Chapter-7&#xff1a;…

EXCEL,查询多条件数字/文本内容的多方法总结

目录 1 问题&#xff1a;如何根据多条件查询到想要的内容 2 方法1&#xff1a; sumif() 和sumifs() 只适合查找数字&#xff0c;不适合查找文本字符串类型的内容 3 使用lookup(1,0/(条件1*条件2*....),结果查询区域) 的方法 4 vlookup()if()数组公式 5 使用 index()match…

STM32按键控制LED灯-HAL库

前言 空窗了一年&#xff0c;重头再来点个灯吧&#xff0c;本篇文章将主要给大家讲解按键点灯 一、原理图设计 LED0-LED2 --------> PA0-PA2引脚 KEY1 ---------> PA3引脚 二、CubeMX的设置 LED选择GPIO一次将PA0、PA1、PA2设置为GPIO_Output&#xff0c;输出电平为…

向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录

1、注册https://issues.sonatype.org/账号 下面就代表注册好了&#xff0c;同时提交的工单也通过了 2、这里主要是goupId 需要进行认证&#xff0c;需要到域名注册商近一个txt的解析&#xff0c;以便确保这个是你的 通过下面来验证你的域名信息&#xff0c;这里主要是上面的工…

Permute 3 for mac音视频格式转换

Permute是一款Mac平台上的媒体格式转换软件&#xff0c;由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式&#xff0c;并提供了一些常用工具以便于用户进行编辑和处理。 Permute的主要特点包括&#xff1a; - 支持大量格式&#xff1a;支…

工程监测仪器振弦传感器信号转换器(VTI104_DIN)

工程监测仪器振弦传感器信号转换器&#xff08;VTI104_DIN&#xff09; 振弦传感器信号转换器&#xff0c;简称VTI104_DIN&#xff0c;是一种用于转换振弦传感器信号的电子设备。该设备可以将振弦传感器产生的模拟信号转换成标准的电压或电流输出&#xff0c;从而使其可以连接…

将网盘挂载到本地保姆级教程

视频链接&#xff1a;https://www.bilibili.com/video/BV1SA411B7qc Clouddrive2&#xff1a;是一款非常实用的国内网盘服务挂载应用。它支持多种国内知名网盘服务&#xff0c;包括阿里云盘、115云盘、天翼云盘等。通过CloudDrive 2&#xff0c;你可以将这些网盘服务挂载到你的…

中级课程——弱口令(认证崩溃)

文章目录 什么是弱口令密码生成器分类暴力破解万能密码测试环境工具 什么是弱口令 密码生成器 分类 暴力破解 万能密码 or true --测试环境 工具 九头蛇&#xff0c;超级弱口令爆破工具&#xff0c;bp&#xff0c;

Redis的键空间监听功能

文章目录 Redis 键空间通知一、keyspace介绍二、事件通知配置三、不同命令生成的事件四、客户端测试五、Springboot整合Redis键空间监听5.1 方式一5.2 方式二 Redis 键空间通知 一、keyspace介绍 keyspace&#xff08;键空间通知&#xff09;针对指定key发生的一切改动&#…

香港三维模型:基于GIS数据的精确三维城市模型及其周边2023年

基于GIS数据的精确三维城市模型及其周边2023年 包含的文件&#xff1a; 满城&#xff1a;15公里 信息&#xff1a; 仅在影院4D中设置基本卫星纹理 包含卫星/地图纹理 影院制作4d&#xff0c;可在标准渲染器中进行渲染 漫步建筑、树木&#xff08;mograph cloner&#xff…

【无标题】JSP--Java的服务器页面

jsp是什么&#xff1f; jsp的全称是Java server pages,翻译过来就是java的服务器页面。 jsp有什么作用&#xff1f; jsp的主要作用是代替Servlet程序回传html页面的数据&#xff0c;因为Servlet程序回传html页面数据是一件非常繁琐的事情&#xff0c;开发成本和维护成本都非常高…

虹科活动 | 走进宇通客车-汽车新供应链技术展精彩回顾

引言 7月27日&#xff0c;走进宇通客车-汽车新供应链技术展于宇通研发中心成功举办&#xff0c;本次展会中虹科为大家带来了一体化车载天线与车辆GNSS仿真测试方案&#xff0c;感谢您前来探讨与交流&#xff01; 精彩产品一览 车辆GNSS仿真测试方案 虹科高性能GNSS模拟器具有灵…

【二叉树进阶】二叉树经典面试题——最近公共祖先问题

文章目录 1. 二叉树的最近公共祖先1.1 思路1&#xff08;转换为链表相交问题&#xff09;1.2 链表相交问题讲解1.3 思路21.4 思路2AC代码 2. 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先2.1 思路分析2.2 AC代码 3. 普通二叉树求最近公共祖先的优化-转化为路径相交的问题3.1 思…