腾讯内容千亿级实时计算和规则引擎实践优化之路

作者|王冬、杨浩、李文斌、王玢、李会珠
1.系统背景
腾讯内容中台提供从内容生产、内容加工、内容分发、内容结算等全链路环节的一站式服务 , 在这个过程中 , 会产生大量的数据以及围绕这些数据衍生的实时流业务应用 , 如智能审核、运营决策、在线学习等 , 从底层去看这些内容生态场景的本质 , 它需要我们提供一套完善的基于规则引擎的实时流信号服务来控制信号和业务流转 , 且实时信号场景具有内容数据源复杂、吞吐量高、计算量大、准确度高等特点 。 因此 , 我们利用业界前沿的实时流技术 , 并结合一些核心内容生态实时流场景的自研关键技术 , 沉淀了一套数据复用度高、可用性强、需求响应快的实时流服务 , 高效赋能腾讯内容生态产品 。
2.问题与挑战
问题1:多实时数据源动态感知、内容OneID数据
腾讯内部各个业务方生产的数据各异 , 且拥有各自的ID体系;随着业务发展 , 数据源还会动态添加消息Topic , 需要实时动态感知新增的数据源 , 并以中台统一的ID视角串联各个业务的内容数据 。
问题2:TB级多流数据拼接、批数据重建流状态
内容加工时会产生较多的复杂计算需求 , 比如 , 我们需要在有限资源内保障TB级多条实时数据拼接工作 , 以及长时间运行下需要对实时流应用的计算口径进行调整而面临的批数据重建流式数据状态等问题 , 我们探索了一系列自研技术 , 解决了海量数据实时流计算问题 。
问题3:规则引擎日千亿次实时信号触发
内容生态系统很多场景依赖实时信号 , 并且基于规则进行控制和流转 , 烟囱式开发有较大成本 , 我们需要构建一套日千亿次匹配的规则引擎信号服务 , 保障资源共享 , 实现新增场景一键配置即可支持 。
问题4:全链路全生命周期信号服务质量保障
内容场景中实时信号通常用于审核、运营等核心在线场景 , 稳定性要求极高 。 而数据往往面对依赖组件多、链路长、吞吐高等问题 , 会引起反压、偶发崩溃等多种质量问题 , 需要我们建设一套通用的质量保障体系 , 包括可观测性、状态高可用等 。
3.整体架构
腾讯内容千亿级实时计算和规则引擎实践优化之路
文章图片
图3-1内容生态实时信号系统架构图
数据接入:构建准确统一的基础数据 , 通过动态新增数据Topic自适应感知、十万级QPS的ID映射等手段 , 解决数据源消息Topic动态拓展无法自动感知、数据孤岛等接入问题 。
信号生产:提供滑动大窗口计算、多流TB级数据拼接、融合批数据重建流状态、单体流量适应水平扩展等通用解决方案 , 保障大吞吐下的信号生产的时效性、稳定性 。
规则引擎:结合业务个性化触发逻辑 , 提供统一的规则引擎触发系统 , 支持日千亿次的实时规则匹配、信号高效去重分发 , 保障多样场景一键快速支持 。
信号工厂:一些信号特征无需经过规则引擎流转 , 按照主题管理 , 直接透传给业务应用 。
服务质量:我们构建了全链路全生命周期的服务质量保障体系 。 包括全链路可观测性系统 , Flink核心状态高可用设计、全生命周期质量监控和解决流程、元数据管理等 。
3.1数据接入
3.1.1动态实时源自适应感知
腾讯内容中台 , 提供一站式工业化的内容加工能力 , 每个业务方可自定义编排加工内容的任务流拓扑 。 为了稳定性和隔离性 , 每条任务流拓扑内容加工操作流水会生成一个Topic , 随着业务发展 , 新的Topic会不断增加 , 同时存量Topic数据量可能变大 。 因新增Topic所属集群地址差异大 , FlinkSource无法用正则匹配到 , 导致程序无法自动感知 。 因此 , 我们设计了Topic动态添加的自适应感知的技术方案 , 可以做到:数据完整性:自动感知新添加的拓扑Topic , 保证数据不遗漏 。 数据时效性:存量的Topic数据量级变大时 , 能够自动扩容 , 保障整体时效性 。