直播实时数仓基于DataLeap开放平台在发布管控场景的业务实践

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

背景

业务背景

随着字节业务的高速增长,业务场景越来越丰富,业务基于数据做的决策也越来越多,对数据的时效性要求也越来越高。原有离线批处理的数据仓库已经无法满足诉求,因此需要打造一套同时具备高时效性和高稳定性的计算能力快速完成对数据的处理,即实时数仓。

团队介绍

直播实时数仓团队隶属于Data-数据平台部门,负责为直播中台业务建设实时数据仓库,为业务侧数据产品提供实时数据能力。

痛点

高收益意味着高风险也同时存在,例如数据时效性方面更新延迟超过15分钟,就会有高客诉、甚至资损风险。

2023年之前,各业务实时数仓(直播/电商等)因发布流程问题引发了多起稳定性事故,历史case:2022年上半年直播实时数仓为了修复某份核心分钟指标,选择回补明细层数据的方式做修复,修复任务上线过程中缺少方案评审、影响评估及下游周知等流程,最终因明细层数据回补量级过大导致核心分钟指标产出延迟带来大量客诉反馈。

发布流程常见问题有测试验证缺失、影响评估不准确、上线意识不严谨、上线review随意等。期望有一套流程化工具,自动约束人为不规范操作,降低流程原因导致的事故数、甚至完全规避。

方案

制定发布SOP

将发布划分为发布前、发布中、发布后三个阶段,对每个阶段的动作做细粒度拆分并分别制定规范流程,从而形成实时数仓任务发布SOP。

1.png

发布前-规范自查

  1. 发布前首先需要做测试验收,主要保证开发命名遵守实时数仓规范、数据产出质量(主要为正确性,与离线diff<0.1%)、任务运行稳定性(测试任务运行期间无延迟情况)。
  2. 测试验收完成后评估此次上线的影响,并判断是否需要提前周知下游。比如任务重启恢复一般需要3~5分钟、意味着数据更新会有短暂的更新延迟,需要评估是否要向下游依赖方周知。
  3. 最后整合发布内容、测试结果、影响评估结果等信息,在发布话题群中进行登记,如需周知下游的话手动艾特到下游POC同学。

在这里插入图片描述

发布中-复查管控

  1. 发布中首先会进行围绕代码参数和报警规则配置改动进行自动化巡检,辅助review同学进行code review。review同学分为业务review和技术review。

    1. 业务review关注业务逻辑,基于业务背景评估代码逻辑调整后的数据质量,并把控发布时间,核心任务发布时间为0~8点,非核心任务发布时间为0~19点(19~24点为业务高峰期)。
    2. 技术review关注任务稳定性,基于SQL语法、代码参数等评估任务自身性能、基于任务流量及依赖组件特性评估外部依赖环境稳定性等,保障逻辑变更后任务能够快速恢复并稳定运行。

3.png

发布后-恢复盯盘

  1. 发布后会需要从任务状态(Lag消除/Checkpoint状态等)、数据质量(流量波动/数据正确性等)、下游影响(组件稳定性等)三个方面做恢复盯盘,及时发现发布带来的异常影响。
  2. 如果有预期外的异常时,发布同学及时修复或回滚,并登记发布结果及失败原因(如有)。

4.png

发布SOP平台化

阶段一:自研发布流程工具(Hermes平台)

  1. 实现思路: 发布SOP本身就是一套串行实施的流程,可以将发布上线环境进行流程化拆解为一个个节点,通过编排节点流程及状态机控制流程正常流转运作,从而实现自动约束发布上线流程规范性。

在这里插入图片描述

  1. 使用痛点: 实质上只实现部分流程工具化约束,Hermes和DataLeap平台存在割裂,一次发布流程中用户需要在两个平台上跳转操作,存在用户体验及操作成本问题。

