当前位置: 首页 > 科技观察

一文看懂字节跳动如何解决SLA治理问题

时间:2023-03-20 13:32:25 科技观察

作者|开发包团队基于字节跳动的分布式治理理念。数据平台数据治理团队开发了SLA保障平台,在字节跳动得到广泛应用。并且支持大部分数据团队的SLA治理需求,每天保障的SLA链路数超过千条,解决了数据SLA对齐难、保障难、管理难的问题。一、背景介绍SLA(ServiceLevelAgreement):服务水平协议,对于互联网公司来说,是网站服务可用性的保证。数据SLA,即数据可用性保证,一般以数据输出时间作为SLA。在海量数据任务的开发场景中,由于业务多样化、数据量大、数据任务复杂等问题,数据任务链路存在依赖复杂、链路长、跨团队节点依赖等问题。因此,在实际的开发运营过程中,任务负责人为了保证自己数据的及时输出,会遇到以下困难:沟通成本高:任务负责人试图与上游任务负责人达成SLA,但是由于上游任务数量多(上千),跨越多个团队,沟通成本非常高,权责不明确:由于环节复杂,如何制定SLA?谁负责保证SLA?运维压力大:上游任务延迟无法及时发现,导致下游任务负责人承担了大部分运维压力,运维效果差,经常发现延迟有错过了补救的时间。为解决上述问题,字节跳动数据平台采用自研SLA保障平台,规范推进各业务团队任务环节管理,有效保障数据SLA,数据SLA达标率达到99.1%。一组任务的理想完成时间与对应的SLA之间的关系如下图所示,即每个任务及其上游任务在对应的SLA之前完成,这也是平台的治理目标。2.应用场景SLA保障平台除了解决以上难点外,针对不同用户还有以下使用场景:数据业务方:“我们团队的业务非常依赖一个重要的数据,希望它能够能保证SLA”数据负责人:“我们团队有很多数据对外承诺了SLA。提高团队内部核心数据的数据质量,对接SLA管理,及时发现风险,进行事故处理检讨改进,最终不断优化数据质量。”根据以上不同角色的需求,SLA保障平台提出了自己的解决方案。针对团队数据治理需求,平台提供完善的治理看板能力;针对任务环节复杂导致的SLA达成难,平台通过各种优化简化了SLA达成流程;针对下游任务运维压力问题,平台优化通知系统,及时广播SLA状态。那么,SLA保障平台的核心模块有哪些呢?该平台如何运作?3、核心概念介绍3.1角色:目前SLA保障平台中核心角色分为三类,即:声明者:提交SLA声明的人,一般为数据业务方,提交声明的目的是保证业务数据的SLA;administrator:为满足数据治理端需求而设置的角色,负责申报的审核、审批、管理、统计、登记、审核等,目的是为您的团队持续优化数据质量。任务负责人:待保障SLA数据链路中的任务负责人,负责确定并签署负责任务的SLA,平台将根据已签署的SLA进行保障;3.2任务:生产数据的任务,通过数据任务元信息可以构建整个数据生产环节的完整DAG。本平台涉及的任务元信息一般需要包括以下内容:3.3申报单提交的申报内容称为“申报单”。声明表中一般包含的核心内容如下:4.声明详细说明签署流程SLA保证的前提是先达成SLA协议。在SLA保障平台中,SLA协议以声明签署的形式达成。该平台的核心功能是优化SLA达成过程。首先通过“系统卡点计算”减少待签任务数量,然后通过“SLA推荐计算”自动签出部分任务,最后智能提供合适的剩余待签任务。SLA,进一步降低签约成本。在申报和签署过程中,每个环节的变化都会通过通知模块传递给相应的负责人。实时通知降低了信息交换的成本,加速了SLA的实现。4.1流程介绍上图为申报签字的一般流程。实际操作中,如任务链接变更、SLA时间讨论待确认等特殊情况,申报和签署流程会进行微调。首先,申报人需要填写申报表。申报者提交后,系统会根据申报单中的申报任务拉取所有上游任务,形成完整的DAG,并分析任务环节。链路分析的结果是后续算法的前提,也是管理员审批的重要参考因素。可以让用户快速了解自己的任务在链路中的位置和上下游的操作。理想情况下,为了保证申报任务的顺利进行,该任务的所有上游任务都需要签署SLA来完成签署。然而,环节复杂导致上游任务多、跨团队沟通成本高、SLA难以确定等问题成为整体SLA达成的最大障碍。这个障碍可以通过“卡点计算”和“SLA推荐计算”来克服。4.2卡点计算系统采用一定的“卡点策略”来计算DAG中需要签名的一些任务。这样的任务称为“卡点任务”,这个过程称为“卡点计算”。卡点任务计算完成后,签约过程中可以忽略其他任务,大大降低签约成本。一个声明会关联多个任务(即声明任务及其上游卡任务),同样一个任务也会关联多个声明,因为在一个DAG中,声明任务可能从任意一个节点开始,所以两者或者是N:N关系。当两个申报表有部分任务列表重叠时,比如Task4关联了两个申报表,则该任务的申报人、治理团队等数据为两个申报表去重后的集合,级别是所有报关单中最高的。4.3SLA推荐计算利用任务及其上下游任务的历史运行信息,结合推荐算法,得到任务的推荐SLA。这个过程称为SLA推荐计算。在负责人签署SLA之前,SLA推荐算法会为每个任务智能计算出推荐的SLA,并进一步利用算法自动签署部分待签署任务,进一步降低签署成本。据平台统计,该功能可自动签署近40%的SLA,是核心功能之一。对于剩余待签任务,算法推荐的SLA将提供给任务负责人。任务负责人可以直接选择直接签署此SLA,也可以自己决定SLA。总的来说,智能推荐的SLA已经可以满足大部分需求。通过推荐SLA,任务负责人可以更快地做出签约决定,再次降低签约成本。4.4系统保障监控报关单签署后,平台将为报关单中的任务提供保障服务。保障服务的核心是通过监控SLA的状态变化,及时广播消息通知,及时为相应责任人提供第一手信息,从而降低运维成本。对于离线任务,其SLA的评估主要基于其完成时间和承诺的SLA。SLA的状态分为四种,即:SLAnotreached:当前时间,任务还没有产生,还没有到SLA时间(继续监控);Achieved:任务已经完成,完成时间在承诺的SLA之前(发送就绪通知);Delayed:任务未完成,当前时间在承诺的SLA之后(发送延迟通知);延迟(输出):任务已经完成,但完成时间晚于承诺的SLA(发送延迟输出通知);从下图中我们可以看出任务实现和未实现,其SLA状态随时间变化。SLA的实时状态是数据业务方需要的重要信息,因此平台会监控所有任务的SLA,当SLA状态发生变化时,会实时通知相关人员,相关人员知晓具体情况SLA根据收到的通知。并采取对策。5.审核管理详解审核管理是本平台提供的响应式治理服务的实现方式,是数据治理方的重点关注点。评审管理进一步分为问题管理和事件管理。问题管理重在“why”——即梳理分析SLA断线的原因,事件管理重在“howto”——即如何处理SLA断线事故。5.1问题管理问题管理模块的总体目标是满足数据治理团队对SLA问题的注册管理,支持对注册的问题数据进行不同维度的根因数据分析,协助用户进行根因治理问题,积累问题治理经验。平台在进行系统保障监控时,会在SLA延迟时广播通知,持续提醒负责人登记问题。登记问题时,平台提供一组根因树辅助登记,明确问题根因类别,便于统计分析。任务负责人登记问题后,将积累的数据展示在问题板上,数据治理方据此对问题进行分析总结。平台保证SLA延迟记录与问题一一对应,并在问题板上关联SLA详情,包括任务链接、负责人、任务起止时间等。问题登记往往是一个由多到少的过程。前期出现的问题一一解决后,对后期治理起到很好的借鉴和警示作用。其数据价值如下:不同SLA问题类型的趋势分布,TargetedGovernanceIssues有多少SLA问题是由同一个rootcause引起的,有多少数据资产受到影响,哪些数据资产经常出现SLA问题,SLA问题的分类issues,以及根因引起的SLA问题的经验总结,方便后续解决类似问题,推荐协助快速定位根因。根据平台运行记录,常见问题包括资源队列阻塞、上游任务失败、数据倾斜等。某数据团队双月题登记总结如下。问题数量和问题根因类型得到有效收敛:5.2事件管理事件管理用于记录SLA断线事件的回顾和改进管理。每个事件对应至少一个SLA问题记录,每个SLA问题并不一定会导致一个事件。任何节点都可能发生事故。一般在SLA线被打破并造成实际业务影响后,需要进行事件注册,事件注册也会关联相关的SLA信息。一次事故的处理流程如下:如图所示,事故主要包括SLA事故详情、SLA事故根源、改进方案和SLA消耗。这里可以注意以下几点:事故登记时,会根据事故的详细情况,确认事故的根本原因,并请相应的负责人提出改进方案。用户可以订阅事故。当事故恢复状态和改善计划完成状态发生变化时,将通知订阅者该任务的改善计划。计划负责人每天都会提醒,在计划完成之前,SLA事故管理平台的数据是数据治理方治理结果的重要依据,也是使用的体现整个SLA保障平台的作用,方便后期随时查看,定位相关SLA信息,对比查看不同数据团队SLA事故的整体情况,取长补短,跟踪事故改进计划管理,验收治理效果服务水平协议。以下为某团队双月事故统计:从以上数据可以看出,该平台有效保障了核心任务的稳定输出,有助于降低稳定性事故发生的概率。现在每两个月发生一次此类事故的次数长期保持在个位数。6.平台架构总结平台整体主要分为三大块:基础组件、规划治理服务、响应式治理服务。系统组件架构图如下:6.1规划治理服务,以SLA的形式通过主动规划和约定来保证任务输出。程序化治理是发现与SLA相关的问题的过程。计划治理服务是指“通过签订申报单的方式提供服务以达成SLA协议”,包括过程中申报单的生命周期管理操作、申报任务的链路分析、SLA达成后的系统保障监控。在“声明和签署过程”中。6.2响应式治理服务响应式治理是指通过审核管理模块对SLA相关事件/问题进行注册、管理、审核的过程。发现SLA相关问题后,需要对问题进行处理,形成一个完整的闭环,发现问题后进行的治理成为响应式治理。响应式治理服务模块抽象出问题登记和事故管理两个模块,更灵活地服务于数据SLA问题归因和事故统计。6.3基础组件基础组件提供配置、广播、看板等基础功能模块服务,为规划和响应式治理服务提供必要的支持,是整体SLA保障服务不可或缺的组成部分。6.3.1系统配置治理团队配置治理团队即SLA管理团队。每个申请表都需要绑定一个治理团队,治理团队主要负责审批申请表。数据团队将数据团队配置为数据的所有者。一个数据团队对应一个业务团队。数据团队的设计保证了各业务团队的独立治理需求。通过数据团队灵活的配置支持,平台可以更细粒度地划分数据和任务的归属,解决权责不明的问题。订阅配置订阅管理是配置订阅信息的平台。此平台上的订阅是用于SLA监控的通知广播。通过订阅管理,可以指定通知并发送给个人或群组。订阅管理是SLA监控保证服务的一个组成部分。6.3.2通知广播通知广播是本平台提供的基础通知能力,是降低通信成本、实现服务保障、提升用户体验的重要手段。在重要节点变更、用户操作、SLA状态变更等情况下,将进行广播通知。有多种形式的通知广播。根据不同场景,有普通短信、紧急信息、卡片通知、邮件通知、电话通知等。6.3.3SLA板SLA板是数据治理方最关心的部分。看板提供当日SLA整体统计信息、SLA延迟趋势分析信息、SLA等级分布明细、任务健康明细、团队SLA达成信息统计,是很多团队数据治理指标的重要参考来源。七、未来展望未来,字节跳动数据治理团队将继续打磨SLA保障平台,在卡点策略优化、SLA推荐算法优化、基于SLA的任务管理机制等方面持续提升技术能力:stuck积分策略优化:卡点计算作为签约流程优化的核心部分,卡积分策略优化代表着签约流程的进一步简化,未来我们可以探索利用更多有效信息来优化卡积分策略。SLA推荐算法优化:SLA推荐算法是本平台的计费算法之一,已申请专利。随着业务的扩展和不同类型任务的支持,该算法还有很大的改进空间,比如进一步提高自动签到率,进一步提高准确率等。基于SLA的任务管理机制:任务签署SLA信息后,可以依赖SLA信息优化资源调度,优化资源分配。同时,本文介绍的部分能力已经通过火山引擎DataLeap产品向企业客户开放,欢迎关注。