首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 SpringCloud 微服务架构的广告系统(第三部分:索引构建与检索、binlog更新、Kafka投递)

基于 SpringCloud 微服务架构的广告系统(第三部分:索引构建与检索、binlog更新、Kafka投递)

作者头像
营琪
发布2019-11-13 14:33:49
8390
发布2019-11-13 14:33:49
举报

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                 本文链接:[https://blog.csdn.net/weixin\_43126117/article/details/102928784](https://blog.csdn.net/weixin_43126117/article/details/102928784) 

目录

六、search模块(广告索引)

构建索引示意图(例子)

加载全量索引示意图

binlog构建增量索引

预定义json模板及解析 示意图

binlog解析及Kafka投递 示意图

广告检索服务

媒体方请求、检索服务响应的结构图

检索服务示意图

再次回顾整个编码实现


第一部分:eureka、zuul、通用模块(不讲代码实现,下载代码自己看。)

第二部分:广告投放、微服务调用与断路器(不讲代码实现,下载代码自己看。)

源码 : github https://github.com/yingyingqiqi/luoweiying-ad-spring-cloud/tree/master

这不是一个完整的广告系统,主要涉及两方面 广告检索 、广告投放 ,这两个方面我感觉是最重要的,但是也使用Kafka的消息传递,为剩下的曝光见监测、 报表 、扣费 这三个部分留下了接口。

第三部分:

  1. 介绍广告检索系统的搭建,我们通过构建索引来为广告检索服务;
  2. 使用MySql的Master-Slave协议,通过Slave监听Binlog日志实现数据复制,达到数据一致性的目的;
  3. Kafka投递解析后的binlog日志,方便后续统计业务等,并维持索引(增量索引)。
  4. 检索广告的索引,实现条件匹配,并返回响应;

广告系统架构图

简略的广告系统架构图

六、search模块(广告索引)

构建索引示意图(例子)

为什么不用关系数据库查询进行检索,索引是为广告检索服务的,向数据库查询太慢;用redis缓存也不够快,最快的方法用JVM的内存,这才是最快的。

加载全量索引示意图

通过加载广告投放系统导出的索引表,adxxxtable作为媒介,经过adLevelDataHandler处理 ,转换成AdXXXObject索引表,存入AdxxxIndex的一对多map中,再统一通过DataTable存取。

为什么要导出广告投放系统的索引表,直接通过jdbc获取数据库的信息不好吗??这里为了sponsor广告系统解耦,整个检索服务不对数据库进行操作。

binlog构建增量索引

Binlog 是 MySQL Server 维护的一种二进制日志, 主要是用来记录对 MySQL 数据更新或潜在发生更新的 SQL 语句, 并以

"事务"的形式保存在磁盘中( 文件)

对于Binlog日志的解析过于复杂,以及Binlog日志没有列名等信息(有序号),太复杂,那就分层处理:

  1. mysql-binlog-connector-java ( 监听解析 Binlog 的开源工具)
  2. 使用json文件预先定义模板,内容为要解析Binlog的列,没有定义的不处理。
  3. Binlog 日志Event对象解析 BinlogRowData对象, 再借助json模板文件转换成MySqlRowData对象。
  4. 第三次借助通用模板AdxxxTable,向索引更新方法投递出去

预定义json模板及解析 示意图

binlog解析及Kafka投递 示意图

广告检索服务

我们前面做的增量索引+全量索引 ,为了保存索引与数据库中存储的数据一致性,都是为了检索服务的高效、准确的执行检索,

媒体方请求信息,检索服务响应信息,根据多个索引去筛选匹配广告信息。

媒体方请求、检索服务响应的结构图

检索服务示意图

再次回顾整个编码实现

到目前未知,整个基于springCloud微服务架构的广告系统一小部分完成,整个系统中,最重要的是:

检索服务、全量索引、增量索引里面很复杂,很容易绕晕,为了维护索引,在里面使用了binlog日志保存一致性;

为了方便投递增量数据,使用了Kafka;

为了微服务正常运行,使用ribbon、feign通讯,eureka注册,zuul网关,hystrix短路器

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 六、search模块(广告索引)
    • 构建索引示意图(例子)
      • 加载全量索引示意图
        • binlog构建增量索引
          • 预定义json模板及解析 示意图
          • binlog解析及Kafka投递 示意图
        • 广告检索服务
          • 媒体方请求、检索服务响应的结构图
          • 检索服务示意图
        • 再次回顾整个编码实现
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档