版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:[https://blog.csdn.net/weixin\_43126117/article/details/102928784](https://blog.csdn.net/weixin_43126117/article/details/102928784)
目录
第一部分:eureka、zuul、通用模块(不讲代码实现,下载代码自己看。)
第二部分:广告投放、微服务调用与断路器(不讲代码实现,下载代码自己看。)
源码 : github https://github.com/yingyingqiqi/luoweiying-ad-spring-cloud/tree/master
这不是一个完整的广告系统,主要涉及两方面 广告检索 、广告投放 ,这两个方面我感觉是最重要的,但是也使用Kafka的消息传递,为剩下的曝光见监测、 报表 、扣费 这三个部分留下了接口。
第三部分:
广告系统架构图
简略的广告系统架构图
为什么不用关系数据库查询进行检索,索引是为广告检索服务的,向数据库查询太慢;用redis缓存也不够快,最快的方法用JVM的内存,这才是最快的。
通过加载广告投放系统导出的索引表,adxxxtable作为媒介,经过adLevelDataHandler处理 ,转换成AdXXXObject索引表,存入AdxxxIndex的一对多map中,再统一通过DataTable存取。
为什么要导出广告投放系统的索引表,直接通过jdbc获取数据库的信息不好吗??这里为了sponsor广告系统解耦,整个检索服务不对数据库进行操作。
Binlog 是 MySQL Server 维护的一种二进制日志, 主要是用来记录对 MySQL 数据更新或潜在发生更新的 SQL 语句, 并以
"事务"的形式保存在磁盘中( 文件)
对于Binlog日志的解析过于复杂,以及Binlog日志没有列名等信息(有序号),太复杂,那就分层处理:
我们前面做的增量索引+全量索引 ,为了保存索引与数据库中存储的数据一致性,都是为了检索服务的高效、准确的执行检索,
媒体方请求信息,检索服务响应信息,根据多个索引去筛选匹配广告信息。
到目前未知,整个基于springCloud微服务架构的广告系统一小部分完成,整个系统中,最重要的是:
检索服务、全量索引、增量索引里面很复杂,很容易绕晕,为了维护索引,在里面使用了binlog日志保存一致性;
为了方便投递增量数据,使用了Kafka;
为了微服务正常运行,使用ribbon、feign通讯,eureka注册,zuul网关,hystrix短路器