继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

广告系统设计与实现

2019-02-07 22:08:137473浏览

张勤一

6实战 · 22手记 · 14推荐
TA的实战

    广告系统是大多数互联网公司收入的主要来源,所以,自然也就成为互联网公司最核心的业务系统。但是,对于没有接触过广告系统的同学来说,往往无从下手。由此,我从企业级开发的思路与角度出发,制作了这套广告系统的课程。
    但是,这套课程并不局限于广告系统业务,其所使用的微服务开发框架 SpringCloud 目前已经在企业级开发中被大量的应用。同时,监听与解析 MySQL 的 Binlog、通过 Kafka 实现服务之间的通信等等技术在企业级开发中也非常的流行。
    下面,我通过三个问题来介绍这套课程与学习路线:

  • 这套课程实现了什么,将来会做怎样的扩展 ?
  • 这套课程使用了哪些技术、框架和工具,它们都做了些什么 ?
  • 学习这套课程或者新技术(业务)应该怎样做 ?

    第一个问题:首先,在理论方面,这套课程首先对广告系统做了介绍:什么是广告系统 ?广告系统包含了哪些子系统(微服务)?广告系统的架构 ?之后,编程实践方面:搭建了 Eureka Server(实现服务注册与发现)、编写了 API 网关(实现微服务统一访问入口与请求记录)、通用模块开发(统一响应、统一异常、统一配置)、广告投放与广告检索微服务。最后,随着后期的维护与迭代,会对当前的实现进行优化,并扩展其他的子系统,例如:报表(Olap)微服务。

    第二个问题:技术、框架与工具方面:

  • JDK1.8:课程使用 Java 语言开发,使用当前企业级开发中最流行的 1.8 版本(虽然)。
  • SpringCloud:一整套微服务开发解决方案,使用当前最新的正式版本 Finchley.RELEASE。广告系统基于 SpringCloud 开发,以独立的微服务实现各个功能模块。
  • MySQL:用于存储广告主投放的广告数据(推广计划、推广单元、维度限制、创意等等)。课程中使用 MySQL 8.0 版本,但是,同样支持低版本的 MySQL,即与 MySQL 版本无关。
  • mysql-binlog-connector-java:开源 MySQL Binlog 监听与解析工具,代码结构清晰且实现简单,非常的轻量级。广告检索除了实现精确匹配之外,还对响应延迟有非常高的要求。所以,需要针对全量数据和增量数据构建索引,而增量数据就是通过监听并解析 MySQL Binlog 实现的。
  • Kafka:用于完成 MySQL Binlog 增量数据的投递。Kafka 是目前企业级开发中最流行的消息队列,且经常会在面试中遇到 Kafka 相关的问题。

    第三个问题:学习新技术比较好的方式是:先去了解它的基本功能、基本用法;再去实践项目开发,学习怎样利用技术完成业务系统;最后再根据需要学习其实现原理。如果在学习我的这套广告系统课程,遇到不懂的问题,可以随时把问题写到问答区里,我会有问必答;有各种想法、思路,可以随时到 QQ 群交流、讨论。

    广告系统涉及的技术广泛、业务实现比较复杂,且有很多可以扩展的地方。在面试的时候,项目经验是必须的,且我们通常会考察项目的难度与亮点,如果你能对广告系统有所认识和理解,那么,一定也会对面试过程有所帮助。

打开App,阅读手记
4人推荐
发表评论
随时随地看视频慕课网APP

热门评论

勤一师兄之前是在小米商业产品部做广告系统开发吗?

查看全部评论