直播实时数仓基于DataLeap开放平台在发布管控场景的业务实践
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
背景
业务背景
随着字节业务的高速增长,业务场景越来越丰富,业务基于数据做的决策也越来越多,对数据的时效性要求也越来越高。原有离线批处理的数据仓库已经无法满足诉求,因此需要打造一套同时具备高时效性和高稳定性的计算能力快速完成对数据的处理,即实时数仓。
团队介绍
直播实时数仓团队隶属于Data-数据平台部门,负责为直播中台业务建设实时数据仓库,为业务侧数据产品提供实时数据能力。
痛点
高收益意味着高风险也同时存在,例如数据时效性方面更新延迟超过15分钟,就会有高客诉、甚至资损风险。
2023年之前,各业务实时数仓(直播/电商等)因发布流程问题引发了多起稳定性事故,历史case:2022年上半年直播实时数仓为了修复某份核心分钟指标,选择回补明细层数据的方式做修复,修复任务上线过程中缺少方案评审、影响评估及下游周知等流程,最终因明细层数据回补量级过大导致核心分钟指标产出延迟带来大量客诉反馈。
发布流程常见问题有测试验证缺失、影响评估不准确、上线意识不严谨、上线review随意等。期望有一套流程化工具,自动约束人为不规范操作,降低流程原因导致的事故数、甚至完全规避。
方案
制定发布SOP
将发布划分为发布前、发布中、发布后三个阶段,对每个阶段的动作做细粒度拆分并分别制定规范流程,从而形成实时数仓任务发布SOP。
发布前-规范自查
- 发布前首先需要做测试验收,主要保证开发命名遵守实时数仓规范、数据产出质量(主要为正确性,与离线diff<0.1%)、任务运行稳定性(测试任务运行期间无延迟情况)。
- 测试验收完成后评估此次上线的影响,并判断是否需要提前周知下游。比如任务重启恢复一般需要3~5分钟、意味着数据更新会有短暂的更新延迟,需要评估是否要向下游依赖方周知。
- 最后整合发布内容、测试结果、影响评估结果等信息,在发布话题群中进行登记,如需周知下游的话手动艾特到下游POC同学。
发布中-复查管控
发布中首先会进行围绕代码参数和报警规则配置改动进行自动化巡检,辅助review同学进行code review。review同学分为业务review和技术review。
- 业务review关注业务逻辑,基于业务背景评估代码逻辑调整后的数据质量,并把控发布时间,核心任务发布时间为0~8点,非核心任务发布时间为0~19点(19~24点为业务高峰期)。
- 技术review关注任务稳定性,基于SQL语法、代码参数等评估任务自身性能、基于任务流量及依赖组件特性评估外部依赖环境稳定性等,保障逻辑变更后任务能够快速恢复并稳定运行。
发布后-恢复盯盘
- 发布后会需要从任务状态(Lag消除/Checkpoint状态等)、数据质量(流量波动/数据正确性等)、下游影响(组件稳定性等)三个方面做恢复盯盘,及时发现发布带来的异常影响。
- 如果有预期外的异常时,发布同学及时修复或回滚,并登记发布结果及失败原因(如有)。
发布SOP平台化
阶段一:自研发布流程工具(Hermes平台)
- 实现思路: 发布SOP本身就是一套串行实施的流程,可以将发布上线环境进行流程化拆解为一个个节点,通过编排节点流程及状态机控制流程正常流转运作,从而实现自动约束发布上线流程规范性。
- 使用痛点: 实质上只实现部分流程工具化约束,Hermes和DataLeap平台存在割裂,一次发布流程中用户需要在两个平台上跳转操作,存在用户体验及操作成本问题。
阶段二:基于DataLeap开放平台
- 实现思路: DataLeap开放平台支持业务自定义扩展程序能力,扩展程序可以订阅DataLeap侧OpenEvent监听用户操作、通过OpenAPI与DataLeap进行丰富的交互实现用户行为管控,除此之外开放平台还提供将N个扩展程序以流水线的形式编排的能力。因此将Hermes平台的发布流程工具能力以扩展程序的方式落地到DataLeap,并且通过流水线的能力编排成完整的发布流程流水线,从而实现发布SOP人工约束->平台化自动约束。
- 产品使用流程:
业务实践
业务背景: 以主播服务平台-直播大屏为例,为主播提供在线人数趋势、进房人数等互动指标和送礼人数、送礼金额等收入指标,主播在开播过程中会基于以上指标做直播策略的调整。
发布要求: 控制发布频率和发布时间降低业务影响,通过流程控制提升发布质量,保障数据时效性和正确性。
# 发布前-规范自查
测试验收:
- 模型和指标命名遵守实时数仓规范;
- 数据准确性验证:和离线数仓对应数据进行数据条数与字段值的验证,保障diff在预期内;
- 任务稳定性验证:测试任务运行期间消费无延迟、资源使用在合理范围内。
影响评估:任务重启恢复一般需要3~5分钟,直播大屏相关任务上线时就需要提前向下游依赖方周知:xx时间xxx需求上线改动可能会带来3~5分钟的数据更新延迟,请关注数据产品功能情况。
发布中-复查管控
- 发布监测:围绕代码参数和报警规则配置改动进行自动化巡检,辅助review同学进行code review(业务review和技术review)。
- 业务review:关注业务逻辑,基于业务背景评估代码逻辑调整后的数据质量,并把控发布时间。直播大屏相关任务属于核心任务,发布时间为0~8点,此时间段内为业务低峰期、发布影响用户侧感知较弱。
- 技术review:关注任务稳定性,基于SQL语法、代码参数等评估任务自身性能、基于任务流量及依赖组件特性评估外部依赖环境稳定性等,保障逻辑变更后任务能够快速恢复并稳定运行。
# 发布后-恢复盯盘
- 发布后会启动自动盯盘服务,针对任务状态、数据质量等方面做恢复及影响盯盘,及时发现发布带来的异常影响并告警通知发布同学,发布同学收到盯盘告警时,可通过修复或回滚进行恢复。 例如:任务新增维表关联逻辑时使用不当导致数据倾斜、从而数据产出延迟,在盯盘时就能及时发现任务发布后产生的延迟情况并告警,发布同学收到告警消息后快速调整逻辑或者回滚,就能及时避免发布异常导致的事故。
- 发布结束后会推动发布同学进行结果录入,方便后期做发布质量分析、发现不合规的点做定向提升。
收益统计
- 自22年9月以来,直播实时数仓因发布规范导致的事故数一直保持为0,在数据稳定性方面完成了比较高的目标。除此之外沉淀了一套实时数仓通用发布流程和规范,并通过Hermes+DataLeap开放平台的能力完全实现平台化、自动化,极大的降低规范人工约束/任务恢复人工盯盘的人力成本和出错率,避免发布规范带来的质量问题。
- 目前直播、短视频、电商及生活服务等头部业务的实时数仓团队都已完成接入实时发布流水线,通过实时发布流水线管控发布流程。
未来规划
一句话描述:提供实时发布复查流程精细化管控,定时发布、顺序发布、发布异常快速发现及发布自动化回滚和发布变更自动周知等能力。
功能点 | 详细内容 |
---|---|
精细化管控 | - 支持分支能力:自定义多场景下不同的流水线环节,降低发布成本 |
发布盯盘 | - 提升任务运行盯盘准确性,新增数据质量及下游影响盯盘能力,及时发现发布异常 |
发布回滚 | - 基于发布盯盘能力,支持异常时的快速修复和回滚能力 -支持发布盯盘规则模版,不同任务选择最佳规则实现精准盯盘 |
变更周知 | - 基于数据链路血缘自动识别链路核心下游,自动化周知变更 |
流水线模版 | - 发布流水线支持模版化配置,业务一键导入使用 |
点击跳转大数据研发治理套件 DataLeap了解更多
直播实时数仓基于DataLeap开放平台在发布管控场景的业务实践的更多相关文章
- 基于 Flink 的实时数仓生产实践
数据仓库的建设是“数据智能”必不可少的一环,也是大规模数据应用中必然面临的挑战.在智能商业中,数据的结果代表了用户反馈.获取数据的及时性尤为重要.快速获取数据反馈能够帮助公司更快地做出决策,更好地进行 ...
- 【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel
一.数仓分层介绍 1.实时计算与实时数仓 实时计算实时性高,但无中间结果,导致复用性差 实时数仓基于数据仓库,对数据处理规划.分层,目的是提高数据的复用性 2.电商数仓的分层 ODS:原始日志数据和业 ...
- 美团点评基于 Flink 的实时数仓建设实践
https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651749037&idx=1&sn=4a448647b3dae5 ...
- 基于 Kafka 的实时数仓在搜索的实践应用
一.概述 Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...
- 基于 ByteHouse 构建实时数仓实践
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数据的应用场景越来越丰富,企业对数据价值反馈到业务中的时效性要求也越来越高,很早就有人提出过一个概念: 数据的 ...
- 基于Flink构建全场景实时数仓
目录: 一. 实时计算初期 二. 实时数仓建设 三. Lambda架构的实时数仓 四. Kappa架构的实时数仓 五. 流批结合的实时数仓 实时计算初期 虽然实时计算在最近几年才火起来,但是在早期也有 ...
- 大数据之Hudi + Kylin的准实时数仓实现
问题导读:1.数据库.数据仓库如何理解?2.数据湖有什么用途?解决什么问题?3.数据仓库的加载链路如何实现?4.Hudi新一代数据湖项目有什么优势? 在近期的 Apache Kylin × Apach ...
- Clickhouse实时数仓建设
1.概述 Clickhouse是一个开源的列式存储数据库,其主要场景用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告.今天,笔者就为大家介绍如何使用Clickhouse来构建实 ...
- HBase实战 | 知乎实时数仓架构演进
https://mp.weixin.qq.com/s/hx-q13QteNvtXRpNsE5Y0A 作者 | 知乎数据工程团队编辑 | VincentAI 前线导读:“数据智能” (Data Inte ...
- (转)用Flink取代Spark Streaming!知乎实时数仓架构演进
转:https://mp.weixin.qq.com/s/e8lsGyl8oVtfg6HhXyIe4A AI 前线导读:“数据智能” (Data Intelligence) 有一个必须且基础的环节,就 ...
随机推荐
- STM32CUBEIDE中 Debug 和 Release 的作用/区别/使用场景
基本主流IDE都有该功能选项例如Keil MDK, IAR, Eclipse, VS等, 这里使用STM32CUBEIDE来举例 创建STM32CUBEIDE工程后默认有2个目标选项 Debug / ...
- 题解 CF742B
题目大意: 给定 \(n\) 个数,找数对使其异或值为 \(k\),求满足这样数对的个数. 题目分析: 考验位运算功底的题目(实际上也不是很难),主要运用到了下列性质: \[\begin{aligne ...
- 浏览器事件循环Event Loop
引言: 事件循环不是浏览器独有的,从字面上看,"循环"可以简单地认为就是重复,比如for循环,就是重复地执行for循环体中的语句,所以事件循环,可以理解为重复地处理事件,那么下一个 ...
- 神经网络入门篇:激活函数(Activation functions)
激活函数 使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上.到目前为止,之前的博客只用过sigmoid激活函数,但是,有时其他的激活函数效果会更好. 在神经网路的前向传播中, ...
- 华为ar502H物联网边缘计算网关,在容器内控制/dev/do0开关命令
执行以下命令进行开关do继电开关,可以听见电位器声音. echo -en "\x01" > /dev/do0 echo -en "\x00" > ...
- 通过 VS Code 优雅地编辑 Pod 内的代码(非 NodePort)
目录 1. 概述 2. NodePort 方式 3. Ingress 方式 4. 救命稻草 5. 其他 1. 概述 今天聊点啥呢,话说,你有没有想过怎样用 VS Code 连上 K8s 集群内的某个 ...
- 时间加权平均价格算法(TWAP)和成交量平均算法(VWAP)在量化回测的应用
为什么要引入TWAP和 VWAP? 为了评估策略的资金容量,我们对M.trade模块里买入点和卖出点这两个参数进行了更丰富的扩展,支持了策略能够按更丰富的算法交易价格(WAP)进行撮合. 如果资金是1 ...
- 被面试官PUA了:创建索引时一定会锁表?
索引主要是用于提高数据检索速度的一种机制,通过索引数据库可以快速定位到目标数据的位置,而不需要遍历整个数据集,它就像书籍的目录部分,有它的存在,可以大大加速查询的效率. 那么问题来了:在创建索引时一定 ...
- 腾讯云服务器安装MySQL5.7基于xshell
腾讯云服务器安装MySQL5.7基于xshell 下载MySQL57安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-1 ...
- ElasticSearch之cat datafeeds API
命令样例如下: curl -X GET "https://localhost:9200/_cat/ml/datafeeds?v=true&pretty" --cacert ...