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

背景

业务背景

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

团队介绍

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

痛点

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

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

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

方案

制定发布SOP

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

发布前-规范自查

  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语法、代码参数等评估任务自身性能、基于任务流量及依赖组件特性评估外部依赖环境稳定性等,保障逻辑变更后任务能够快速恢复并稳定运行。

发布后-恢复盯盘

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

发布SOP平台化

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

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

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

阶段二:基于DataLeap开放平台

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

  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了解更多

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

  1. 基于 Flink 的实时数仓生产实践

    数据仓库的建设是“数据智能”必不可少的一环,也是大规模数据应用中必然面临的挑战.在智能商业中,数据的结果代表了用户反馈.获取数据的及时性尤为重要.快速获取数据反馈能够帮助公司更快地做出决策,更好地进行 ...

  2. 【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel

    一.数仓分层介绍 1.实时计算与实时数仓 实时计算实时性高,但无中间结果,导致复用性差 实时数仓基于数据仓库,对数据处理规划.分层,目的是提高数据的复用性 2.电商数仓的分层 ODS:原始日志数据和业 ...

  3. 美团点评基于 Flink 的实时数仓建设实践

    https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651749037&idx=1&sn=4a448647b3dae5 ...

  4. 基于 Kafka 的实时数仓在搜索的实践应用

    一.概述 Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...

  5. 基于 ByteHouse 构建实时数仓实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数据的应用场景越来越丰富,企业对数据价值反馈到业务中的时效性要求也越来越高,很早就有人提出过一个概念: 数据的 ...

  6. 基于Flink构建全场景实时数仓

    目录: 一. 实时计算初期 二. 实时数仓建设 三. Lambda架构的实时数仓 四. Kappa架构的实时数仓 五. 流批结合的实时数仓 实时计算初期 虽然实时计算在最近几年才火起来,但是在早期也有 ...

  7. 大数据之Hudi + Kylin的准实时数仓实现

    问题导读:1.数据库.数据仓库如何理解?2.数据湖有什么用途?解决什么问题?3.数据仓库的加载链路如何实现?4.Hudi新一代数据湖项目有什么优势? 在近期的 Apache Kylin × Apach ...

  8. Clickhouse实时数仓建设

    1.概述 Clickhouse是一个开源的列式存储数据库,其主要场景用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告.今天,笔者就为大家介绍如何使用Clickhouse来构建实 ...

  9. HBase实战 | 知乎实时数仓架构演进

    https://mp.weixin.qq.com/s/hx-q13QteNvtXRpNsE5Y0A 作者 | 知乎数据工程团队编辑 | VincentAI 前线导读:“数据智能” (Data Inte ...

  10. (转)用Flink取代Spark Streaming!知乎实时数仓架构演进

    转:https://mp.weixin.qq.com/s/e8lsGyl8oVtfg6HhXyIe4A AI 前线导读:“数据智能” (Data Intelligence) 有一个必须且基础的环节,就 ...

随机推荐

  1. ELK中 Elasticsearch和Logstash内存大小设置的考虑

    本文为博主原创,转载请注明出处: 在ELK(Elasticsearch.Logstash和Kibana)日志采集和分析场景中,适当设置Logstash和Elasticsearch的内存大小非常重要.这 ...

  2. 适合业余爱好者DIY的高精度数字电桥

    基本状况:工作频率: 100Hz,1kHz,7.813kHz最小分辨:最小分辨0.5毫欧,0.03uH,0.02pF最大分辨:G欧基本量程精度:1kHz基本量程精度,0.5%,选好电阻,精心制作,可以 ...

  3. Java Springbool敏感词过工具类滤

    Java Springbool敏感词过工具类滤 1. 功能描述利用前缀树这种数据结构,设计并开发出敏感词过滤工具. 2. 构建敏感词表resource/sensitive-words.txt 3. 敏 ...

  4. 推荐一个Node.js多版本管理的可视化工具

    关于Node.js的开发者来说,在开发机器上管理多个不同版本的Node.js是一个常见痛点.之前在开发者安全大全专栏中,提到过解决方法:使用nvm,如果对于nvm还不了解的话,可以前往了解. 对于TJ ...

  5. CART算法解密:从原理到Python实现

    本文深入探讨了CART(分类与回归树)算法的核心原理.实现方法以及应用场景.文章首先介绍了决策树的基础知识,然后详细解析了CART算法的工作机制,包括特征选择和树的构建.接着,通过Python和PyT ...

  6. 基于.net6.0 Fast.ORM 已全面支持AOT编译 所有Api均测试通过

    Fast Framework 作者 Mr-zhong 代码改变世界.... 一.前言 Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer O ...

  7. python循环语句(二)

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 知识点:for循环的语法格式如下: for iterating_var in sequence: statements(s) ...

  8. What's past is prologue

    凡是过去,皆为序章.爱所有人,信任少数人,不负任何人.我荒废了时间,时间便把我荒废了. 在灰暗的日子中,不要让冷酷的命运窃喜:命运既然来凌辱我们,就应该用处之泰然的态度予以报复.明智的人决不坐下来为失 ...

  9. SpringBoot设置日志级别

    输出到控制台 logging: # 日志记录到文件中 file: # 指定文件名 name: server.log logback: rollingpolicy: # 指定文件大小 max-file- ...

  10. 华企盾DSC手机app注册保存成功登录时一直转圈

    可能是花生壳等映射软件不稳定,重启一下花生壳等工具