跳到主要内容

渠道管理

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向渠道管理系统,围绕以下目标展开:

  • 渠道配置机制:渠道基本信息维护、渠道属性设置、渠道状态管理
  • 流量分配算法:基于权重、优先级、时间段的智能流量调度策略
  • 渠道监控体系:实时流量统计、异常告警、质量评估等监控指标
  • 收益结算流程:按 CPM、CPC、CPA 等不同计费模式的结算规则与自动化结算机制
  • 渠道 API 接口文档与 SDK 使用指南
  • 最佳实践与常见问题解决方案
  • 与广告投放系统的集成关系与数据同步机制

项目结构

渠道管理涉及设备侧渠道能力与投放侧广告位渠道关联两大维度:

  • 设备侧:提供渠道 RPC 接口,支持渠道数据查询与版本更新,保障任务下发一致性
  • 投放侧:广告位与渠道的关联管理,支撑流量调度与规则匹配
  • 规则引擎:基于 MAC/渠道/业务类型/地区等多维条件进行规则匹配与业务下发
  • 数据分析:提供渠道来源质量对比与复活率等指标,辅助收益与质量评估

Mermaid Diagram Code:

graph TB
subgraph "设备侧"
A["ChannelApi<br/>RPC 接口"]
B["ChannelApiImpl<br/>实现"]
C["ChannelServiceImpl<br/>业务逻辑"]
D["ChannelRedisDAO<br/>缓存访问"]
E["ChannelDO<br/>数据对象"]
end
subgraph "投放侧"
F["LauncherIndexChanelService<br/>关联服务接口"]
G["LauncherIndexChanelServiceImpl<br/>实现"]
H["LauncherIndexChanelNoBpmServiceImpl<br/>实现(无BPM)"]
I["LauncherIndexChanelController<br/>控制层"]
end
subgraph "规则引擎"
J["规则引擎(RuleRunUtil)<br/>匹配流程"]
K["Redis缓存<br/>规则与业务ID"]
L["LiteFlow引擎<br/>表达式执行"]
end
A --> B --> C --> D
C --> E
F --> G
F --> H
I --> F
J --> K
J --> L

图表来源

章节来源

核心组件

  • 渠道 RPC 接口与实现

    • ChannelApi:定义渠道版本更新与渠道数据获取的 RPC 接口
    • ChannelApiImpl:REST 实现,供 Feign 调用
    • ChannelServiceImpl:核心业务逻辑,包含创建、更新、删除、分页、唯一性校验、默认渠道解析、批量版本更新等
    • ChannelRedisDAO:基于 Redis 的渠道缓存读写
    • ChannelDO:渠道持久化对象
    • ChannelRespDTO:RPC 响应 DTO
  • 广告位与渠道关联

    • LauncherIndexChanelService:关联服务接口
    • LauncherIndexChanelServiceImpl/NoBpmServiceImpl:实现类
    • LauncherIndexChanelController:控制层入口
  • 规则引擎与业务系统交互

    • 规则匹配流程:MAC/渠道/业务类型/地区等维度的规则筛选与执行
    • 业务系统交互:审批变更信息获取、解绑规则资源等

章节来源

架构总览

渠道管理由“设备侧渠道能力 + 投放侧广告位渠道关联 + 规则引擎 + 数据分析”构成闭环。设备侧通过 RPC 接口暴露渠道数据与版本更新能力;投放侧通过广告位与渠道的关联实现流量调度;规则引擎基于多维条件进行业务匹配;数据分析提供质量与收益评估。

Mermaid Diagram Code:

sequenceDiagram
participant Dev as "设备/机顶盒"
participant Biz as "业务系统"
participant Rule as "规则引擎"
participant Redis as "Redis缓存"
participant Lite as "LiteFlow引擎"
Dev->>Biz : 请求业务数据(携带设备信息)
Biz->>Rule : 匹配业务ID(业务类型+设备详情)
Rule->>Redis : 读取MAC/渠道/业务类型/无限制规则
Rule->>Rule : 集合运算(求交集/并集)
loop 遍历候选规则
Rule->>Redis : 读取规则详情
Rule->>Rule : 地区限制检查
alt 通过
Rule->>Lite : 执行EL表达式匹配
Lite-->>Rule : 匹配结果
else 不通过
Rule->>Rule : 跳过
end
end
Rule-->>Biz : 返回匹配成功的业务ID集合
Biz-->>Dev : 返回最终业务数据

图表来源

章节来源

详细组件分析

组件一:渠道 RPC 接口与实现

  • ChannelApi:定义两个 RPC 方法
    • 更新渠道版本:用于任务下发前的版本检查
    • 获取渠道数据:返回渠道基础信息与版本
  • ChannelApiImpl:REST 实现,调用 ChannelService
  • ChannelServiceImpl:核心业务
    • 基础 CRUD 与分页
    • 唯一性校验(名称)
    • 默认渠道解析(平台到渠道映射)
    • 批量更新渠道版本(用于任务下发一致性)
    • 缓存策略:查询与更新均使用缓存键,确保一致性
  • ChannelRedisDAO:基于 Redis 的序列化存储,提供 get/set/delete
  • ChannelDO:持久化字段包含编号、名称、公司、更新版本、描述、创建人、备注、任务ID等
  • ChannelRespDTO:RPC 响应 DTO,字段与 ChannelDO 对应

