vivo日活千万级的活动平台设计之道 vivo互联网架构师/康雄 目录CONTENS 01平台介绍 02架构演进 03多业务中心 04AI探索落地 05未来展望 vivo活动平台业务概览 以SaaS+PaaS服务、能同时支撑五大用户群(广告主、线下、游戏CP、线上运营、中小企业)的综合运营平台 广告营销 智慧零售 vivo开发者 APP运营活动 企业客户 为广告提供创意工具 支撑代理线下运营 为200+游戏CP提供平台 支撑公司各大APP运营 为外部企业提供能力接入 业务体量 PV平台用户 全年活动场次 全年搭建H5页面 3500W+ 4000+ 2W+ 12W+ 产品形态 投票类 摄影投票 竞猜活动 活动样例 抽奖类 砸金蛋 大转盘 九宫格 领券类 组合券 单张券 答题类 答题 话题PK 大屏互动类 大屏摇一摇 大屏赛跑 组合玩法类 预约抽奖 答题抽奖 评论抽奖 目录CONTENS 01平台介绍 02架构演进 03多业务中心 04AI探索落地 05未来展望 系统发展之路 精细化 平台化 • • • • 行为库 玩法编排链路监控 AI辅助 单体式 • • 组件化 服务化 •代码堆砌 •怎么快怎么来 •积累活动开发经验 •通用化 单体式架构1.0 es mysql 活动配置 入口访问 … 榜单玩法 关卡玩法 裂变玩法 抽奖玩法 活动上下文构建 业务校验 接入层 业务扩展差! 业务核心层 存储层 稳定性差! 服务拆分平台改造 平台化架构2.0 mongoDb es redis mysql 审计日志 活动校验 鉴权服务 安全管控 路由转发 通用服务 玩法模型 … 领券模型 闯关模型 抽奖模型 拼团模型 管理台 数据备份 数据清理 接入管理 玩法配置 玩法上下文 网关层 通用能力薄! 业务核心层 存储层 响应变化慢! 抽象复用规则引擎 精细化架构3.0 网关层 路由转发 安全管控 鉴权服务 活动校验审计日志 common-sdk 技术组件 外部依赖 类型定义 utils 核心服务 通知中心 奖品中心 资格中心 任务中心 资产中心 管理台 数据备份 数据清理 接入管理 活动组合 动态玩法 玩法配置 玩法中心 数据统计 玩法编排 规则引擎 业务链路 通用模型 自定义奖品 自定义任务 通用任务 开放API 玩法组件 业务核心层 存储层 mysql 磁盘kv redis esmongoDb 精细化架构整体流程 mangerpcapp 统一网关 安全风控 CORS 路由转发 鉴权服务活动校验 活动配置管理 垂类玩法模型匹配 业务配置域 业务运行域 玩法类型 触达 活动上下文组装响应通知 用户行为库匹配 动作执行 配置JSON 业务核心域 规则引擎执行 任务中心 奖品中心 权益中心 资产中心 目录CONTENS 01平台介绍 02架构演进 03多业务中心 04AI探索落地 05总结和展望 业务配置---如何优雅的解决繁琐的活动配置? × 解决方案 垂直化 扁平化 结构化 配置点独立建表,按照关系型数据定义配置信息,存放配置数据 所有活动配置统一收口,配置信息转为json存储,节点自由定义存取 ×缺少通用 存储浪费 配置项多且杂 两大问题 Json配置进行标准化定义:投放配置玩法配置、任务配置、奖品配置、权益配置等标准配置 ✔通用合理 开发效率低 参与资格 业务运行域---如何来做活动模型的抽象? 垂类看 水平看 抽奖模型 领取模型 裂变模型 竞猜模型 … 活动 奖励 用户 行为 资产中心 任务中心 奖品中心 玩法模型 + 多业务中心 = 活动模型 任务中心建设 如何减少开发,快速上架一个任务? 平台方开发 分享页面 需求A 支付订单 业务方开发 需求B 双方0开发? 自定义任务 自定义任务设计思路 行为收集条件匹配动作执行 Behavior B C Condition A Action + •主动上报 •被动采集 •上下文构建 •规则引擎 •奖励发放 BCA模型—以不变应万变 如何实现自定义任务? producer 接入方 receiver 活动平台 任务定义 behavior1 采集信息 oper filter 行为参数定义condition表达式 获取任务信息 behavior2 behaviorn user+ 用户信息 [ "user":"openId":"xxx" ] context构建 行为信息 true long(15)>=long(20)? 规则引擎 标准结构行为集 "oper":[ "key":"viewvedio",l∥自定义任务唯一标识"prop":[ 执行Action计算 "time":15/∥行为参数值 ]结束 ] false 规则引擎使用 录入配置信息 引擎上下文构建 规则带入执行 动态表单下发 •设计表单,下发表单信息 •规则脚本编写或配置生成 •任务条件配置 •任务信息 •用户信息 •采集信息 •表达式执行 奖品中心建设 奖励流程设计—策略模式 自定义奖品实现 usecom.vivo.doraemon.serializer.JacksOn;XXX returnparamList; httpinvoke [ "path":"com.vivo.xxx.XXXFacade“,"group":" "version":"1.0.0","method":"receiveCouponCommon","paramType":"com.vivo.xxx.facade.dto.requestXXXReq“ ] dubbo泛化 usecom.vivo.internet.xxx.utils.DateUtils;letreponseDTO=seq.map(); XXX returnreponseDTO; convertresponse Invokeinterface aviatorscriptconvertparams 组装统一入参 奖品类型匹配 发奖策略4 发奖策略3 发奖策略2 … 发奖策略1 变化部分如何通用? 组装统一返回 发放成功?任务 OK失败调度 奖品记录 奖品补偿 复杂活动支撑-多活动的组合 单活动是远远不够业务需求,业务上常常需要多种活动一起去投放,但共享奖品数据 奖池B 奖池B 奖品信息 X 奖品信息 活动B 活动A 奖池C 奖池D 奖品信息 子活动C 子活动D 活动之间的数据是隔离的 组合之后,活动之间的数据可以共享的 复杂活动支撑-playmaker玩法编排 大型活动通常涉及的子活动多、依赖关系复杂 业务场景 签到送福气 福气值达到20可以 解锁新年签 新年签解锁后可以抽奖 活动及依赖关系 签到 活动A 依赖 资产 活动B 依赖 解锁 活动C 依赖 抽奖 活动D 大型新春活动 业务场景依赖关系 复杂活动支撑-playmaker玩法编排 STEP1 低代码技术拖拽活动、描绘依赖关系 画图开源项目:jsPlumb STEP2 集中式配置 加载playmaker活动定义 活动初始化 仅生成活动D Dependency Injection 注入依赖活动 Ready 创建活动 STEP3 创建所有子活动并完成依赖关系绑定 参考SringBean初始化过程 目录CONTENS 01平台介绍 02架构演进 03多业务中心 04AI探索落地 05未来展望 AI在营销活动业务的思考 AI能帮我们做什么? 产出创意 提升效率 1、营销文案生成、改写、纠错 2、营销素材文生图、图生图、广告文案配图 1、业务场景---小说剧情视频自动生成 2、自然语言建站一句话生成一个站点 产出创意 内容创意生成(texttotext)图片生成(texttoimage) 构建智能小说场景流程处理 S1 数据准备 S2 素材处理 S3 视频合成 小说输入 朗读音色选择 小说风格选择 标点拆分 场景拆分 手动拆分 GPT自动拆分 AI作图(文生图、图生图) GPT润色作图提示词 场景构建lora 人物构建lora tts 转场特效 字幕配音 视频合成 Demo示例 Goodcase Badcase Badcase 站点的合成 业务执行动作 场景的匹配 自然语言的理解 自然语言建站 AI建站流程 输入想要生成的站点 语言理解 返回生成的站点 任务N H5站点打包 团片填充 任务四 文本填充 任务三 组件优选 任务二 场景优选 任务一 目录CONTENS 01平台介绍 02架构演进 03多业务中心 04AI探索落地 05未来展望 活动平台的展望 “所有的产品都值得用AI去重塑.” 双向交互数字人 Q&A 案例演示 个人微信