一、前言 在搜索、推荐、广告(业内合称“搜推广”)等核心业务场景中,数据处理流程
在搜索、推荐、广告(业内合称“搜推广”)等核心业务场景中,数据处理流程的末端有一个关键环节:如何将来自MySQL、ODPS、HBase、Kafka等多源异构数据,高效、可靠地加工并交付给索引平台。这个环节,即“Dump”流程。大禹平台,正是为解决此问题而构建的离线Dump平台。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
一个典型的Dump流程通常面临几项核心挑战:
首先,数据源高度异构,涵盖关系型数据库、大数据存储与消息队列。其次,输出目标多样,需同时支持构建倒排索引与供Summary服务使用的kv/kkv索引。再者,业务对时效性要求严苛,需融合全量与增量处理,且增量更新需达到秒级,同时保证流批处理逻辑的强一致性。最后,平台需具备强大的数据处理能力,以支撑多表关联、自定义函数(UDF)、复杂过滤等业务需求。
离线 Dump 流程
当前 dump 开发模式
上图展示了传统流批分离的Dump开发模式。流处理侧,通过DTS订阅数据库binlog,由Flink消费主表变更并实时反查关联表以拼装宽表;批处理侧,则将MySQL数据同步至ODPS,再通过Spark处理多源数据并输出。此架构存在显著痛点。
当前 dump 开发的问题
具体痛点包括:开发效率低下,流批两套代码导致逻辑一致性维护成本高。数据质量难以保障,流批数据源与计算逻辑的差异易引发结果不一致。系统稳定性面临挑战,频繁对源数据库进行实时反查,给上游带来压力,源库抖动易导致链路波动。
为此,我们以社区搜索场景为切入点,旨在构建一套全新的流批一体化Dump架构。新架构聚焦三大核心目标:
第一,提升工程效率。通过可视化DAG编排工具,实现低代码甚至拖拽式开发,简化复杂任务流程的搭建与迭代。
第二,保障数据质量。基于流批一体设计,实现计算逻辑的统一,从根源上杜绝数据不一致。
第三,强化稳定性。引入镜像表与状态大宽表等机制,减少对源数据库的实时反查依赖,提升系统整体鲁棒性。
平台架构
上图勾勒了大禹平台的技术架构全貌。平台底层复用公司现有基础设施,如DJob Cron任务调度、Flink/Spark计算引擎及各类存储系统。上层则面向搜推广等多元业务场景提供支撑。
平台分为两大部分:面向用户的管理平台与负责执行的后台系统。管理平台作为“指挥中心”,支持开发者通过DAG图进行流程编排、逻辑配置、Debug调试、回归测试及监控大盘查看。后台系统作为“执行引擎”,将前端配置转化为具体计算任务,依托Flink/Spark生成执行实例,并通过调度引擎驱动流程运行。
新版Dump流程的核心优化在于将流程拆解为镜像、宽表、导出三个阶段,并统一流批处理模式。如下图所示:
新版 Dump 流程
优化点主要体现在三方面:一是将MySQL数据统一同步至HBase构建镜像层,实现与上游解耦,避免多任务并发反查压力;二是将Binlog订阅流程平台化、自动化,开发者无需关注底层链路;三是基于HBase构建持久化的“状态大宽表”,任务处理时直接读取状态数据,彻底消除冗余反查逻辑。
在调度层面,大禹平台基于得物内部的DJob Cron自建了一套调度系统。其核心是通过部署多个Cron Job进行轮询,有序驱动任务各阶段执行。
Cron Job 构建调度系统
一个执行实例的全流程
在镜像、宽表、导出三个核心阶段,平台均提供了对应的Spark与Flink处理框架。其中,宽表阶段是业务逻辑实现的核心。
宽表Spark框架逻辑直观:任务严格遵循DAG拓扑顺序,依次执行各算子节点,从数据源读取,经业务逻辑处理,最终通过BulkLoad方式高效写入HBase。
宽表阶段 Spark 框架逻辑
宽表Flink框架则专注于增量数据处理。它消费非维表节点的增量消息,同样按依赖关系拓扑排序后依次执行计算,将产出字段更新至状态大宽表,并实时同步给下游导出链路。
宽表阶段 Flink 框架逻辑
如何确保流批处理结果一致?大禹平台的答案是架构统一。平台采用统一的DAG编排引擎,使流批任务共享相同计算拓扑,从源头杜绝因开发环境差异导致的数据偏差。
UDF(用户自定义函数)的处理方式尤为关键。平台内置了标准化的UDF开发模板与运行时框架。开发者仅需编写一次业务逻辑代码,完成注册后,该代码即可同时应用于流式与批量处理流程,实现“一次开发,两端复用”。这极大提升了开发效率,并从根本上保障了数据处理逻辑的一致性。
平台通过定义 AlgoDumpUDF 基类封装消息类型,用户可在自定义UDF中便捷实现数据过滤与驱动删除等逻辑。
public abstract class AlgoDumpUDF implements UDFFunction, Serializable {
//消息类型 add/delete/drop 三种
public AlgoDumpMessageType algoDumpMessageType = AlgoDumpMessageType.MESSAGE_TYPE_ADD;
@Override
public AlgoDumpMessageType getStatus() {
return algoDumpMessageType;
}
//调用该方法实现增量驱动删除
@Override
public void delete(Object key, String reason) {
this.algoDumpMessageType = AlgoDumpMessageType.MESSAGE_TYPE_DELETE;
}
//调用该方法实现增量过滤
@Override
public void drop(Object key, String reason) {
this.algoDumpMessageType = AlgoDumpMessageType.MESSAGE_TYPE_DROP;
}
/**
* 用户重写该方法完成业务逻辑开发
*/
public void process() throws Exception {
}
}
具体示例如下:用户通过重写 process() 方法实现业务逻辑,期间可调用 drop() 方法过滤无效数据,或调用 delete() 方法通知下游索引删除记录。
public class MyUdf extends AlgoDumpUDF implements Serializable {
public Tuple2 process(String id, String taskname) throws Exception {
//过滤消息
if(StringUtils.isBlank(id)) {
this.drop(id, "drop by id null");
}
//驱动增量删除消息
if(id.equals("0")) {
this.delete(id, "delete by id = 0");
}
//用户写具体业务逻辑
String a1 = "";
if (taskname.equals("dddddd")) {
a1 = "ddd";
}
String b1 = "test";
return new Tuple2<>(a1, b1);
}
}
为应对不同数据更新需求,大禹平台支持“大全量”与“小全量”两种任务运行模式。
“大全量”模式即全量重建:对数据源执行全量同步,重建整个状态大宽表,并刷新所有相关链路。适用于需彻底更新数据基准的场景。
“小全量”模式则是针对性优化。当仅部分字段频繁更新时,它基于现有状态大宽表,仅加载批处理来源字段的最新数据快照,处理后通过BulkLoad高效写入HBase。借助HBase的多版本特性,可实现新旧数据平滑切换,在数据更新过程中保障查询服务零中断,兼顾数据时效性与业务连续性。
小全量模式
在大禹平台中,任务产出数据可作为公共资产被下游任务直接复用。
这是通过标准化的 MirrorOut(镜像导出)与 MirrorIn(镜像接入)算子实现的。上游任务将加工好的公共数据配置为 MirrorOut,下游任务通过 MirrorIn 算子即可一键引用,无需重复开发或数据搬运,极大提升了开发效率与数据复用价值。
任务复用
管理平台提供一站式任务开发与运维体验,覆盖创建、编排、调度至资源管理的全生命周期。
其核心功能是可视化流程编排。开发Dump任务时,用户通过拖拽算子节点、配置参数,即可直观构建完整的数据处理逻辑图,显著降低开发门槛并提升配置准确性。
图片
图画编排式开发任务
任务执行时,平台以可视化流程图实时展示各节点状态。每个节点均支持查看详细输入参数与输出结果,若出现异常,可对节点进行手动重试或终止操作,便于快速定位与干预。
执行实例状态
数据质量是生命线。平台提供强大的流批数据回归验证能力,支持模板化配置与一键复用,为数据准确性与业务稳定性保驾护航。
“批量回归”主要用于版本迭代后验证,可快速比对多版本批处理数据,一键校验全量结果一致性。“流式回归”则针对实时链路,基于索引表增量变更进行抽样,对指定时间窗口内的流式数据进行跨索引一致性校验,精准定位流处理过程中的异常。
创建批数据回归任务
创建流数据回归任务
为确保数据处理过程的可靠与灵活,大禹平台构建了覆盖全链路的数据运维干预能力。
这包括:对源端组图配置进行主动干预与调整;对Dump构建全流程进行调控以快速定位问题;甚至提供对线上索引数据的实时干预能力,支持对增量数据进行修正,确保线上内容准确性。
图片
在社区搜索场景中,大禹平台负责构建倒排表链路。如下图所示,该任务以动态内容为核心,融合实时内容流、天级统计特征、商品特征等多源数据,通过流批一体处理,最终生成高时效的倒排索引宽表。
社区搜索倒排宽表链路

