亿级搜索系统的基石,如何保障实时数据质量?

简介: 突然而至的疫情,让线下娱乐几乎停摆。全国人民对于线上娱乐需求激增,在家追剧、在家上课、在家互动,还要时刻关注疫情动态。每时每刻,都有海量用户在优酷搜索自己想看的内容。千万级别的视频量,几十亿级别的信息量,如何能做到将信息及时有效的透出给用户?怎样保障数据准确无误的呈现呢?

阿里文娱有专门的搜索引擎算法团队做相关的探索。可你知道吗?在算法业务背后,面对数亿的视频数据,还有一支技艺高超的测试团队,在保障庞大数据系统的数据质量。

阿里文娱测试开发专家熙闫将通过本文讲述阿里文娱是如何构建实时数据质量保障体系,进而提升搜索引擎数据全面、快速、准确效果的,希望对大家有启发。

一、背景

优酷视频搜索是文娱分发场的最核心入口之一,数据源多、业务逻辑复杂,尤其是实时系统的质量保障是一个巨大挑战。如何保障数据质量,如何衡量数据变化对业务的影响?本文会做详细解答。

二、现状分析

搜索数据流程如下图所示,从内容生产到生成索引经历了复杂的数据处理流程,中间表多达千余张,实时数据消费即消失,难以追踪和复现。

image.png

从上图可以看出,整个系统以实时流模式为数据流通主体,业务层面按实体类型打平,入口统一分层解耦,极大的增加了业务的实时性和稳定性。但是另一方面,这种庞大的流式计算和数据业务系统给质量保障带来了巨大的挑战,从0到1建设实时数据的质量保障体系,同时保证数据对搜索引擎业务的平滑过渡是我们面临的考验。

三、实时数据质量保障体系方案

质量保障需要透过现象看本质。通过对架构和业务的分析,可以发现整个流式计算的业务系统有几个关键点:流式计算、数据服务、全链路、数据业务(包括搜索引擎的索引和摘要)。整体的质量诉求可以归类为:

  • 基础数据内容质量的保障
  • 流式链路的数据正确性和及时性保障
  • 数据变化对业务效果的非负向的保障

结合线上、线下、全链路闭环的理论体系去设计我们的整体质量保障方案,如下图所示:

image.png

四、线下质量

1.实时dump

数据测试包含链路节点比对、时效性、正确性、一致性、可用性等方面,依托于阿里技术资源设计实时dump的方案如图:

image.png

2.数据一致性

一致性主要是指每个链路节点消费的一致性,重点在于整体链路的各个节点的数据处理消费情况保持一致,通过对数据消费的分时分频率的比对完成一致性验证。方案如下图:

image.png

我们采取不同的数据流频率输送给实时链路进行消费,利用各层的dump机制进行数据dump,然后取不同的抽样间隔对dump数据计算分析,分为三种不同的数据频率模式:

  • natural-flow:自然消费的数据流,是源于线上真实的数据消息通道,即自然频率的数据消费,以该模式进行测试更贴合实际业务情景
  • high-frequency:高频数据流,采用超出真实峰值或者其他设定值的数据频次输送给实时消费链路,在压测或者检测链路稳定性中是一个常用的测试策略;
  • low-frequency:低频数据流,采用明显低于真实值或者特定的低频次数据输送给实时消费链路。如果数据链路中有基于数据量的批量处理策略会暴露的比较明显,比如批量处理的阈值是100,那么在业务低峰时很有可能达不到策略阈值,这批数据就会迟迟不更新,这个批量处理策略可能不是合理。同时低频次的消费对于实时链路处理的一些资源、链接的最低可用度这些层面的检查也是有意义的。

3.数据正确性

image.png

数据正确性是对于数据内容的具体值的检查,总体原则是:

  • 首先,高优保障影响用户体验的数据;
  • 其次,保障业务层直接使用的核心业务相关的数据内容;
  • 再次,中间层的核心业务相关数据由于不对外露出,会转换成业务引擎需要的最终层的业务数据。所以中间层我们采用通用的规则和业务规则来做基础数据质量保障,同时对上下游数据内容变化进行diff对比,保障整个流程处理的准确性。

