美团外卖广告引擎平台化实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 美团外卖广告平台化实践
林乐彬
2.
3. 林乐彬
2016年加入美团,目前是美团外卖广告引擎架构负责人
曾前后任职腾讯,百度,有多年互联网广告相关经验
4. • 美团外卖广告平台化实践
• 背景
• 架构解读
• 成果展示
• 总结
5. 外卖广告业务介绍-业务场景
•
列表广告
•
展示广告
•
搜索广告
•
创新广告
6. 外卖广告业务介绍-检索流程
典型的召回漏斗
广告检索链路
PV
召回
触发
商家端
LBS
召回
广告物料传输
粗排
向量化
召回
精排
在线预估
创意
优选
机制
7. 现状分析
• 业务逻辑复用度低: 广告业务逻辑复杂,开发人员较多,导致业务逻辑抽象力度标准不够统一
• 学习成本高: 代码复杂,新同学熟悉代码成本较高,上手较难。线上模块数量有20+,框架差异较大,导致跨模块
开发难,人员效率没有充分利用。
• PM信息获取难: 业务线多,逻辑复杂,最复杂模块的代码行数有13w+,需求PRD设计,获取信息难
• QA测试评估难: 评估测试范围主要依赖PM以及RD的描述,容易出现漏测的现象。
8. 业务目标
提升产研效率
•
提高功能复用度,提升开发效率。
降低协作成本,提升产研协作效率。
对业务进行赋能
•
PM可通过可视化的平台化页面,了解其他产品线的能力,赋能产品迭代
9. • 架构解读
• 架构思考
• 具体实现
10. 架构思考-整体思想
• 标准化
逻辑梳理,标准化改造,提供复用基础
• 框架
能力的承载,调度,透出
• 产研新流程
产研运行机制,持续性保证
列表 展示 搜索 营销 创新 ...
服务模块 触发 召回 一站式 中控 机制 ...
产品场景
框 架
标准化
服务
调度引擎
逻辑功能
能力透出
承载
数据协议
检索流程
产研新流程
QA
PM
运行机制
组件层
工具包
RD
11. 标准化-思想
逻辑
• 检索过程抽象
功能
在不同流程下面,用不同的功能集合,
标准化
通过不同的数据,获取广告的过程
数据
流程
12. 标准化-逻辑功能
流量
统一
入口
业务线
• 业务逻辑
双层颗粒度(Stage-Action)
3级复用度细分
context传递
预处理
召回定向
组件和工具包
预估
物料组装
排序计价
列表
营销
展示
.
.
.
24业务场景
压测流量过滤 召回广告 数据封装 获取poi物料 商家队列排序
版本控制 召回结果处理 数据拆包 获取有效模板 计算价格
实验初始化 定向结果召回 结果处理 数据封装 构建结果
...... ...... ...... ...... ......
action
• 无业务逻辑
stage
action
action
action
功能(逻辑颗粒度)
2级颗粒度建设+3级复用度细分
业务逻辑无关
复用与易用的trade off
颗
粒
度
复
用
度
stage 大的阶段的划分 大
action 某个阶段的小的细分 小
场景内 同一场景内部 低
场景间 不同场景之间 无场景 与场景无关
高
组件 功能组合
双层抽象
工具 功能点
action
13. 标准化-数据
• 数据的来源
输入
词表
第三方调用
输入 •统一 content封装上下
文
词表 •统一词表管理
•标准化交互协议
第三方调用
•统一封装
•上层无感知
14. 标准化-调用流程
• 原则
性能优先,无重复调用
• 落地方案
用户维度的数据
统一在初始化后进行封装调用。
商家维度数据
有批量接口使用的数据,在召回后统一
封装调用。
无批量接口使用的数据;在精排截断后
统一封装调用。
15. 架构思考-整体思想
• 标准化
逻辑梳理,标准化改造,提供复用基础
• 框架
能力的承载,调度,透出
• 产研新流程
产研运行机制,持续性保证
列表 展示 搜索 营销 创新 ...
服务模块 触发 召回 一站式 中控 机制 ...
产品场景
框 架
标准化
服务
调度引擎
逻辑功能
能力透出
承载
数据协议
检索流程
产研新流程
QA
PM
运行机制
组件层
工具包
RD
16. 平台框架-整体介绍
• web
服务
业务编排
统计监控
业务可视化
• 核心包
调度引擎
元数据采集
• 组件包
业务,策略通用能力沉淀
• 工具包
底层通用基础能力
17. 平台框架-主要模块介绍
• 流程编排下发
全图化流程编排
• 构图
组件和Action的编排配置生成具体的
DAG模板图
• 调度
模块流量请求时,引擎选择正确的
DAG模板图并执行
18. 高性能实践-全图化分析
• 基本原理
定义
action X
action Y
inputX(A , B , C......N)
outputY ( A , B , C......M )
满足下列任意条件,则 action X 依赖于 action Y
•
•
inputX ∩ outputY ̸ = ∅ 即:action X的某个/某些入参是由action Y产出
outputX ∩ outputY
= ∅
即:action X与action Y操作相同字段
19. 高性能实践-全图化分析
• 解析模块
通过对字节码分析,解析出每个action的
input、output集合。
• 依赖分析模块
标记的解析法,分析出action之间的依赖
关系
生成的图进行剪枝操作
20. 高性能实践-全图化效果
• 自动纠正人工错误编排
同时操作深层次变量, 并行 ->串行
蓝色部分
• 并最大化编排并行度
无依赖关系, 串行 ->并行
绿色,红色,黄色
21. 高性能实践-调度器
• 分层调度器
针对多串行节点的图推荐使用分层调
度器
• 队列通知调度器
针对多并行节点的图推荐使用队列流
水线调度器。
22. 高性能实践-线程调度调优
• 调度API
同步调用
异步调用
• 调度调优
线程模型调优:同步调用,主线程来
执行最外层的GraphTask
串行节点执行优化:串行结点不切换
线程
23. 高可用实践
• 业务隔离
图的粒度分离进行隔离
• 调度任务隔离
GraphTask,NodeTask 线程池隔离
• 过程监控
异常,超时,统计
24. 平台框架-能力透出
• 编译时能力上报,注解方式
@LppAbility
@LppExtension
25. 平台框架-业务层组件
• 统一的公共域和公共依赖
业务实体,内外部依赖
• 统一的接口和流程设计
三个阶段:prepare、process,post。
• 统一的切面能力
日志采集、耗时监控、降级限流
26. 架构思考-整体思想
• 标准化
逻辑梳理,标准化改造,提供复用基础
• 框架
能力的承载,调度,透出
• 产研新流程
产研运行机制,持续性保证
列表 展示 搜索 营销 创新 ...
服务模块 触发 召回 一站式 中控 机制 ...
产品场景
框 架
标准化
服务
调度引擎
逻辑功能
能力透出
承载
数据协议
检索流程
产研新流程
QA
PM
运行机制
组件层
工具包
RD
27. 产研新流程-问题分析
• PM
信息获取困难,沟通成本高
• RD
重复开发
排期评估不准
• QA
测试范围评估不准,效率低
28. 产研新流程-方案
思想:stage/action的方式来驱动项目交付
• PM
借助系统业务调研与需求设计
• RD
基于action能力沉淀与复用
• QA
针对采用stage/action统一沟通协作
语言,明确测试范围
29. 平台化-成果展示
业务迭代提效
• 系统能力沉淀
业务基础能力沉淀48个,模块共用能力沉淀
126个,产品线共用能力沉淀323个
• 人效的提升
能力复用比52+%,提效30+%
• 接入业务场景
15个业务场景接入
系统可视化(展示业务服务流程)
30. 总结
平台化
=
标准化
核心
+
平台框架
载体
+
产研新流程
机制
• 标准化:逻辑功能,数据,调用流程
• 平台框架:能力上报,流程编排(全图化),调度引擎(分层调度,隔离)
• 产研新流程:PM(借助知识沉淀),RD(能力沉淀,复用),QA(确定测试范围)
31.
32.