前期准备
技术栈:
- 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