阶段二:基于DataLeap开放平台

  1. 实现思路: DataLeap开放平台支持业务自定义扩展程序能力,扩展程序可以订阅DataLeap侧OpenEvent监听用户操作、通过OpenAPI与DataLeap进行丰富的交互实现用户行为管控,除此之外开放平台还提供将N个扩展程序以流水线的形式编排的能力。因此将Hermes平台的发布流程工具能力以扩展程序的方式落地到DataLeap,并且通过流水线的能力编排成完整的发布流程流水线,从而实现发布SOP人工约束->平台化自动约束。

6.jpg

  1. 产品使用流程:

在这里插入图片描述

业务实践

业务背景: 以主播服务平台-直播大屏为例,为主播提供在线人数趋势、进房人数等互动指标和送礼人数、送礼金额等收入指标,主播在开播过程中会基于以上指标做直播策略的调整。

发布要求: 控制发布频率和发布时间降低业务影响,通过流程控制提升发布质量,保障数据时效性和正确性。

# 发布前-规范自查

  1. 测试验收:

    1. 模型和指标命名遵守实时数仓规范;
    2. 数据准确性验证:和离线数仓对应数据进行数据条数与字段值的验证,保障diff在预期内;
    3. 任务稳定性验证:测试任务运行期间消费无延迟、资源使用在合理范围内。
  2. 影响评估:任务重启恢复一般需要3~5分钟,直播大屏相关任务上线时就需要提前向下游依赖方周知:xx时间xxx需求上线改动可能会带来3~5分钟的数据更新延迟,请关注数据产品功能情况。

发布中-复查管控

  1. 发布监测:围绕代码参数和报警规则配置改动进行自动化巡检,辅助review同学进行code review(业务review和技术review)。
  2. 业务review:关注业务逻辑,基于业务背景评估代码逻辑调整后的数据质量,并把控发布时间。直播大屏相关任务属于核心任务,发布时间为0~8点,此时间段内为业务低峰期、发布影响用户侧感知较弱。
  3. 技术review:关注任务稳定性,基于SQL语法、代码参数等评估任务自身性能、基于任务流量及依赖组件特性评估外部依赖环境稳定性等,保障逻辑变更后任务能够快速恢复并稳定运行。

# 发布后-恢复盯盘

  1. 发布后会启动自动盯盘服务,针对任务状态、数据质量等方面做恢复及影响盯盘,及时发现发布带来的异常影响并告警通知发布同学,发布同学收到盯盘告警时,可通过修复或回滚进行恢复。 例如:任务新增维表关联逻辑时使用不当导致数据倾斜、从而数据产出延迟,在盯盘时就能及时发现任务发布后产生的延迟情况并告警,发布同学收到告警消息后快速调整逻辑或者回滚,就能及时避免发布异常导致的事故。
  2. 发布结束后会推动发布同学进行结果录入,方便后期做发布质量分析、发现不合规的点做定向提升。

收益统计

  • 自22年9月以来,直播实时数仓因发布规范导致的事故数一直保持为0,在数据稳定性方面完成了比较高的目标。除此之外沉淀了一套实时数仓通用发布流程和规范,并通过Hermes+DataLeap开放平台的能力完全实现平台化、自动化,极大的降低规范人工约束/任务恢复人工盯盘的人力成本和出错率,避免发布规范带来的质量问题。
  • 目前直播、短视频、电商及生活服务等头部业务的实时数仓团队都已完成接入实时发布流水线,通过实时发布流水线管控发布流程。

未来规划

一句话描述:提供实时发布复查流程精细化管控,定时发布、顺序发布、发布异常快速发现及发布自动化回滚和发布变更自动周知等能力。

功能点详细内容
精细化管控- 支持分支能力:自定义多场景下不同的流水线环节,降低发布成本
发布盯盘- 提升任务运行盯盘准确性,新增数据质量及下游影响盯盘能力,及时发现发布异常
发布回滚- 基于发布盯盘能力,支持异常时的快速修复和回滚能力 -支持发布盯盘规则模版,不同任务选择最佳规则实现精准盯盘
变更周知- 基于数据链路血缘自动识别链路核心下游,自动化周知变更
流水线模版- 发布流水线支持模版化配置,业务一键导入使用

点击跳转大数据研发治理套件 DataLeap了解更多

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

layui table合计 totalRow 保留4位小数\ 异步请求数据的表格 新增行之后 如何更新数据