4.数据可用性

数据可用性指的是数据链路生产的最终数据是能够安全合理使用的,包括存储、查询的读写效率、数据安全读写、对不同的使用方提供的数据使用保持一致性等。

image.png

可用性保障主要关注数据的存储、查询、数据协议(数据结构)三个大的维度,衡量的标准重点关注三个方面:

  • 易读写:数据的结构化存储和写入必须是高效合理的;
  • 服务一致:数据在结构化存储后,对外提供的服务有很多种,比如PB协议、API、SDK等,需要根据业务去考量。比如SDK、PB等对外提供使用的方式会涉及协议版本,不同的版本可能数据结构不一致导致对外使用的数据不一致性;
  • 安全可靠:重点关注存储稳定、可靠、高效,兼顾效率和稳定性,同时更要关注安全性,防范随意改写数据、恶意dump等严重影响线上数据使用安全的风险。

5.时效性

由于实时链路的流式特性和多实体多次更新的特性,在测试时效性时核心问题有两点:

  • 如何去跟踪确定一条唯一的消息在整个链路的消费情况;
  • 如何低成本获取每个节点过程的数据链路时间。

我们抽象出一个trace+wraper的流式trace模型如下图:

image.png

获取链路过程的每个节点的时间,包括传输时间和处理时间。对于track-wraper需要约定统一的track规范和格式,并且保证这部分的信息对业务数据没有影响,没有增加大的性能开销。如下图,我们最终的信息中经过trace&track-wraper带出来的trak-info,采用json格式方便track-info的扩展性。

image.png

这样就很容易去获取到任意信息,计算每个节点的时间。

image.png

我们也可以通过抽样计算一些统计指标衡量时效:

image.png

对于时效性有明显异常的数据可以筛选出来,进行持续优化。

6.性能测试

实时数据链路本质是一套全链路数据计算服务,所以我们也需要测试它的性能情况。

第一步,我们先具体化全链路的待测系统服务。

image.png

包括两部分的性能,Bigku的反查服务,即HSF服务,再就是blink的计算链路节点。

第二步,准备数据和工具。

压测需要的业务数据就是消息。数据准备有两种方式,一种是尽可能模拟真实的消息数据,我们只要获取消息内容进行程序自动模拟即可;另外一种会采用更真实的业务数据dump引流,进行流量回放。

由于数据链路的特性,对压测链路施压就是转成发送消息数据,那么如何控制数据发送呢?有两种方式:

第一种我们开发一个发送消息的服务接口,转变成常规的接口服务压测,然后可以采用阿里的任何压测工具,整个测试就变成常规的性能测试;

第二种我们可以利用blink消息回追的机制,重复消费历史消息进行压测,不过这种方法有弊端,无法控制消息的频率。

7.压测和指标收集

根据业务情况来收集指标,指标包括服务本身的指标和资源指标,可以参考我们的部分性能测试报告示例(数据有截断):

image.png

五、线上质量

1.服务稳定性保障

稳定性包括两个层面,一是实时计算任务链路的每个节点的稳定性,二是内置服务的稳定性。

2.实时计算

由于实时计算采用全blink的计算方式,我们可以利用blink系统本身的特性来做任务的监控。每个节点的任务都需要配置稳定性指标的监控,包括rps、delay、failover等。效果示例如下:

image.png

3.实体服务

实体服务是HSF服务,采用阿里统一的监控平台来完成整体服务能力的监控,示例如图:

image.png

整体指标包含以下内容:

image.png

4.数据消费保障

在数据消费层面,重点关注每个链路层级的消费能力和异常情况。基于积累的track-report能力进行数据统计,结合平台完备的基础能力来完成消费保障。分为两层:

核心层:消息出口的实体消息统计监控,包括整体数量和消息内容分类统计监控。如图示例:

image.png