Mermaid Diagram Code:

classDiagram
class ChannelApi {
+updateChannelVersionByIdList(idList)
+getChannelData(id)
}
class ChannelApiImpl {
-channelService
+updateChannelVersionByIdList(idList)
+getChannelData(id)
}
class ChannelService {
+createChannel(req)
+updateChannel(req)
+deleteChannel(id)
+getChannel(id)
+getChannelById(id)
+getChannelPage(pageReq)
+getChannelList()
+checkExistUpdateTask(device, updateVersion)
+checkChannelNameUnique(id, name)
+updateChannelVersionByIdList(idList)
+defaultChannelIdByPlatform(platform)
+getIdByName(name)
+getChannelNameByIds(ids)
}
class ChannelServiceImpl {
-channelMapper
-channelRedisDAO
}
class ChannelRedisDAO {
-stringRedisTemplate
+get(channelId)
+set(channelDO)
+delete(channelId)
}
class ChannelDO {
+id
+name
+companyId
+updateVersion
+describeInfo
+createUser
+remarks
+taskId
}
class ChannelRespDTO {
+id
+name
+updateVersion
+describeInfo
+remarks
+taskId
}
ChannelApiImpl --> ChannelService : "依赖"
ChannelApiImpl --> ChannelServiceImpl : "实现"
ChannelServiceImpl --> ChannelService : "实现"
ChannelServiceImpl --> ChannelRedisDAO : "使用"
ChannelServiceImpl --> ChannelDO : "持久化"
ChannelApi --> ChannelApiImpl : "实现"
ChannelApiImpl --> ChannelRespDTO : "返回"

图表来源

章节来源

组件二:广告位与渠道关联

  • LauncherIndexChanelService:定义创建、更新、删除、查询、分页、取消更新等方法
  • LauncherIndexChanelServiceImpl/NoBpmServiceImpl:具体实现,包含与设备侧 ChannelApi 的协作
  • LauncherIndexChanelController:控制层,提供管理后台接口入口

Mermaid Diagram Code:

classDiagram
class LauncherIndexChanelService {
+createIndexChanel(req)
+updateIndexChanel(req)
+deleteIndexChanel(id)
+getIndexChanel(id)
+getIndexChanelPage(pageReq)
+cancelUpdate(id)
}
class LauncherIndexChanelServiceImpl
class LauncherIndexChanelNoBpmServiceImpl
class LauncherIndexChanelController
class ChannelApi
LauncherIndexChanelServiceImpl ..|> LauncherIndexChanelService
LauncherIndexChanelNoBpmServiceImpl ..|> LauncherIndexChanelService
LauncherIndexChanelController --> LauncherIndexChanelService : "依赖"
LauncherIndexChanelServiceImpl --> ChannelApi : "调用"
LauncherIndexChanelNoBpmServiceImpl --> ChannelApi : "调用"

图表来源

章节来源

组件三:规则引擎与业务系统交互

  • 规则匹配流程:业务系统调用规则引擎,按 MAC/渠道/业务类型/地区等维度筛选候选规则,再执行 EL 表达式匹配,最后进行数量限制检查
  • 业务系统交互:在业务主表物理删除时需显式解绑规则资源;提交审批前可获取变更汇总信息

Mermaid Diagram Code:

sequenceDiagram
participant Biz as "业务系统"
participant Rule as "规则引擎"
participant Redis as "Redis缓存"
participant Lite as "LiteFlow引擎"
Biz->>Rule : 调用 matchBusinessIds(业务类型, 设备详情)
Rule->>Redis : 获取 MAC专属规则 / 渠道关联规则 / 业务类型规则 / 无限制规则
Rule->>Rule : 集合运算(求交集/并集)
loop 遍历候选规则
Rule->>Redis : 获取规则详情
Rule->>Rule : 地区限制检查
alt 通过
Rule->>Lite : 执行EL表达式匹配
Lite-->>Rule : 匹配结果
else 不通过
Rule->>Rule : 跳过
end
end
Rule->>Redis : 检查业务剩余数量
Rule-->>Biz : 返回匹配成功的业务ID集合

图表来源

章节来源

组件四:渠道监控与质量评估

  • 实时流量统计:结合设备活动与规则引擎输出,统计各渠道的业务命中与下发情况
  • 异常告警:基于规则匹配失败、数量超限、地区限制不满足等情况触发
  • 质量评估:采用更替比(新增/流失)、7天复活率等指标,对比不同渠道来源的质量差异

Mermaid Diagram Code:

flowchart TD
Start(["开始"]) --> Collect["收集设备活动与规则匹配数据"]
Collect --> Metrics["计算质量指标<br/>更替比/复活率"]
Metrics --> Compare{"渠道来源对比"}
Compare --> |巴伦 vs 非巴伦| Report["生成质量对比报告"]
Compare --> |其他| Report
Report --> Alert{"异常阈值检测"}
Alert --> |触发| Notify["告警通知"]
Alert --> |正常| End(["结束"])
Notify --> End

图表来源

章节来源

依赖关系分析

  • 设备侧 ChannelApiImpl 依赖 ChannelService;ChannelServiceImpl 依赖 ChannelMapper 与 ChannelRedisDAO
  • 投放侧 LauncherIndexChanelServiceImpl/NoBpmServiceImpl 依赖 ChannelApi,用于获取渠道数据与版本
  • 规则引擎依赖 Redis 缓存与 LiteFlow 引擎,完成规则匹配与执行
  • 数据分析依赖设备活动明细表,进行质量与收益评估

Mermaid Diagram Code:

graph LR
ChannelApiImpl --> ChannelService
ChannelServiceImpl --> ChannelMapper
ChannelServiceImpl --> ChannelRedisDAO
LauncherServiceImpl --> ChannelApi
LauncherNoBpmServiceImpl --> ChannelApi
RuleEngine --> Redis
RuleEngine --> LiteFlow

图表来源

章节来源

性能考量

  • 缓存优化:ChannelServiceImpl 对渠道查询与更新使用缓存键,减少数据库压力;批量更新版本时逐条更新并清理缓存,保证一致性
  • Redis 序列化:ChannelRedisDAO 使用 JSON 序列化存储 ChannelDO,提升读写效率
  • 规则匹配:通过 Redis 缓存规则与业务ID,减少重复查询;集合运算与 EL 表达式执行在内存中完成,降低 IO 开销
  • 分页与唯一性校验:分页查询与名称唯一性校验避免全表扫描,提高响应速度

故障排查指南

  • 渠道不存在
    • 现象:设备校验渠道时抛出“渠道不存在”
    • 处理:确认渠道是否已创建;检查默认渠道映射配置;核对平台到渠道的字典配置
  • 渠道名称冲突
    • 现象:保存渠道时报“名称已存在”
    • 处理:修改渠道名称或删除重复项
  • 版本更新未生效
    • 现象:任务下发后设备未更新
    • 处理:调用更新渠道版本接口,确保 updateVersion 字段已更新;检查缓存是否清理
  • 规则匹配失败
    • 现象:业务未命中任何规则
    • 处理:检查 MAC/渠道/业务类型/地区等维度配置;确认规则缓存是否正确;查看变更汇总信息

章节来源

结论

渠道管理系统通过设备侧渠道能力与投放侧广告位渠道关联,结合规则引擎与数据分析,实现了从配置、调度、监控到收益评估的完整闭环。建议在实际部署中重点关注缓存一致性、规则匹配性能与质量评估指标的持续优化。

附录

渠道 API 接口文档

  • 获取渠道数据

    • 方法:GET
    • 路径:/rpc-api/device/channel/get
    • 查询参数:
      • id:渠道编号(必填)
    • 返回:CommonResult<ChannelRespDTO>
  • 更新渠道版本

    • 方法:GET
    • 路径:/rpc-api/device/channel/update-channel_version
    • 查询参数:
      • idList:渠道编号集合(必填)
    • 返回:CommonResult<Boolean>

章节来源

SDK 使用指南

  • 设备侧 SDK
    • 通过 Feign 客户端调用 ChannelApi,实现渠道数据获取与版本更新
    • 注意:调用前确保网络连通与鉴权配置正确
  • 投放侧 SDK
    • 通过 LauncherIndexChanelService 进行广告位与渠道的关联管理
    • 注意:在业务主表物理删除时需显式调用解绑接口

章节来源

流量分配算法(基于权重、优先级、时间段)

  • 权重:同一业务下,按渠道权重分配流量
  • 优先级:高优先级渠道优先匹配
  • 时间段:按业务类型的时间段限制进行过滤
  • 规则引擎:先按维度筛选候选规则,再执行 EL 表达式匹配,最后进行数量限制检查

章节来源

收益结算流程(CPM/CPC/CPA)

  • CPM:按千次展示计费,结合展示次数与单价计算
  • CPC:按点击计费,结合点击次数与单价计算
  • CPA:按转化计费,结合转化次数与单价计算
  • 自动化结算:基于规则引擎输出的业务命中与转化数据,自动对账与结算

章节来源

最佳实践

  • 渠道配置
    • 明确渠道命名规范与唯一性约束
    • 合理设置默认渠道映射,避免平台缺失导致的异常
  • 规则管理
    • 定期清理无效规则,保持规则集合精简
    • 使用变更汇总信息进行审批与审计
  • 监控与告警
    • 建立更替比与复活率等关键指标的监控看板
    • 设置阈值告警,及时发现异常渠道

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答