更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
 
“幸福里”是抖音集团旗下集内容、社区、工具于一体的房产媒体综合信息平台,致力于提供多样化房产资讯、定制找房需求。随着幸福里业务发展,为了满足业务对于数据使用、指标观测等需求,团队快速落地了数仓建设。但由于早期“先建后治”,导致现阶段数据治理难题频发。
 
其中,异常突出的是离线数仓SLA延迟大,高达13天。对于需要实时看到数据情况的经纪人、用户等人来说,延时可能会影响到数据价值的产出。
 
在抖音集团内部广泛应用“0987”高质量服务评价体系,即从多个维度综合论证数据中台的价值,位列第一的“0”,指的是数据中台必须保障数据稳定,实现SLA故障清零。而对于幸福里团队来说,SLA高延时显然已经成为数据治理中未解决的核心问题。
 
基于此背景,幸福里团队通过引入火山引擎大数据研发治理套件DataLeap,综合推进离线数仓的SLA治理,将离线数仓SLA从13天降低为0天。本文将从策略制定、任务摸排收集、规范确定,宣贯推进等方向还原项目推进过程,期望为更多企业带来SLA治理思考和解决方案。
 

业务痛点

据相关业务同学介绍,幸福里团队与其他面临SLA治理难题大同小异,主要包含以下两个方面:
 
第一,随着楼盘、房源、经纪人、营销等数据不断增长,在数据任务开发场景中,业务多样化、数据量大、数据任务复杂等问题,导致数据任务链路依赖复杂、链路长、依赖多,具体体现在:
  • 幸福里离线数仓数据源包括中台型数据,这类数据没有SLA保障。
  • 幸福里离线数仓数据源还包括业务DA以及算法类数据。以算法类数据为例,数据本身在算法团队自身队列当中,由于无法分别出业务需要的重要数据,队列任务可能发生延迟、时效性不强,另外还存在任务交接或权限到期等问题,导致这些数据无法得到有效保障。
  • 幸福里离线数仓SLA链路长。相关业务人员提到,“内部最长的链路上游包括800多张表,这里的上游仅局限在幸福里业务内部,还不包括中台”。由此可见,上游任务数之多,且可能涉及跨越多个团队沟通,要最终达成约定SLA,成本将非常高。
 
第二,数据建设主导方变更,业务形态转变,导致历史包袱重、存量任务优化工作量大,这与幸福里离线数据建设历程强关联。 在幸福里数仓1.0阶段,数据仓库由业务方DA与RD自建,未有明确的数仓规范,数据模型较混乱。2021年3月份,幸福里业务过程及业务形态发生转变,业务主体由流量转为交易,为了满足业务高速发展需求,数据建设以快速落地、指标准确产出为主要目标,历史遗留问题治理较少。
随着业务发展逐渐稳定,数仓建设进入2.0阶段。由于数仓中大量线上数据和重要指标依然使用1.0阶段的老表,导致指标口径不统一,同时也存在历史表数据无人维护的问题,导致时效性差。另外,幸福里数仓也面临存量任务优化的问题。有些存量任务运行时间长、资源占用严重,团队亟需排查这部分问题。
 

解决方案

为了解决SLA延时问题,幸福里团队引入了火山引擎大数据研发治理套件DataLeap,通过DataLeap的三大能力,形成一套连贯、可复用的治理方案,最终形成SLA保障全链路高效管理。具体来看:
 
  • 通过数据治理能力,解决任务上游承诺并签署保障SLA的问题。数据治理平台支持任务负责人申报任务,并快速拉起上游完成SLA签署承诺,从而保障链路稳定性,这也是幸福里团队使用的核心功能。
  • 通过数据研发能力,解决SLA任务的基线监控问题。在任务多,依赖关系复杂的情况下,很难查找到重要任务的所有上游任务并进行监控。如果监控所有任务,又会产生很多无用报警,导致有用报警被忽略。因此,幸福里团队通过使用DataLeap的数据研发能力,将下游节点作为保障任务加入基线,形成需要监控的任务链路。
  • 通过数据质量监控能力解决Hive表监控问题。针对某些卡点任务进行表监控,一方面保障 SLA 及时性,另一方面保证整体任务准确性。
 
下文三个步骤,带你还原幸福里离线数仓治理项目全过程!
 

第一步:圈定SLA保障核心任务