另一典型场景是穿搭精选推荐。如下图所示,该任务以“动态-商品”关系表为主表,融合动态维度下多种来源的流批特征数据(如内容基础特征、审核信息、离线统计特征等),通过DAG编排,最终构建出服务于推荐系统的动态-商品大宽表。
穿搭精选推荐链路
图片
平台进化永无止境。未来规划聚焦两个方向:持续增强平台自身能力,以及深化协同共建以释放更大价值。
在平台能力建设上,首先将持续完善算子体系,基于更多业务场景沉淀与优化关键算子,如维表动态更新、服务化算子、UDTF部署优化等,同时优化调度流程。其次,进行性能深度优化,引入任务剪枝、智能倾斜治理等策略,提升资源利用率与执行效率。最后,升级可观测性,构建从全局大盘到单一任务的立体监控体系,完善资源消耗追踪、Debug与全链路追踪能力。
在协同共建方面,分为“纵向提效”与“横向赋能”。纵向,将与索引平台深度协同,聚焦索引构建效率。以社区搜索大宽表为例,当前同步至索引需近3小时,未来计划通过消除冗余中间状态、精简流程等手段,实现端到端的显著提速。横向,平台能力已在社区多个业务场景得到验证,后续将联动更多业务方共建。同时,平台中如数据回归验证、索引监控大盘等高复用能力模块,将以“即插即用”方式开放给各业务线,加速技术资产沉淀与跨团队创新。
图片
菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。