简介: Dataphin作为一款企业级智能数据构建与管理产品,具备全链路实时研发能力,从2019年开始就支撑可集团天猫双11的实时计算需求,文章将详细介绍Dataphin实时计算的能力。

背景

每当双11全球购物狂欢节钟声响起,上千万用户涌入天猫、淘宝,流畅的购物体验背后是阿里工程师用技术打造出的营地,支撑了每年双11所带来的数据洪峰。2020年11月1日至11月12日0:00,天猫“双11”累计总交易额达4982亿元,物流订单总量达到23.21亿单。这一切的背后都离不开实时计算技术。

Dataphin作为一款企业级智能数据构建与管理产品,具备全链路实时研发能力,从2019年开始支撑集团天猫双11的实时计算需求。就以下文介绍Dataphin实时计算的能力。

传统的数仓架构

在数仓建设过程中,一般来说都是先建设离线数仓,同时围绕着离线数据构建应用。然后随着业务的发展或者体验的优化,再建设实时计算的链路去提升数据的时效性。

在这个过程中相似的代码写两遍就难以避免,还会出现实时和离线口径不一致,分别维护成本增加等各种各样的问题。

传统的数仓架构流与批从存储计算中分离带来以下的问题:

  1. 效率问题:流批底层数据模型不一致,导致应用层做大量的拼接逻辑(同比、环比、二次加工等),搭建效率低且容易出错
  2. 质量问题:一个业务逻辑,两个引擎两套代码,SQL逻辑不能复用,数据一致性和质量问题难以保证
  3. 成本问题
  4. 流批存储系统隔离(面向不同写入场景),提供的数据服务不一,维护成本高
  5. 手工建数据同步任务,开发成本/存储成本高(两份)
  6. 批处理&流处理集群无法做到错峰,资源利用率低

Dataphin流批一体优势

为解决传统数仓架构的存储计算分离的问题,有了“流批一体”的思路:

  1. 流批存储透明化,查询逻辑完全一致,应用端接入成本大幅降低,点查/OLAP分析统一支持
  2. 服务层统一存储,无需手工同步,无重复存储
  3. 一套代码,两种计算模式,逻辑统一,灵活切换,研发效率大幅提升
  4. 流批计算资源混部,资源利用率提升

Dataphin在Flink流批一体的能力之上额外提供了更多的平台能力,如数据源管理、元数据管理、资产血缘、资产质量控制、预编译、调试等能力:

  1. 开发生产隔离:提供开发环境和生产环境隔离,保证开发环境开发的业务代码和生产相互之间不干扰
  2. 元数据管理:各系统组件包括数据源、元表、UDX等具备权限控制功能,敏感型配置信息加密保护。支持数据源敏感字段访问订阅。元表、函数、资源等全部单元化可视化的管理,支持跨项目鉴权(字段级)调用,让使用者聚焦业务逻辑。
  3. 流批一体:流批存储层的统一管理,实现模型层统一,流批代码统一、通过流批各自专属配置,生产独立有协同的额调度实例
  4. 研发提效
  5. 提供了预编译的能力,提供语法校验、权限校验、字段血缘提取的功能;
  6. 容器化调试,支持上传自定义数据或直接消费真实生产数据用来观察作业运行、检查各个节点的输出结果
  7. 支持元数据检索,作业依赖、字段血缘的可视化探查
  8. 稳定性及质量保障
  9. 支持流量阈值设置,防止计算资源过度竞争,避免下游系统过载
  10. 支持实时元表质量监测,可配置统计趋势监测、实时多链路对比、实时离线数据核对。

开发生产隔离

Dataphin支持开发生产隔离的项目,支持开发和生产双环境的数据源配置。这样在开发模式下,任务就会自动使用开发数据源和开发环境下的物理表;而当发布到生产环境时,Datpahin则会自动切换为生产数据源及生产环境的物理表。这个过程完全自动化,不用手动修改代码或配置。

元数据管理

Dataphin创造性的引入了实时元表和镜像表的概念,将实时研发过程中的表进行了平台化、资产化的统一管理,并简化了研发,提升研发效率和体验。

传统实时任务研发工具需要用户重复写Create table建表语句,需要进行繁琐的输入输出表映射等操作。实时元表将实时开发任务中所有用到的数据表进行了统一表构建与管理,统一维护了所有实时元表和相关schema信息。开发者在开发过程中不用重复写DDL语句;同时,也不需要进行繁杂的输入、输出、维表映射,采用简单的纯代码研发模式,简单的SET语句及权限申请,即可引用表数据,进行直接查询或写入数据,轻松做到一次建表,多次引用,大幅度提升研发效率和体验。