layui table合计 totalRow 保留4位小数: 例: totalRowMethod:(column: any, dataSource: any[]) > { let total 0; dataSource.forEach((item) > { total total Number(item[column.key]); …

Vite依赖预构建

本文使用的包管理工具是 npm 开发工具是 vscode 本文作为对 vite的了解性内容即可&#xff0c;实际开发中并不会做太多的工作 依赖预构建干了啥 首先vite会找到对应的依赖&#xff0c; 然后调用 esbuild(对js语法进行处理的一个库)&#xff0c; 将其他规范的代码转换成 esmodu…

Web前端—CSS高级(定位、高级技巧、CSS修饰属性、综合案例:购物网站轮播图)

版本说明 当前版本号[20231108]。 版本修改说明20231107初版20231108对知识点&#xff08;圆点&#xff09;进行补充 目录 文章目录 版本说明目录day08-CSS高级01-定位相对定位绝对定位定位居中固定定位堆叠层级 z-index定位总结 02-高级技巧CSS精灵案例-京东服务HTML结构CS…

API是什么?解密API背后的奥秘

API&#xff0c;全称Application Programming Interface&#xff0c;是一种用于不同应用程序间通信的接口&#xff0c;它允许不同的应用程序之间交换数据和功能。API可以理解为应用程序提供给其他应用程序或开发者的接口&#xff0c;通过这个接口&#xff0c;其他应用程序或开发…

将 Ordinals 与比特币智能合约集成:第 4 部分

控制 BSV-20 代币的分配 在上一篇文章中&#xff0c;我们展示了智能合约可以在铸造后控制 BSV-20 代币的转移。 今天&#xff0c;我们演示如何控制此类代币的分发/发行。 无Tick模式 BSV-20 在 V2 中引入了无Tick模式&#xff0c;并采用了与 V1 不同的方法。 部署 (Deploy) …

openinstall携手途虎养车,赋能汽车服务数字化

近日&#xff0c;openinstall与中国领先的一站式汽车服务平台途虎养车再次续约&#xff0c;双方将开启第三年合作。过去两年&#xff0c;途虎在建设线上线下一体化数字平台的过程中&#xff0c;深度结合openinstall传参归因与渠道统计技术&#xff0c;打造出了一套高效的渠道来…

聚焦千兆光模块和万兆光模块的测试技术及设备

千兆光模块和万兆光模块的测试技术涉及多个方面&#xff0c;如光学性能测试、电气性能测试、动态性能测试、温度测试、环境和耐久性测试等。不同的测试技术可以验证不同的光模块的性能和稳定性&#xff0c;从而确保光模块在各种应用场景下的可靠性&#xff0c;下面将介绍一些常…

PSP - 蛋白质复合物结构预测 模版配对(Template Pair) 逻辑的特征分析

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134328447 在 蛋白质复合物结构预测 的过程中&#xff0c;模版 (Template) 起到重要作用&#xff0c;提供预测结果的关于三维结构的先验信息&…

Ubuntu2004字体不清晰,排查流程

昨天一早来发现平时用的Ubuntu2004物理机的字体变得很模糊&#xff0c;之前还是好好的&#xff0c;这里记录一下解决方案。 解决方案 通过显示器物理按键设置“自适应”解决&#xff0c;我的显示器是长城的&#xff0c;“自适应”按钮是右边从下往上数第二个。 排查流程 我先…

WordPress Modown 6.2付费下载资源/付费查看内容 wp主题模板+erphpdown11.7

模板简介&#xff1a; 自适应响应式设计&#xff0c;兼容主流浏览器 网格样式与瀑布流样式任意切换 内置SEO优化 自带与主题UI完美兼容搭配的erphpdown前端用户中心页面&#xff08;此功能若单独找我们定制也需要几百&#xff09; 收费付费下载资源、付费查看内容、付费观看…

GoLong的学习之路(二十一)进阶,语法之并发(go最重要的特点)(协程的主要用法)

并发编程在当前软件领域是一个非常重要的概念&#xff0c;随着CPU等硬件的发展&#xff0c;我们无一例外的想让我们的程序运行的快一点、再快一点。Go语言在语言层面天生支持并发&#xff0c;充分利用现代CPU的多核优势&#xff0c;这也是Go语言能够大范围流行的一个很重要的原…

【Delphi】Android 开发HTTP请求出错解决方案

目录 一、故障现象 二、原因及解决方案 一、故障现象 在android内建的WebBrowser浏览器中通过http访问一个网站&#xff08;注意不是https&#xff09;&#xff0c;出现如下错误提示&#xff1a; 在使用ntfy的时候&#xff0c;访问http定义的服务器地址&#xff08;注意不是…

MySQL模糊查询/模式匹配(Pattern Match)

使用SQL查询数据时&#xff0c;时常会遇到这种情况&#xff0c;我们并不需要精确的匹配&#xff0c;而是要查找具有某类特点的数据。这种场景我们就要用到模糊查询。MySQL中常用的模糊查询方法有2种&#xff1a; like语句模糊查询regexp正则表达式模式匹配 目录 一、使用like模…

大厂面试题-为什么索引要用B+树来实现呢,而不是B树?

首先&#xff0c;常规的数据库存储引擎&#xff0c;一般都是采用B树或者B树来实现索引的存储。 (如图)因为B树是一种多路平衡树&#xff0c;用这种存储结构来存储大量数据&#xff0c;它的整个高度会相比二叉树来说&#xff0c;会矮很多。 而对于数据库来说&#xff0c;所有的…

【191】Java8在大比例尺小范围地图上,根据wgs84坐标系的经纬度计算两个点之间的方向和距离

场景 本文代码在大比例迟、小范围的地图上测试过。这些地图一般是县、区、镇、街道等范围的&#xff0c;其测试效果较好。由于地图范围较小&#xff0c;可以把经纬度近似看作直线。 问题分析 方向一共分东、南、西、北、东北、西北、西南、东南共八个方向。一周是 360 度&am…

最新GitHub学生认证,可以愉快的使用Copilot了(保姆级教程)

&#x1f388;博客主页&#xff1a;&#x1f308;我的主页&#x1f308; &#x1f388;欢迎点赞 &#x1f44d; 收藏 &#x1f31f;留言 &#x1f4dd; 欢迎讨论&#xff01;&#x1f44f; &#x1f388;本文由 【泠青沼~】 原创&#xff0c;首发于 CSDN&#x1f6a9;&#x1f…

“深入理解机器学习性能评估指标:TP、TN、FP、FN、精确率、召回率、准确率、F1-score和mAP”

目录 引言 分类标准 示例&#xff1a;癌症检测 1. 精确率&#xff08;Precision&#xff09; 2. 召回率&#xff08;Recall&#xff09; 3. 准确率&#xff08;Accuracy&#xff09; 4. F1-score 5. mAP&#xff08;均值平均精度&#xff09; 总结与通俗解释 引言 机器…

电销行业获客的精准客源从哪里来的?

在电话营销行业中找到精确的客户资源对电话营销的成功至关重要。 这里有几种方法可以找到准确的客户资源&#xff1a; 1、自身数据库&#xff1a;首先&#xff0c;使用现有的客户信息数据库&#xff0c;如客户电话号码、电子邮件和地址&#xff0c;来推广和营销现有客户。 2…

django 批量 serializers listserializers

Django drf 序列化器 序列化器 扩展serializers的有用性是我们想要解决的问题。但是&#xff0c;这不是一个微不足道的问题&#xff0c;而是需要一些严肃的设计工作。— Russell Keith-Magee, Django用户组 序列化器允许把像查询集和模型实例这样的复杂数据转换为可以轻松渲染…

基于element-plus定义表单配置化

文章目录 前言一、配置化的前提二、配置的相关组件1、新建form.vue组件2、新建input.vue组件3、新建select.vue组件4、新建v-html.vue组件5、新建upload.vue组件6、新建switch.vue组件7、新建radio.vue组件8、新建checkbox.vue组件9、新建date.vue组件10、新建time-picker.vue组…