幸福里团队首先根据业务需求,圈定出需要被SLA保障的核心任务,具体包括以下三类:
  • 线上核心任务,即直接展示给B端经纪人或C端用户的数据。
  • 管理驾驶舱数据,包括日报、周报、月报等。
  • 重点业务核心看板。例如,2022年幸福里重点业务在福州,因此对需要对福州数据提供优先保障,确保当地经纪人、店长等业务角色能准确、快速获取数据,以便制定相应推广策略。
 

第二步:制定全局保障方案

幸福里团队通过引入DataLeap数据治理平台,推进对核心任务的SLA治理工作。对于任务运行中的异常数据或突发事故,基于配置基线监控的运维能力,加强报警能力,另外通过数据质量监控平台完成核心维表及核心指标表监控,以提供更加稳定的数据服务。
 
在SLA治理环节,存在核心任务SLA保障不足,有发生线上业务事故的隐患问题。除此之外,SLA任务运维报警能力不足或者SLA签署时间不合理等,有SLA延迟隐患,造成破线事故。
 
对于新增SLA任务,数据治理平台【SLA保障】-> 【SLA管理】页面,点击【发起申报】,以申报单签署的形式达成SLA协议,在申报签署环节中,各个环节的变化将通过通知模块传递信息给相应负责人,实时通知降低信息交流成本,加速了SLA的达成。
 
火山引擎DataLeap数据治理平台SLA申报页面
 
幸福里团队任务签署SLA步骤
 
在基线报警环节,据相关业务人员介绍,只有34%的核心任务配置了基线监控,导致有发生线上业务事故的隐患,同时无效报警较多,造成无效起夜、运维压力较大。
 
火山引擎DataLeap支持圈选核心任务,并根据任务近30天产出表现,根据近30天75分位产出时间,产出时间波动方差、链路最长任务平均时长、下游任务总数、业务期望产出时间等作为输入数据,产出合理基线预期产出时间及预警buffer配置基线,还支持校准基线监控范围。
幸福里团队基线报警治理思路
 
幸福里平台有一个关系到经纪人核心利益的“幸福分”指标。当经纪人完成相应任务时,幸福分值增加。但当维表中数据缺失,在前台反映的结果则是“幸福分”不更新,对经纪人造成困扰。另外,据业务同学介绍,之前还出现过这样的案例:小李在数据库中的核心维度是“经纪人”,但在维表中,可能测试数据误导入或重复数据导入,导致小李对应到多个门店或对应到错误房源。
 
为了解决以上问题,幸福里团队在Hive表监控环节,引入了火山引擎DataLeap数据质量监控能力。对于业务核心关注的线上任务、管理驾驶舱数据以及重点业务核心看板等数据,通过数据质量监控平台完成数据波动监控、异常报警,避免因为数据质量导致的数据失信、决策失误等事故。
数据质量整体策略
 

第三步:量化SLA效果并复盘

在DataLeap数据治理平台中,SLA大盘展板支持提供当日SLA整体统计信息、SLA延迟趋势分析信息、SLA等级分布明细、任务健康度明细、团队SLA达成信息统计等丰富信息,是很多团队数据治理指标重要参照来源。
 
幸福里项目中的核心数据指标如SLA任务数量、报警数、起夜率等都体现在大盘展板中,量化项目推进效果,为风险判断、后续措施提供数据支持。
 

最终效果

自2022年6月-12月,幸福里离线SLA保障已经实现SLA事故天数0、SLA延迟天数为0,实现“0987”高质量服务评价体系目标。除此之外,线上核心任务基线覆盖率达到97.4%(较项目启动前提升63%)、电话报警量较项目启动前降低28.4%,大大降低运维成本,保证数据稳定性。
 
火山引擎DataLeap不仅解决了离线SLA保障的燃眉之急,更为幸福里团队形成了一套标准流程和规范。在事前,使用申报流程,规范SLA签署;在事中,完善报警及时性和准确性,降低误报率;在事后,及时跟踪报警情况,完善问题复盘及监控机制,沉淀公共解决方案,推动幸福里SLA治理健康、可持续发展。
数据质量实施过程
 
点击跳转大数据研发治理套件 DataLeap了解更多
 
 
 