镜像表顾名思义则是用于维护离线表与实时表之间字段的映射关系。创建镜像表并提交发布后,就可以在流批一体的Flink任务中使用镜像表的字段,Datpahin会在编译时自动映射到流表和批表上,实现一份代码,两种计算,代码逻辑、口径变更强一致。

流批一体的代码任务

除了引入实时元表与镜像表,Dataphin也支持了流批一体的任务,使用Flink引擎作为统一的流批计算引擎,在一份代码上可同时配置流+批的任务配置,基于同一份代码生成不同模式下的实例。而对于流批差异化的代码,Dataphin也提供了不同的方式给与支持。

流批一体任务中会广泛使用镜像表,而镜像表在最终使用时会翻译为对应的流表/批表,为了适应流表/批表的多样性(流表/批表的数据源可能不一样,带来with参数中key可能不一样;流表/批表的某些设置可能不一样,比如batchSize等),可以利用tableHints进行流表/批表的对应。方法如下:

set project.table.${mode}.${key} --mode: 流任务:`stream` 批任务:batch

举个例子,设置批任务的起停时间:

set project.table.batch.startTime='2020-11-11 00:00:00'; set project.table.batch.endTime='2020-11-12 00:00:00';

第二种是在Dataphin的任务配置实时和离线模式分别任务参数的方式是利用任务参数进行替换。

实时质量监控

Dataphin实时数据质量主要面向开发者,针对产品中实时产出的数据表,通过对产出结果进行数据质量分析和校验,来保障数据的最终有效与准确。Dataphin支持统计趋势监测、实时多链路对比、实时离线数据核对。

  1. 统计趋势监测:趋势监测指的是基于数据趋势变化以及专家经验以捕获波动异常的监测方式;如 实时GMV的趋势陡增有些异常
  2. 实时多链路趋势对比:实时多链路指的是在实时计算的场景中,由于数据的恢复成本较高,无法快速从起点重新计算,因此需要使用多个计算链路,当发生计算异常时,自动/手动切换计算链路,是一种用资源换稳定的策略,当有重大的保障业务时,往往会采用该种类型;如每年双十一大屏都会采用多链路保障。
  3. 实时离线核对:实时离线核对,是保障实时数据常用的一种措施,由于实时计算处于一种持续运算状态,计算时间持久且受资源与源数据的扰动较大;离线数据在逻辑、数据复用性方面可以被更好地操作,因此,为了保障实时数据的准确性,常用离线数据与实时数据进行对比;如每年双十一前都会使用离线数据对实时数据进行校验;

双十一大屏后的Dataphin

回到文章开始的天猫双十一,了解了Dataphin平台特有的能力,我们来具体拆解Dataphin为什么能支撑天猫双十一的实时数据大屏。

 快

  1. Dataphin为实时提供研发、调试、测试、运维全链路一站式服务,极大降低用户开发门槛;
  2. 同时提供统一元数据管理,元数据仅需初始化一次,轻松做到一次建表,多次引用,让开发聚焦业务逻辑,大幅度提升研发效率和体验;
  3. 另外有数据研发经历的同学都有这样的体会,很多数据口径都惊人的类似,甚至有些只是输入输出表不同,典型的场景比如主备链路,针对这种场景我们提供了模版研发的能力,相同逻辑封装在模版中,差异逻辑通过模版参数体现,新任务仅需引用模版配置模版参数即可,极大提升研发效率的同时也降低了口径维护成本。

基于以上能力,在双十一大屏的支持上,尽管业务玩法很多,需求井喷,仍然仅以2人便支撑上百需求。

Dataphin提供任务监控及数据质量监控全方位保障任务稳定,快速发现问题;基于模版的主备多链路在异常发生时可以秒级切换,快速止血;基于实时任务血缘,快速定位问题根因;基于调试、测试、细粒度资源配置,快速验证并修复,真正做到1min发现、5min定位、10min解决。

基于流批一体的能力,真正做到代码统一,口径统一,存储统一,数据服务接口统一,研发提效的同时,保证数据一致。

未来规划

在即将发布的Flink VVP(Ververica Platform)适配版本将支持新的VVR引擎,也将在未来支持开源Flink引擎已支持更多的部署环境。Dataphin也将持续提升实时研发的能力和体验,帮助企业降低实时研发的门槛,挖掘更多的场景,获得实时数据带来的业务价值!

原文链接

本文为阿里云原创内容,未经允许不得转载。

