此博客用于个人学习,来源于网上,对知识点进行一个整理。
1. 使用到的技术:
-
JDK 1.8
-
MySQL 8.0
-
SpringCloud Finchley:
- Eureka
- Zuul
- Feign
- …
-
Kafka 2.1.0
2. 广告系统概览与准备工作:
2.1 广告系统概览:
1)实现了什么功能:
- 广告主的广告投放
- 推广计划
- 推广单元
- …
- 媒体方的广告曝光
- CPM
- CPT
- CPC
2)包含哪些子系统:
一个完整的广告系统包含哪些子系统:
- 广告投放系统
- 广告检索系统
- 曝光检测系统
- 扣费系统
- 报表系统
- …
3)使用了哪些技术:
广告投放与检索系统使用了哪些技术:
- SpringCloud
- MySQL
- Kafka
- …
4)可以怎样扩展:
可以怎样扩展当前实现的广告系统:
- 更多的维度
- 用户画像
- AI
- …
2.2 广告系统架构:
对于一个项目来说,架构是尤为重要的,好的系统更需要一个好的架构,当架构定义好了后,就可以照着架构的思路实现各种其中的各项微服务。
广告系统架构:

- 首先,广告主在我们的投放系统中投放广告,才会有接下来的广告检索和广告索引,所以广告主是我们系统的顶层设计,即用户设计。
- 广告投放系统和广告检索系统是该项目的核心,基于 SpringCloud 的技术进行开发。其中,使用 Eureka 进行服务注册和服务发现;使用 Zuul 实现服务网关,作为广告系统总的入口,给我们的广告系统提供服务;使用 Feign 去调用不同的微服务,等等。
- 广告投放系统的广告数据索引由两个部分去组成,第一个是全量索引,第二个是增量索引。其中,全量索引指的是广告主在我们的广告投放系统中投放的广告,在广告检索系统还没构建完成,读取的一些静态的索引数据。
- 我们先定义一个位置,到这个位置之后的内容成为动态数据,之前的内容为固定好的数据,称为静态数据。我们先把这部分静态数据导出到静态文件里面,这份文件是从 MySQL 中读取,比如广告主预先投放的一些数据,叫做全量广告数据文件。广告检索系统会读取这份数据文件,建立一份全量索引,或者叫静态索引。之后,广告检索系统 “伪装” 成一个 slave,绑定到 MySQL 上面,监听到 MySQL 的 blob,然后去建立增量索引。这个增量索引是指广告主在监测系统的过程中,对广告数据进行修改,删除,增加,等等。这部分数据就是一份动态数据,索引称为增量索引。
- 然后用这份数据去实现广告检索服务,建立索引的目的是为了加快检索服务。
- 媒体方会去对接我们的检索系统,然后对我们的检索系统发送请求。广告检索系统收到请求之后,对请求进行解析,实现检索服务,对照着请求信息去索引数据里面检索数据,最终获得媒体方想要的广告数据。
- 广告主投放的数据本身具有广告计费方式,比如 CPM,CPC,CPT 等等。