中间层:包括每个实体消息处理的accept,处理逻辑层的success、fail、skip指标,便于我们实时知晓每个链路层收到的消息、成功处理、错误和合理异常等消费能力情况。如图示例:

image.png

5.数据内容保障

数据内容层,建设综合数据更新、数据内容检查、业务效果三位一体的精准数据检查,达到数据生产、消费、可用性的闭环检测,如图所示:

image.png

从图中可以看出,我们数据内容保障分为三部分:

  • sampler:抽样器,通过blink实时消费消息在链路中抽取待测数据,通常是只抽取数据ID;抽样策略分间隔和随机两种。间隔策略就是取固定时间间隔的特定数据进行检查;随机则根据一定的随机算法策略来抽样数据进行检查。
  • data-monitor:是做数据内容检查,包括更新时效性和数据特征属性检查。
  • effect-monitor:数据正常更新之后,对在线业务实时产生的效果影响进行检查,检查的核心点包括搜索的两大基本效果——召回和排序,以及用户体验相关的数据属性的检查。

部分数据实时效果示例图:

image.png

6.实时干预与自动修复

实时干预通道,如下图:

image.png

实时干预系统会根据不同的干预需求,对消息内容和干预机制进行消息组装和通道分发。

  • 当主通道业务链路正常时,若需要强制更新一个ID维度的数据,只需要输入ID走正常主链路更新即可。
  • 当需要强制干预某些具体的数据内容到指定的消息通道时,则可进行数据内容级别的更详细的精准干预。
  • 急强制干预,是指当主链路中间层处理有较大延迟或者完全阻塞时,会造成下游业务层数据无法正常获取输入。通过主逻辑全copy的机制建立了一个VIP的消息通道,通过VIP通道去直接干预出口消息,保证业务数据正常能进行优先更新。

六、质量效能

效能层面主要指:研发能快速自测上线,线上问题能高效排查定位这两个维度,以期达到保证快速迭代、节省人力投入的目标。所以我们提供了实时debug和实时全链路trace透视两大提效体系。

1.实时debug

实时debug是基于实时消息通道能力和debug机制建立的一套服务,在研发自测、问题复现等场景有很大用途,可以通过debug模式详细了解链路的业务层处理细节,业务层只需要按数据需求自主定制debug内容,无需其他接入成本,具备很强的通用性和扩展性。

image.png

平台效果图:

image.png

填入节目ID,发送消息就会自动进入实时debug模式。

同时还配备了指定消息内容的专家模式,方便研发进行单独的消息内容制定化测试和干预。

image.png

2.全链路trace

我们提炼了一个全链路实时trace的通用模型,同时做更精细定制化的trace机制。结合实时业务链路逻辑视图,来看下trace的系统实现:

image.png

链路层视角,目前整体分为4个业务块,数据流按顺序进行展示:

image.png

1)bigku_service 展示了当时消息的镜像数据。

image.png

2)mid_show_f 为算法层面的基础特征,即一级特征,包含了业务信息和系统信息(工程关注的指标数据,主要用来指导优化)。

image.png

3)sum_video_f 和 ogc属于搜索链路上的数据,一般在节目里面会有一些较为复杂的截断逻辑,通过字典表的形式提供数据层的透视视角,可以看到链路的全部信息。

七、产品体验实时自动化保障

我们在实时数据内容质量方面做了融合效果监控的质量方案,建立了实时发现问题、实时定位、实时修复的闭环链路效果保障体系,起到了很好的效果。体系方案如下图:

image.png

后记

数据是算法的生命之源,保障好数据质量,提高优质内容的分发效率,既能留住用户,也能让用户在疫情这段特殊的日子里看到高质量的视频内容。数据质量道阻且长,未来会深入每个节点和逻辑,探索海量数据和用户体感的关系,能对算法业务发展有帮助作用,也能为广大用户感受到文娱带来的精神滋养。