【产品动态】解读Dataphin流批一体的实时研发的更多相关文章

  1. 触宝科技基于Apache Hudi的流批一体架构实践

    1. 前言 当前公司的大数据实时链路如下图,数据源是MySQL数据库,然后通过Binlog Query的方式消费或者直接客户端采集到Kafka,最终通过基于Spark/Flink实现的批流一体计算引擎 ...

  2. OnZoom 基于Apache Hudi的流批一体架构实践

    1. 背景 OnZoom是Zoom新产品,是基于Zoom Meeting的一个独一无二的在线活动平台和市场.作为Zoom统一通信平台的延伸,OnZoom是一个综合性解决方案,为付费的Zoom用户提供创 ...

  3. Arctic 基于 Hive 的流批一体实践

    背景 随着大数据业务的发展,基于 Hive 的数仓体系逐渐难以满足日益增长的业务需求,一方面已有很大体量的用户,但是在实时性,功能性上严重缺失:另一方面 Hudi,Iceberg 这类系统在事务性,快 ...

  4. 官宣 | Apache Flink 1.12.0 正式发布,流批一体真正统一运行!

    官宣 | Apache Flink 1.12.0 正式发布,流批一体真正统一运行! 原创 Apache 博客 [Flink 中文社区](javascript:void(0) 翻译 | 付典 Revie ...

  5. 带你玩转Flink流批一体分布式实时处理引擎

    摘要:Apache Flink是为分布式.高性能的流处理应用程序打造的开源流处理框架. 本文分享自华为云社区<[云驻共创]手把手教你玩转Flink流批一体分布式实时处理引擎>,作者: 萌兔 ...

  6. Apache Flink 1.12.0 正式发布,DataSet API 将被弃用,真正的流批一体

    Apache Flink 1.12.0 正式发布 Apache Flink 社区很荣幸地宣布 Flink 1.12.0 版本正式发布!近 300 位贡献者参与了 Flink 1.12.0 的开发,提交 ...

  7. jQuery动态网格瀑布流插件Masonry

    Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ...

  8. .NET6运行时动态更新限流阈值

    昨天博客园撑不住流量又崩溃了,很巧正在编写这篇文章,于是产生一个假想:如果博客园用上我这个限流组件会怎么样呢? 用户会收到几个429错误,并且多刷新几次就看到了内容,不会出现完全不可用. 还可以降低查 ...

  9. 使用Alibaba的Nacos做为SpringCloud的注册和配置中心,并结合Sentinel+Nocos动态进行限流熔断

    最近在学习阿里的Nacos组件以及Sentinel组件,折腾出了一个小demo. Git地址:https://github.com/yangzhilong/nacos-client 有兴趣的小伙伴可以 ...

  10. BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)

    题目链接 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1920 (luogu) https://www.luogu.org/prob ...

随机推荐

  1. CloudXR技术如何运用于农业?

    随着科技的不断发展和应用的深入,农业领域也在逐渐引入新技术来优化生产效率和成本.改进管理和监控等.云化XR(CloudXR)作为一种融合了云计算.虚拟现实(VR)和增强现实(AR)等技术的解决方案,也 ...

  2. 地理探测器R语言实现:geodetector

      本文介绍基于R语言中的geodetector包,依据多张栅格图像数据,实现地理探测器(Geodetector)操作的详细方法.   需要说明的是,在R语言中进行地理探测器操作,可以分别通过geod ...

  3. 记录--vue刷新当前页面

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 项目当中如果做新增/修改/删除等等操作通常情况下都需要刷新数据或者刷新当前页面. 思路 (1)如果页面简单,调用接口刷新数据即可. ...

  4. pycharm 常见易错的PEP8规范

    PEP8规范 ( Python Enhancement Proposal ) PEP 8: E231 missing whitespace after ','这个意思是逗号后面要有一个空格 PEP 8 ...

  5. Oracle日期加减

    1.直接加减数字 SELECT SYSDATE "当前时间", SYSDATE + 1 "加一天", SYSDATE + (1 / 24) "加一小时 ...

  6. linux scp 学习

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令, scp传输是加密的,可能会稍微影响一下速度.另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就 ...

  7. Spring Cloud项目搭建版本选择

    1.查看spring cloud的版本 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4 ...

  8. OpenHarmony轻松玩转GIF数据渲染

    OpenAtom OpenHarmony(以下简称"OpenHarmony")提供了Image组件支持GIF动图的播放,但是缺乏扩展能力,不支持播放控制等.今天介绍一款三方库--o ...

  9. Java 继承与多态:代码重用与灵活性的巧妙结合

    Java 继承(子类和超类) 在 Java 中,可以从一个类继承属性和方法到另一个类.我们将"继承概念"分为两类: 子类(child): 从另一个类继承的类 超类(parent): ...

  10. 常用的Numpy通用函数列表

    官网来源:Universal functions (ufunc) - NumPy v1.21 Manual 数学运算(Math operations) 表达式 定义 add(x1, x2, /[, o ...