运营位投放系统
运营位投放系统:站内自有流量的内容投放、触达与权益发放
App 首页的 banner、金刚区、弹窗、浮层、feed 中的卡片位,不卖给外部广告主,而是分给公司内部的活动、产品、内容。 决定"这个位置今天给哪类用户展示什么"的系统,业内也叫"投放系统"。理财通投放系统属于这一类: 首页的基金推荐卡片、热门板块、直播预告、指数估值,都由它按运营配置的规则投放。
这类系统没有竞价、没有计费,本质是个性化的内容配置与展示系统。广告领域的投放系统 (媒体竞价、品牌合约、程序化交易、搜索广告、广告主买量)见 广告投放系统.md。
1. 共同抽象
运营位投放回答的问题是:在某个位置,给某个人,在某个时间,按某种规则,展示某个内容。
| 维度 | 含义 | 运营位系统里的叫法 |
|---|---|---|
| WHERE | 流量出现在哪 | 页面 + 投放位 |
| WHO | 给谁看 | 用户标签、用户包、AB 实验分组 |
| WHEN | 什么时候看 | 生效时间、交易日、时间段 |
| HOW | 按什么规则 | 优先级、限量、频控 |
| WHAT | 看到什么 | 内容 / 物料 + 展示模板 |
同一个位置、同一个人有多个候选时,谁赢由决策方式决定:
| 决策方式 | 谁赢 | 典型系统 |
|---|---|---|
| 规则 + 优先级 | 运营配置的优先级最高、且通过所有过滤的那一条 | 理财通投放、电商资源位、App 弹窗 |
| 模型排序 | 预估目标(点击、转化、停留)最高的 | 推荐系统、智能运营位 |
规则型系统的核心是过滤链和配置管理。
2. 站内自有流量的几类系统
flowchart LR
subgraph 站内["站内自有流量"]
OPS[运营位投放<br/>理财通投放 / 电商资源位]
REC[推荐系统]
PUSH[触达系统<br/>Push / 短信 / 站内信]
end
MKT[权益发放 / 营销中台]
PUB[App / H5 页面]
USER[用户]
OPS -- 用户打开页面时拉取 --> PUB
REC --> PUB
PUSH -- 主动推送 --> USER
PUB --> USER
USER -- 点击活动入口 --> MKT
| 领域 | 典型系统 | 谁在用 | 目的 | 决策方式 |
|---|---|---|---|---|
| 站内运营位投放 | 理财通投放系统、电商首页资源位、App banner / 弹窗 / 浮层 | 运营 | 把自有流量分给活动、产品、内容,完成业务目标 | 规则 + 优先级,部分引入模型 |
| 推荐系统 | 信息流、商品推荐 | 算法 | 最大化用户消费(点击、时长、成交) | 模型排序 |
| 营销触达 | Push、短信、站内信、企微、营销自动化(MA) | 运营、CRM | 主动把消息推到用户面前,拉活、召回 | 圈人 + 调度 + 频控 |
| 权益 / 优惠券发放 | 营销中台、券平台 | 运营 | 发放红包、券、积分,控制预算和风险 | 规则 + 限量 + 风控 |
同目录的理财通投放系统属于第一类,营销中台属于最后一类。推荐系统不在本文展开。
3. 站内运营位投放
3.1 目的
目标是完成业务 KPI(申购、开户、活动参与、内容阅读),同时控制对用户的打扰。 运营配置"什么位置、什么时间、对什么人、展示什么内容",系统按规则过滤后返回。
3.2 架构
以同目录 投放中台概要设计V1.2.doc 的设计为例,它把投放拆成 WHERE / WHO / WHEN+HOW / WHAT 四个子系统:
flowchart TB
FE[前端页面] --> BIZ[业务 CGI<br/>校验用户登录态]
BIZ --> GW[投放中台网关<br/>鉴权、限流、协议转换]
GW --> ENGINE[投放引擎<br/>编排整个投放流程]
ENGINE --> WHERE[位置系统 WHERE<br/>页面 → 投放位]
ENGINE --> PLAN[计划系统 WHEN+HOW<br/>时间规则、限量规则、优先级]
ENGINE --> WHAT[内容系统 WHAT<br/>商品、模板、内容过滤]
ENGINE --> WHO[用户匹配系统 WHO<br/>规则 / 用户包 / AB 实验]
WHO --> RULE[规则引擎]
WHO --> TAG[标签服务<br/>BI 离线标签 + 实时业务标签]
WHO --> AB[AB 实验平台]
WHAT --> PROVIDER[内容数据提供服务<br/>收益率、剩余额度、直播观看数、文章阅读数]
ADMIN[投放管理端] --> DB[(投放库<br/>页面 / 位置 / 计划 / 限量 / 内容 / 模板)]
DB --> WHERE & PLAN & WHAT
FE -- 曝光 / 点击 / 关闭上报 --> LIMIT[限量计数]
LIMIT --> PLAN
FE -- 埋点 --> BI[BI 分析] --> ADMIN
一次投放请求的处理顺序:
sequenceDiagram
participant FE as 前端
participant E as 投放引擎
participant W as 位置系统
participant P as 计划系统
participant C as 内容系统
participant U as 用户匹配
FE->>E: 渠道 + 页面 + 用户
E->>W: 页面 → 投放位列表
E->>P: 投放位 → 投放计划列表
P->>P: 过滤:生效状态、审核状态、时间规则、交易日、限量(用户 / 位置 / 计划维度)
E->>C: 内容过滤(如基金已售罄)
E->>U: 用户过滤(规则 / 用户包 / 实验分组)
E->>E: 按优先级排序,每个位置取第一条
E->>C: 取内容详情 + 展示模板 + 动态数据
E-->>FE: 每个位置的投放内容和模板
FE->>E: 曝光 / 点击 / 关闭上报(用于限量)
过滤顺序是一个性能取舍:先做本地、便宜的过滤(时间、状态、限量),再做需要调用外部服务的过滤(标签查询、实验分组), 候选集越往后越小,外部调用越少。
3.3 核心问题
| 问题 | 说明 |
|---|---|
| 配置模型 | 页面、位置、计划、内容的关系:一个位置挂多个计划按优先级竞争;计划能否跨位置(多对多)是设计中反复讨论的点,多对多更灵活,但配置和查询都更复杂 |
| 用户匹配 | 三种方式:标签规则(资产 > 10万 AND 近30天未申购)、用户包(离线圈好的 ID 集合)、AB 实验分组。规则引擎只做表达式计算,不理解业务 |
| 动态内容 | "剩余额度 21%""7 日年化 2.3%""3.2 万人在看"这类数据来自交易、行情、直播等下游,由内容数据提供服务按 provider 聚合,非个性化数据启动时缓存 |
| 限量 / 频控 | 按用户(每人每天最多看 3 次、关闭后不再出)、按位置、按计划计数;依赖前端上报,存在丢失和延迟 |
| 兜底 | 所有计划都被过滤掉时,位置不能开天窗,要有兜底计划或默认内容 |
| 合规 | 金融产品展示受监管约束:适当性(风险等级匹配)、收益率展示口径、售罄不可推荐。"推荐产品与对比产品有一个不可买,这一条就不能推荐"就是这类规则 |
| 可用性 | 首页请求量大,投放服务故障不能让首页白屏:前端缓存上次结果、服务端降级返回兜底内容、下游超时直接跳过该过滤或该动态字段 |
4. 营销触达系统(Push / 短信 / 站内信)
运营位投放是拉(pull):用户打开页面,系统决定展示什么。触达系统是推(push): 系统在某个时刻主动把消息发给一批用户。
flowchart LR
SEG[圈人<br/>标签规则 / 人群包 / 实时事件] --> TASK[任务<br/>定时 / 周期 / 事件触发]
TASK --> SCHED[调度<br/>分批、错峰、限速]
SCHED --> FATIGUE[疲劳度控制<br/>每人每天最多 N 条<br/>跨通道统一计数]
FATIGUE --> CH{通道}
CH --> PUSH[厂商 Push]
CH --> SMS[短信]
CH --> INBOX[站内信 / 公众号模板消息]
PUSH & SMS & INBOX --> RECEIPT[回执:送达 / 点击 / 退订]
RECEIPT --> ANALYSIS[效果分析]
| 核心问题 | 说明 |
|---|---|
| 大批量发送 | 一次任务几千万用户,要分批、限速,避免打垮下游通道和落地页 |
| 事件触发 | "用户赎回后 10 分钟发一条推荐",依赖实时事件流(Kafka + 流计算)和延时任务 |
| 疲劳度 | 跨任务、跨通道统一计数,避免同一个人一天收到 10 条 |
| 成本 | 短信按条收费,需要预算控制和优先级 |
| 合规 | 退订、夜间免打扰、营销类短信需用户授权 |
5. 权益发放 / 营销中台
投放系统决定"展示什么",用户点击后参与活动、领红包、领券,由营销中台完成。同目录的 营销中台架构设计文档.docx
描述的就是这一层:接入网关、活动管理、物品(奖品)管理、限量服务、风控代理、熔断服务、对账。
两者的关系:
flowchart LR
TF[投放系统<br/>展示活动入口] -- 用户点击 --> ACT[活动页]
ACT --> MKT[营销中台<br/>资格校验 → 限量扣减 → 风控 → 发奖]
MKT --> STOCK[券 / 红包 / 积分发货]
MKT --> RECON[对账:活动预算、商户号收支]
投放系统出错的后果是展示错了内容;营销中台出错的后果是钱发多了。因此营销中台的重点是 预算限量的强一致、防并发重复发奖、自然人防刷、熔断和对账,而投放系统的重点是配置灵活和高并发读。
6. 横向对比
| 维度 | 站内运营位 | 触达系统 | 营销中台 |
|---|---|---|---|
| 谁出钱 | 无(自有流量) | 通道成本 | 活动预算 |
| 谁决策 | 运营规则 + 优先级 | 运营圈人 + 调度 | 规则 + 限量 |
| 在线延迟要求 | 几十到百毫秒 | 分钟级可接受 | 百毫秒级 |
| QPS 特征 | 高(跟随页面 PV) | 突发(大任务) | 峰值突发(活动开始) |
| 一致性要求 | 限量允许少量误差 | 疲劳度允许少量误差 | 预算限量强一致 |
| 核心模块 | 配置、过滤链、用户匹配、动态内容 | 圈人、调度、疲劳度、通道 | 限量、风控、熔断、对账 |
| 数据闭环周期 | 天级(人工) | 天级 | 活动周期 |
7. 共有的工程问题
7.1 配置到在线的发布
运营位系统是"管理端写配置、在线端读配置"。配置量小、变更不频繁,常见做法是在线服务查 Redis / 本地缓存, 未命中查 MySQL;对发布安全要求高时,每次发布生成带版本号的快照,在线服务原子切换,出问题回滚到上一版本。
关键点:配置变更要能秒级生效(运营发现配错要马上下线),同时要有审核和回滚(配错一个位置可能影响千万用户)。
7.2 频控与限量计数
key = 用户ID : 计划ID : 日期 value = 曝光次数 TTL = 1 天
- 存储:Redis 计数器,或在线服务本地计数 + 定期汇总
- 精度:频控允许少量误差(多展示一次影响不大);奖品库存和活动预算不允许超发,要用原子扣减或预分配(营销中台的职责)
- 上报丢失:依赖前端上报的曝光次数偏少;服务端下发即计数则偏多。按业务容忍度选择
7.3 用户匹配
| 方式 | 数据 | 在线查询 |
|---|---|---|
| 人群包 | 离线圈好的用户 ID 集合 | KV 查 用户 → 所属人群包列表,或 Bitmap(RoaringBitmap)判断成员 |
| 标签规则 | 用户标签(离线 BI + 实时业务) | 取规则用到的标签值,交给规则引擎计算表达式 |
| AB 实验 | 分流配置 | 按用户 ID 哈希到桶,查实验版本 |
7.4 高可用与降级
| 手段 | 说明 |
|---|---|
| 兜底内容 | 投放服务不可用或无结果时返回默认内容,前端不开天窗 |
| 下游超时隔离 | 标签服务、动态数据服务超时时,跳过该过滤或该字段,不阻塞主流程 |
| 过载保护 | 入口按优先级丢弃请求,保护后端 |
| 熔断 | 下游错误率超阈值后暂停调用,定期探测恢复 |
| 多级缓存 | 前端缓存、接入层缓存、服务内存缓存;非个性化结果(如基金收益率曲线)可以共享缓存 |
7.5 数据闭环
投放效果评估需要把"展示了什么"和"用户做了什么"连起来。关键是在投放响应里带上追踪 ID
(投放 ID、实验版本、请求 ID),前端上报曝光和点击时原样带回,下游转化(申购、开户)也能关联回这次投放。
投放中台协议里的 report_info 字段就是这个用途。
8. 和广告投放系统的区别
| 站内运营位投放 | 媒体竞价广告 | |
|---|---|---|
| 候选规模 | 一个位置同时生效的计划通常是个位数到几百 | 百万级广告 |
| 召回 | 位置 → 计划的直接映射,无需倒排检索 | 布尔表达式倒排 + 模型召回 |
| 排序 | 运营优先级 | eCPM = 出价 × 预估 |
| 钱 | 不涉及计费;预算只在配套的权益 / 红包系统里 | 每次曝光 / 点击都在扣钱,计费必须准确可对账 |
| 目标 | 业务 KPI,由运营人工迭代 | 平台收入 + 广告主 ROI,由模型自动优化 |
| 数据闭环 | 埋点 → BI → 运营看报表 → 改配置(天级) | 日志 → 训练 → 模型更新(小时级甚至实时) |
站内运营位投放的演进方向是向广告系统靠拢:同一位置的多个候选不再只按人工优先级,而是按模型预估的点击率 × 业务价值排序 (相当于把"出价"换成"业务价值权重"),并引入流量分配(给每个活动保量,类似品牌合约广告)和探索(新内容冷启动)。 广告系统的这些模块见 广告投放系统.md。
9. 理财通投放系统的定位
| 问题 | 结论 |
|---|---|
| 属于哪一类 | 站内运营位投放(第 3 节),不是广告系统 |
| 流量 | 理财通自有页面(微信、手 Q、App) |
| 候选内容 | 基金产品、产品对比、文章、直播、热门板块、指数估值、活动 |
| 决策 | 规则过滤 + 运营优先级;AB 实验用于比较不同投放策略 |
| 和广告系统共有的部分 | WHERE / WHO / WHEN / HOW / WHAT 抽象、定向(用户包、标签规则)、频控限量、曝光点击上报、效果分析 |
| 广告系统有而它没有的部分 | 大规模倒排检索、CTR / CVR 预估、竞价、计费、预算 pacing |
| 它特有的部分 | 金融内容的动态数据聚合(收益率、剩余额度、持仓收益)、金融合规约束(售罄、适当性)、交易日规则 |
| 投放中台化的动机 | 理财通、微证券、信用卡等多个业务各自维护投放逻辑,抽成统一中台后复用位置、计划、用户匹配、内容和规则引擎 |
理财通语境下的"投放"强调的是"运营把内容投到位置上";广告语境下的"投放"强调的是"广告主花钱把广告投到媒体上"。 面试中介绍这个系统时,先说清它属于哪一类,再讲 WHERE / WHO / WHEN+HOW / WHAT 的拆分、过滤链顺序、 动态内容聚合和高可用降级,比泛泛对标广告系统更准确。
参考
- 同目录内部文档:
理财通6.0投放系统架构设计文档.docx、投放中台概要设计V1.2.doc、营销中台架构设计文档.docx
暂无评论,欢迎留下第一条评论。