阿里妹攻略:突如其来的疫情,让线下娱乐几乎陷入停顿。全国人民网络娱乐需求激增,在家看剧、在家上课、在家互动,时刻关注疫情。每时每刻,都有大量的用户在优酷上搜索自己想看的内容。数千万的视频量、数十亿的信息量,如何将信息及时有效地披露给用户?如何保证数据准确呈现?阿里娱乐有专门的搜索引擎算法团队做相关探索。但是你知道吗?在算法业务的背后,面对数以亿计的视频数据,也有一支技术精湛的测试团队来保障庞大数据系统的数据质量。阿里大文娱测试开发专家奚岩将通过本文介绍阿里大文娱如何构建实时数据质量保障体系,从而提高搜索引擎数据的全面、快速、准确的结果。希望对大家有所启发。一、背景优酷视频搜索是娱乐分发领域的核心入口之一。数据源多,业务逻辑复杂。特别是实时系统的质量保证是一个巨大的挑战。如何保证数据质量,如何衡量数据变化对业务的影响?本文将给出详细解答。2.状态分析搜索数据流程如下图所示。从内容生产到索引生成,经历了复杂的数据处理过程。千余张中间表,实时数据消耗消失,难以追踪和重现。从上图可以看出,整个系统以实时流模式为数据流转主体,业务层面以实体类型扁平化,入口统一分层解耦,大大增加了业务的实时性和稳定性。但另一方面,这个庞大的流式计算和数据业务系统也给质量保障带来了巨大的挑战。构建从0到1的实时数据质量保障体系,同时保证数据向搜索引擎业务的平滑过渡是我们的责任。面对考验。3、实时数据质量保证体系解决方案的质量保证需要透过现象看本质。通过对架构和业务的分析,可以发现整个流计算业务体系有几个关键点:流计算、数据服务、全链路、数据业务(包括搜索引擎的索引和汇总)。整体质量需求可分为:数据内容基础质量保障流链路数据正确性和时效性保障数据变更对业务无负面影响线上线下全链路闭环相结合理论体系为用于设计我们整体的质量保证方案,如下图所示:四、离线质量1、实时转储数据测试,包括链路节点比对、时效性、正确性、一致性、可用性等,依托阿里的技术资源设计实时转储方案如图:2.数据一致性一致性主要是指各链路节点消费的一致性。重点是保持整个链路各个节点的数据处理和消费一致。通过比较时分频率完成一致性验证。方案如下图所示:我们采用不同的数据流频率传输到实时链路进行消费,利用各层的转储机制进行数据转储,然后取不同的采样间隔计算分析dumpdata,分为三种不同的数据频率模式:natural-flow:自然消费的数据流来源于线上真实的数据消息通道,即自然频率的数据消费。这种模式下的测试更适合实际的业务场景。high-frequency:高频数据流,使用频率超过真实峰值或其他设定值的数据发送到实时消费链路,是压力测试或检查链路稳定性时常用的测试策略;low-frequency:低频数据流,将显着低于真实值或特定低频数据发送到实时消费链路。如果在数据链路中有一个基于数据量的批处理策略,暴露的会更多。比如批处理的阈值是100,在业务低谷的时候很有可能达不到策略阈值,这批数据就会出现延迟。更新一下,这个批处理策略可能不太合理。同时,低频消费对于实时链路处理的部分资源的检测和链路的最低可用性也有一定的意义。3、数据正确性数据正确性是对数据内容具体值的检验。总的原则是:第一,影响用户体验的高质量数据;二是业务层直接使用的核心业务相关数据内容;第三,由于中间层的核心业务相关数据没有对外暴露,所以会转化为业务引擎需要的最后一层的业务数据。因此,在中间层,我们通过通用规则和业务规则来保证基础数据的质量,同时对比上下游数据内容的变化,保证整个流程的准确性。4.数据可用性数据可用性是指数据链路最终产生的数据的安全合理使用,包括存储、查询读写效率、数据安全读写、不同用户提供的数据在使用上的一致性,ETC。。可用性保障主要关注数据存储、查询、数据协议(数据结构)三大维度,衡量标准关注三个方面:易读易写:数据的结构化存储和写入必须高效合理;服务一致性:数据结构化存储后,对外提供的服务有很多,比如PB协议、API、SDK等,需要根据业务来考虑。比如SDK、PB等对外使用的方式都会涉及到协议版本。不同版本可能数据结构不一致,导致对外使用的数据不一致;安全可靠:专注于稳定、可靠、高效的存储,兼顾效率和稳定性,同时更加注重安全,防范数据任意改写、恶意dump等严重影响线上安全的风险数据使用。5.时效性由于实时链接的流式特点和多个实体多次更新的特点,测试时效性有两个核心问题:如何跟踪和确定整个链接中唯一消息的消费;Cost获取每个节点进程的数据链接时间。我们抽象出一个trace+wraperstreamingtrace模型如下图所示:获取链路过程中每个节点的时间,包括传输时间和处理时间。对于track-wraper,需要约定统一的track规范和格式,保证这部分信息对业务数据没有影响,不增加较大的性能开销。如下图所示,我们最终信息中trace&track-wraper带出的trak-info采用了json格式,方便track-info的扩展。这样就很容易获取任意信息,计算出每个节点的时间。我们还可以通过抽样计算一些统计指标来衡量时效性:筛选出时效性明显异常的数据,进行持续优化。6、性能测试实时数据链路本质上是一套全链路的数据计算服务,因此我们也需要对其性能进行测试。第一步,我们首先对整个链路指定被测系统的服务。包括两部分性能,Bigku的反查服务,即HSF服务,和Blink的计算链路节点。第二步是准备数据和工具。压力测试需要的业务数据是消息。准备数据有两种方法。一是尽可能模拟真实的消息数据。我们只需要获取消息的内容就可以进行自动程序模拟。另一种是使用更真实的业务数据转储进行流量回放。由于数据链路的特性,压测链路上的压力转化为发送消息数据,那么如何控制数据发送呢?有两种方式:首先,我们开发一个发送消息的服务接口,将其转化为一个常规的接口服务压测,然后你可以使用阿里的任何压测工具,整个测试就变成了一个常规的性能测试;其次,我们可以利用闪烁消息回收机制,重复消费历史消息进行压测,但是这种方式有一个缺点,就是无法控制消息的频率。7、压测及指标采集根据业务情况采集指标。指标包括服务指标和资源指标。可以参考我们的一些性能测试报告示例(数据被截断):五、在线质量1、服务稳定性保障稳定性包括两个层面,一个是实时计算任务链路各节点的稳定性,另一个是是内置服务的稳定性。2.实时计算由于实时计算采用全眨眼计算方式,我们可以利用眨眼系统本身的特点来监控任务。每个节点的任务需要配置稳定性指标的监控,包括rps、delay、failover等,效果示例如下:3.实体服务实体服务为HSF服务,使用阿里统一监控平台完成监控整体服务能力。示例如图:总体指标包括以下内容:4.数据消费保障是在数据消费层面,重点关注各链路层面的消费能力和异常情况。基于积累的数据统计轨迹报表能力,结合平台完备的基础能力,完成消费保障。分为两层:核心层:消息出口实体消息统计监控,包括消息总量和消息内容分类统计监控。如示例所示:中间层:包括各个实体消息处理的accept,以及处理逻辑层的success、fail、skip指标,这样我们就可以知道各个链路层收到的消息的消费情况,successful实时容量情况下的处理、错误和合理异常。如图示例:5.数据内容保障数据内容层,构建数据全面更新、数据内容检验、业务效果精准数据检验三位一体,实现数据生产、消费、可用性的闭环检验,如图:从图中可以看出,我们的数据内容保证分为三个部分:sampler:sampler通过blink实时消费消息提取链路中待测试的数据,通常只提取数据ID;采样策略分为间隔和随机两种。间隔策略是在固定的时间间隔取特定的数据进行检查;随机是指按照一定的随机算法策略对数据进行抽样检验。data-monitor:检查数据内容,包括更新及时性和数据特征属性。effect-monitor:数据正常更新后,查看在线业务的实时效果。检查的核心点包括搜索的两个基本作用——召回和排序,以及与用户体验相关的数据属性检查。部分数据实时效果示例图:6.实时干预和自动修复实时干预通道,如下图所示:实时干预系统会针对消息内容和干预进行消息组装和通道分发机制根据不同的干预要求。主渠道业务链接正常时,如果需要强制更新某个ID维度的数据,只需要输入ID,按照正常的主链接更新即可。当需要对指定的消息通道强行干预某些特定的数据内容时,可以在数据内容层面进行更细致、更精准的干预。紧急强制干预是指当主链路中间层的处理出现较大延迟或完全阻塞时,会导致下游业务层的数据无法正常获取输入。通过主逻辑的全量拷贝机制,建立VIP消息通道,导出消息直接通过VIP通道进行干预,保证正常业务数据可以优先更新。6.质量与效率效率水平主要是指研发的快速自测和上线,以及线上问题的高效排查和定位两个维度,以达到保证快速迭代和节省人力投入的目的。因此,我们提供了两个效率提升系统:实时调试和实时全链路跟踪透视。1.实时调试实时调试是基于实时消息通道能力和调试机制的一组服务。在研发自测、问题复现等场景下非常有用。您可以通过调试模式了解更多链路的业务层处理细节。业务层只需根据数据需求自主定制调试内容,无需其他接入成本,通用性和可扩展性强。平台效果图:填写程序ID,发送消息自动进入实时调试模式。同时还配备了指定消息内容的专家模式,方便研发进行个性化的消息内容特定测试和干预。2.全链路追踪我们提炼了全链路实时追踪的通用模型,同时做了更加精细化和定制化的追踪机制。结合实时业务链路的逻辑视图,我们来看trace的系统实现:从链路层来看,目前整体分为4个业务块,数据流向依次展示:1)bigku_service显示的是当时消息的镜像数据。2)mid_show_f是算法层面的基础特征,即一级特征,包括业务信息和系统信息(工程关注的指标数据,主要用于指导优化)。3)sum_video_f和ogc属于搜索链接上的数据。一般程序中都会有一些复杂的截断逻辑。数据层的透视图以字典表的形式提供,可以看到链接的所有信息。7、产品体验实时自动保障我们在实时数据内容质量方面制定了综合效果监控的质量计划,建立闭环链路效果保障体系,实时发现问题,实时-时间定位,实时修复,取得了很好的效果。系统方案如下图所示:后记数据是算法的生命之源,保证良好的数据质量,提高优质内容的分发效率,既可以留住用户,又可以让用户观看高质量的内容。在这个流行内容的特殊日子里制作优质视频。数据质量之路漫长而艰难。未来我们将深入每个节点和逻辑,探索海量数据与用户体感之间的关系,助力算法业务的发展,为用户提供娱乐带来的精神滋养。