从“13天”到“0天”延时,揭秘幸福里离线SLA保障最佳实践的更多相关文章

  1. 揭秘华为云GaussDB(for Influx)最佳实践:hint查询

    摘要:GaussDB(for Influx)通过提供hint功能,在单时间线的查询场景下,性能有大幅度的提升,能有效满足客户某些特定场景的查询需求. 本文分享自华为云社区<华为云GaussDB( ...

  2. setTimeout中0毫秒延时

    先来看段代码,思考一下执行的结果. alert(1); setTimeout(function(){alert(2);}, 0); alert(3); 估计很多人认为执行结果为1,2,3,原因就是认为 ...

  3. tensorflow报错:Attempting to fetch value instead of handling error Internal: failed to get device attribute 13 for device 0: CUDA_ERROR_UNKNOWN:

    就是在spyder跑上一篇文章的代码然后就报错: Attempting to fetch value instead of handling error Internal: failed to get ...

  4. Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  5. Web前端开发最佳实践(13):前端页面卡顿?可能是DOM操作惹的祸,你需要优化代码

    文档对象模型(DOM)是一个独立于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得DOM成为了JavaScri ...

  6. paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah

    paip.提升性能--多核编程中的java .net php c++最佳实践  v2.0 cah 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax ...

  7. Android 6.0 权限管理最佳实践

    博客: Android 6.0 运行时权限管理最佳实践 github: https://github.com/yanzhenjie/AndPermission

  8. MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则

    做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟 ...

  9. spring-boot-2.0.3之quartz集成,最佳实践

    前言 开心一刻 快过年了,大街上,爷爷在给孙子示范摔炮怎么放,嘴里还不停念叨:要像这样,用劲甩才能响.示范了一个,两个,三个... 孙子终于忍不住了,抱着爷爷的腿哭起来:爷呀,你给我剩个吧! 新的一年 ...

  10. [转]10分钟梳理MySQL知识点:揭秘亿级高并发数据库调优与最佳实践法则

    转:https://mp.weixin.qq.com/s/RYIiHAHHStIMftQT6lQSgA 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离 ...

随机推荐

  1. Unity学习笔记--基础

    基础 3D数学 Mathf函数库 print(Mathf.PI); print(Mathf.Abs(-10)); print(Mathf.CeilToInt(1.2f));//向上取整 print(M ...

  2. Python 正则表达式(RegEx)指南

    正则表达式(RegEx)是一系列字符,形成了一个搜索模式.RegEx 可用于检查字符串是否包含指定的搜索模式. RegEx 模块 Python 中有一个内置的包叫做 re,它可以用于处理正则表达式.导 ...

  3. 通过mybatis-plus的自定义拦截器实现控制 mybatis-plus的全局逻辑删除字段的控制 (修改其最终执行的sql中的where条件)

    需求:过滤部分请求不实现mybatis-plus的逻辑删除 看到网上关于mybatis-plus的自定义拦截器的文章有的少 想了想自己写了一篇 欢迎参考 指正 通过springboot的拦截器 在请求 ...

  4. jenkins原理篇——成员权限管理

    大家好,我是蓝胖子,前面几节我讲述了jenkins的语法以及我是如何使用jenkins对测试和正式环境进行发布的.但正式环境使用jenkins还有一点很重要,那就是权限管理.正式环境的权限往往不能对所 ...

  5. Android 11 后的应用数据和文件

    Android应用数据的保存方式有四种,分别是应用专属存储空间.共享存储.偏好设置.数据库. 应用专属存储空间 应用专属存储空间:存放应用专属文件,主要包括两个空间,卸载后移除 内部存储空间:位于系统 ...

  6. LabVIEW基于机器视觉的实验室设备管理系统(4)

    目录 行动计划 后面板连线 初始化 ​返回 ​ 注册 账号限制 查重账号或者姓名 确认密码 注册 效果演示 我们上一期制作完了给账户修改密码,那么我们这一期就来完成账户注册这一功能.老规矩哦,先来计划 ...

  7. 小闫s人格大爆发 | 坐椅子上?study:sleep

    hadoop视频 搭建环境 刷单词 看电影

  8. 2021牛客多校第一场 I题(DP)

    题意 给定一个长度为 \(n(n<=5000)\) 的排列,两个人轮流从这个序列中选择一个数,要求当前回合此人选择的数大于任意一个已经被选择的数,并且该数在数组中的位置 \(i\) 与此人上一次 ...

  9. 网安靶场环境_DVWA-读取文件报错File not found! Cookie中有两个security键

    DVWA-文件包含漏洞-读取文件报错-ERROR: File not found! Cookie中有两个security键 1 问题复现 (1)登录DVMA后,设置DVWA Security为Low. ...

  10. MySQL账号锁定与解锁

    MySQL提供了多种方法来锁定解锁账号,下面是几种常用的方法: 1.使用ALTER语句锁定账号 锁定账号: ALTER USER 'username'@'localhost' ACCOUNT LOCK ...