广告系统

前期准备

技术栈:

  • java 1.8
  • mysql 8.0
  • springcloud:Eureka(用于服务注册和服务发现,微服务中服务治理的功能);Zuul(服务网关,用于统一应用入口,实现请求分发);Feign(声明式的服务调用)
  • Kafka 2.1.0:分布式消息队列,高性能,横向扩展,部署简单
    • 安装和使用,术语解释,原生 API

不着急编码,搞清楚广告思想
主动思考
直接将之应用于自己的项目中

广告系统概览和准备工作

实现了什么样的功能

  • 广告主的广告投放

    • 推广计划,推广单元
  • 媒体方的广告曝光:能展示广告的媒介

    • CPM:千次收费
    • CPT:按时间段收费
    • CPC:点击类的竞价广告

一个完整的广告系统包含哪些子系统

  • 广告投放系统:最前端(对应广告主)

  • 广告检索系统:最核心

  • 曝光检测系统

    • 本身的曝光
    • 广告主不信任,请第三方来做检测
  • 扣费系统:实时监 测广告的曝光,来对费用进行管理

  • 报表系统

如何扩展

  • 更多的纬度(获取广告的 feature 条件):地域,兴趣
  • 用户画像:对用户本身的兴趣点,根据兴趣点进行投放
  • AI:智能检索引擎

广告系统的架构

  • 全量索引:首先读取的静态类型的索引数据
  • 增量索引:运行过程中,对广告数据的改变

广告系统骨架开发

Maven

多模块聚合

  • 父模块使用 models 进行聚合
  • 父模块统一管理依赖包:使用 dependencymanagement 标签,进行管理版本号
  • 子模块需要自 pom 中声明父模块,使用 parent