相关文章
|
测试技术
流媒体服务器性能测试
Hello!大家好,我是资深测试工程师Jackie,今天我来和大家一起对云视睿博的高性能流媒体服务器NTV Media Server G3做一次性能测试。 该测试流程,可以作为参照测试流程用于测试流媒体服务器性能。
6526 0
|
10月前
|
自然语言处理 安全 API
API First:模型驱动的阿里云API保障体系
本文介绍了阿里云在API设计和管理方面的最佳实践。首先,通过API First和模型驱动的方式确保API的安全、稳定和效率。其次,分享了阿里云内部如何使用CloudSpec IDL语言及配套工具保障API质量,并实现自动化生成多语言SDK等工具。接着,描述了API从设计到上线的完整生命周期,包括规范校验、企业级能力接入、测试和发布等环节。最后,展望了未来,强调了持续提升API质量和开源CloudSpec IDL的重要性,以促进社区共建更好的API生态。
|
6月前
|
人工智能 自然语言处理 应用服务中间件
Bolt.diy 创意建站方案测评 | 不懂代码,你也可以快速建站
本文详细介绍了一款名为Bolt.diy的创意建站工具的使用流程与功能体验。Bolt.diy是阿里云推出的一款基于自然语言交互的Web开发工具,用户可通过简单描述需求快速生成个性化网站。文章从开通服务、配置API-Key到实际创建网站进行了详细步骤解析,并展示了如何通过本地nginx部署生成的代码。此外,还尝试了优化初级会计考试招生宣传页面的过程,发现目前工具在图片资源处理和一键发布功能上存在局限性。整体来看,Bolt.diy操作便捷、成本可控,适合个人及企业低成本验证创意需求。
|
8月前
|
存储 人工智能 编解码
Deepseek 3FS解读与源码分析(2):网络通信模块分析
2025年2月28日,DeepSeek 正式开源其颠覆性文件系统Fire-Flyer 3FS(以下简称3FS),重新定义了分布式存储的性能边界。本文基于DeepSeek发表的技术报告与开源代码,深度解析 3FS 网络通信模块的核心设计及其对AI基础设施的革新意义。
Deepseek 3FS解读与源码分析(2):网络通信模块分析
|
弹性计算 运维 自然语言处理
开发者评测|操作系统智能助手OS Copilot
OS Copilot 是阿里云针对Linux操作系统推出的一款智能助手,它利用大模型技术提供自然语言问答、辅助命令执行和系统运维调优等功能,旨在提高Alibaba Cloud Linux的使用效率。OS Copilot在新人上手时并不简单,文档指引不够清晰,存在一些步骤无法顺利执行的问题,比如环境配置和命令执行。此外,产品目前仅支持Alibaba Cloud Linux,限制了其应用范围。虽然OS Copilot在一些基本功能上表现尚可,如解答问题和编写简单脚本,但在处理复杂任务或自动化运维时显得不足。总体而言,OS Copilot对新手和阿里云环境有一定的帮助,但功能和使用体验仍有改进空间。
|
网络协议 API 开发者
Python中的会话管理:requests.Session深度解析
Python中的会话管理:requests.Session深度解析
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
169 5
|
监控 Java 数据库
Spring事务中的@Transactional注解剖析
通过上述分析,可以看到 `@Transactional`注解在Spring框架中扮演着关键角色,它简化了事务管理的复杂度,让开发者能够更加专注于业务逻辑本身。合理运用并理解其背后的机制,对于构建稳定、高效的Java企业应用至关重要。
437 0
|
存储 算法 数据处理
数据结构与云计算:实现高效的数据存储与处理
本文探讨了数据结构和云计算在现代信息技术中的核心作用。数据结构,包括线性与非线性结构,影响着程序的效率,而在云计算环境中,这些结构需要适应分布式、并行和高可用性的需求。云计算提供弹性、可扩展的计算资源,分为IaaS、PaaS和SaaS三层服务模式。数据存储与处理在云计算中面临优化,如分布式数据存储利用哈希表实现数据分布,分布式数据处理采用映射减少算法提高效率,同时数据压缩和加密确保存储节省与安全性。未来,云计算将继续发展,面临扩展性、可靠性和安全性的挑战,而数据结构的优化将是提升系统性能的关键。
1015 5