第1章 课程简介【终于等到你,快来认识我】 本章对这门课程进行说明,包括:广告系统的介绍、课程使用的技术介绍、课程的学习规划等。 1-1 课程导学 试看 1-2 ***学前必读***(助你平稳踩坑,畅学无忧,课程学习与解决问题指南) 第2章 广告系统概览与准备工作【看一看我们将要做什么】 本章会介绍广告系统的思想、广告系统的技术实现架构、学习本课程之前的准备工作和广告系统的代码目录结构。 2-1 广告系统概览 试看 2-2 广告系统架构 2-3 【整体看一看】准备工作与系统目录结构 2-4 【总结与作业】关于广告系统与准备工作的介绍及作业 第3章 广告系统骨架开发【要想上梯子,必须从底下爬起】 广告系统使用SpringCloud微服务框架开发,并使用Maven做多模块管理。这一章完成项目骨架的开发,包括搭建注册中心和服务网关,同时也会对Maven的重要特性做介绍。 3-1 Maven 基础知识 3-2 Maven 相关特性 3-3 【动手编码】广告系统主工程 3-4 【边学边做】单节点 Eureka Server 的开发 3-5 【让代码跑起来】Eureka Server 的部署 3-6 【总结与作业】关于 ad-eureka 的介绍及作业 3-7 微服务架构及网关组件介绍 3-8 【边学边做】网关启动程序的开发 3-9 【注重理解】自定义网关过滤器的开发 试看 3-10 【总结与作业】关于 ad-gateway 的介绍及作业 第4章 微服务通用模块开发【企业级开发常见抽象】 本章实现广告系统微服务通用的功能,例如:统一响应格式、全局异常处理、通用代码定义、通用配置定义等。 4-1 【理解它的作用】关于通用模块功能的介绍 4-2 【跟我一起编码】统一响应处理的开发 4-3 统一异常处理的开发 4-4 统一配置的开发 4-5 【总结与作业】关于通用模块的说明及作业 第5章 广告投放系统的开发【打好基础,才能迎接将来的挑战】 本章的核心目标是实现投放系统,投放系统即实现对广告数据的存储。课程中会对表结构设计进行介绍,使用 JPA 实现对各个数据表的增删改查。同时,由于会涉及Spring相关的知识点(Spring IOC、Spring MVC、SpringBoot),也会对这些做基础介绍。… 5-1 【回顾下Spring特性】Spring IOC和MVC基础知识 5-2 【简单好用的SpringBoot】SpringBoot 常用功能特性介绍 5-3 【理解业务思想】广告投放系统数据表设计 5-4 【总结与作业】关于广告投放系统的介绍及作业 5-5 【开始编码】创建广告投放系统子模块 5-6 【Model层设计】数据表实体类定义(1) 5-7 数据表实体类定义(2) 5-8 数据表实体类定义(3) 5-9 数据表实体类定义(4) 5-10 【Dao层设计】数据表Dao接口的定义(1) 5-11 数据表Dao接口的定义(2) 5-12 【实战应用】用户账户服务功能实现 5-13 推广计划服务功能实现(1) 5-14 推广计划服务功能实现(2) 5-15 推广单元服务功能实现 5-16 推广单元限制服务功能实现(1) 5-17 推广单元限制服务功能实现(2) 5-18 创意服务功能实现 5-19 创意与推广单元关联服务功能实现 5-20 服务Controller的编写(1) 5-21 服务Controller的编写(2) 5-22 投放系统在网关中的配置 5-23 数据库与数据表的创建 5-24 【扩展与练习】关于 MySQL 慢查询的介绍及作业 5-25 【扩展与练习】关于 MySQL 索引的介绍及作业 5-26 【扩展与练习】关于 MySQL 事务隔离级别的介绍及作业 第6章 广告检索系统 – 微服务调用【基础打好了,难度也要加点了】 本章会介绍使用 Ribbon 与 Feign 组件实现微服务之间的调用。 6-1 【搭建微服务】创建广告检索系统子模块 6-2 【跟我一起编码】基于 Ribbon 实现微服务调用 6-3 【注重领会】基于 Feign 实现微服务调用 6-4 【总结与作业】关于微服务调用的介绍及作业 第7章 广告检索系统-广告数据索引的设计与实现【难度在逐步上升】 广告检索系统的核心是实现广告检索服务,为加快广告检索的速度,良好的索引设计是不可缺少的。本章首先对索引的设计与维护进行介绍,之后,实现广告数据的索引服务。 7-1 【理解设计好开发】广告数据索引设计介绍 7-2 【理解设计好开发】广告数据索引维护介绍 7-3 【跟我一起编码】推广计划索引对象定义与服务实现 7-4 推广单元索引对象定义与服务实现 7-5 关键词索引对象定义与服务实现 7-6 兴趣索引对象定义与服务实现 7-7 地域索引对象定义与服务实现 7-8 创意索引对象定义与服务实现 7-9 创意与推广单元关联索引对象定义与服务实现 7-10 【实战技能提升】索引服务类缓存的实现 7-11 【总结与作业】关于广告数据索引的设计与实现的介绍及作业 第8章 广告检索系统 – 加载全量索引【对业务的理解要透彻,才能一气呵成】 本章介绍广告数据导出的实现,之后介绍各层级索引操作的实现,最后完成全量索引的加载操作。 8-1 【边学边做】导出表数据字段定义(1) 8-2 导出表数据字段定义(2) 8-3 表数据导出到文件功能实现(1) 8-4 表数据导出到文件功能实现(2) 8-5 表数据导出到文件功能实现(3) 8-6 【在理解的基础上编码】索引操作Handler的定义与说明 8-7 第二层级索引操作的实现 8-8 第三层级索引操作的实现 8-9 第四层级索引操作的实现 8-10 【试试举一反三】全量索引加载的实现(1) 8-11 全量索引加载的实现(2) 8-12 【总结与作业】关于加载全量索引的介绍与说明 第9章 广告检索系统 – 监听 Binlog 构造增量数据【技能提升:难度指数5颗星】 本章首先会介绍什么是MySQL Binlog,它有哪些作用和特性;再去介绍怎样实现监听Binlog构造增量数据。 9-1 【认识一下吧】MySQL Binlog 的介绍 9-2 【总结与作业】关于 MySQL Binlog 的介绍 9-3 【先来个栗子】使用开源工具监听 Binlog 的演示 9-4 【总结与作业】mysql-binlog-connector-java介绍及作业 9-5 【注重领会】构造解析 Binlog 使用到的模板文件 9-6 【边学边做】实现对模板对象的解析 9-7 【技能逐步提升】载入模板文件并实现列索引到列名的映射 9-8 【注重理解】关于 Binlog 监听与解析的说明 9-9 【跟我一起编码】Binlog 监听与解析的实现(1) 9-10 【跟我一起编码】Binlog 监听与解析的实现(2) 9-11 【边学边做】根据 Binlog 对象构造增量数据的准备工作 9-12 【边学边做】根据 Binlog 对象构造增量数据的实现 9-13 【多做总结与思考】启动对 Binlog 的监听 9-14 【总结与作业】关于监听 Binlog 构造增量数据的介绍及作业 第10章 广告检索系统 – Binlog 增量数据的投递【企业级开发必备技能】 Binlog 增量数据可以有多种用途,也就对应着多种数据投递方案。本章会实现增量数据投递构建增量索引,以及投递到 Kafka 用于扩展工作。 10-1 【良好的代码设计】增量数据投递前的准备工作 10-2 【跟我一起继续编码】第二层级增量数据的投递 10-3 第三层级增量数据的投递 10-4 第四层级增量数据的投递 10-5 【这里有内涵】将增量数据投递到Kafka 10-6 【总结与作业】关于 Binlog 增量数据投递的介绍及作业 第11章 广告检索系统 – 广告检索服务【技能与业务思想再提升:难度指数5颗星】 广告系统最重要的功能当然是实现广告的检索,本章首先定义媒体方请求数据的格式和检索服务返回广告数据的格式,再去根据多种筛选策略实现对索引数据的筛选,最终完成广告检索服务。 11-1 【注重理解与思考】广告检索服务功能的介绍 11-2 【请求条件封装】媒体方请求对象的定义 11-3 【结合业务去看响应】检索服务响应对象的定义 11-4 【跟我一起编码】根据流量类型实现对推广单元的预筛选 11-5 根据匹配信息实现对推广单元的再筛选 11-6 通过推广单元获取关联的创意实现 11-7 填充检索服务响应对象 11-8 【完成功能】完善广告检索服务 11-9 【总结与作业】关于广告检索服务的介绍及作业 第12章 Kafka 的安装与使用【不仅能应用在工作与面试中,还会用于架构优化】 Kafka作为消息队列可以实现消息的传递,目前已经被各大互联网公司应用到实际的企业级开发。这一章将会介绍怎样安装Kafka、简单的使用Kafka。同时,为了更好的理解它的工作过程,会以编码实践的方式展示其原生API的使用方法。… 12-1 【理清概念】Kafka 基础知识的介绍 12-2 【一起环境搭建】Kafka 的安装与使用 12-3 【边学边做】使用原生API发送消息(1) 12-4 使用原生API发送消息(2) 12-5 自定义分区分配器 12-6 消费者与消费者组的概念 12-7 使用原生API消费消息(1) 12-8 使用原生API消费消息(2) 12-9 使用原生API消费消息(3) 12-10 【总结与作业】关于 Kafka 的介绍及作业 第13章 熔断监控Hystrix Dashboard【添加监控,完善系统】 微服务之间可以通过Feign实现调用,但是可能由于存在微服务不稳定的情况,导致调用失败。可以定义Hystrix实现断路器功能,并利用Hystrix Dashboard监控熔断情况。 13-1 Hystrix Dashboard 的介绍 13-2 Dashboard 模块的实现 13-3 关于 Hystrix Dashboard 的介绍及作业 第14章 广告系统的可用性测试【开发完功能,验证下是否好用】 通过测试用例和PostMan检验投放系统与检索系统的可用性。 14-1 【构建测试环境】广告系统测试前的准备工作 14-2 【总结与作业】mock 数据的内容 14-3 【功能上的测试】编写广告投放系统的测试用例 14-4 编写广告检索系统的测试用例(上) 14-5 编写广告检索系统的测试用例(下) 14-6 【总结与作业】关于广告系统可用性测试的介绍及说明 14-7 【接口上的测试】投放系统的 HTTP 接口测试 14-8 【总结与作业】关于广告系统可用性测试的介绍及说明 – HTTP 接口测试 第15章 课程总结 对课程所介绍的内容做总结,列出所涉及到的知识点,回顾广告系统,并提出问题以及扩展方案。 15-1 课程总结 第16章 (彩蛋番外篇一)Spring事务处理机制【工作与面试,你都会遇到】 课程上线后,综合同学们的群讨论以及问答区提问,老师新增本章节。希望帮助同学们能够正确的理解Spring 的事务处理机制,更加准确的编写有关数据库增删改查的业务代码。当然,Spring 的事务处理机制也是面试考察的重点呦~~(未完待续@_^)… 16-1 异常和事务基础 16-2 Spring 事务的属性和使用入口 16-3 Spring 事务管理接口的介绍 16-4 @Transactional 注解解析 16-5 Spring 事务管理接口 16-6 阶段练习 16-7 Spring 事务机制验证前的准备工作 16-8 Spring 事务对主动捕获异常和checked异常的处理 16-9 Spring 事务对指定异常和RollbackOnly异常的处理 16-10 Spring 事务对调用事务方法的处理 16-11 Spring 中 @Transactional 注解的限制 第17章 (彩蛋番外篇二)重构检索系统微服务【架构重新设计,优化系统性能】 企业级开发中,随着版本的逐步迭代,代码重构不可避免。代码重构包含对代码的整理、架构的重新设计、性能优化等等。这一章里,我将对检索系统微服务的架构做出调整,功能结构更加清晰的同时,系统性能也有很大的提升 17-1 章节说明 17-2 【主动思考,提升架构能力】怎样组织微服务的包结构 17-3 【理论知识融会贯通】再谈 MySQL 的 Master Slave 协议 17-4 微服务包的设计思想 17-5 【能力提升】广告检索微服务架构设计优化 17-6 【服务拆分】实现 ad-binlog-common 模块 17-7 【服务拆分】实现 ad-binlog-kafka 模块 17-8 【注重理解】实现对 ad-search 模块的重构 17-9 【正确性检验】广告检索微服务重构后的可用性测试 第18章 (彩蛋番外篇三)分布式日志收集系统【全方位的开发过程,扩充自身知识面】 对于任何一个系统来说,特别对于多实例部署环境,日志收集都是不可或缺的。这一章里,我将完整的搭建 ELK(包括下载、安装、配置)实现分布式环境下的日志收集工作。 18-1 【初识 ELK】ELK 的概念、功能和组织结构 18-2 【更好的方案】Logstash 替换为 Filebeat 18-3 【边学边做】SpringBoot 项目的日志配置 18-4 日志收集系统的说明 18-5 SpringBoot 项目的日志配置 18-6 【完整的构建过程】ELK 的下载、安装和配置 18-7 【玩转ELK】启动 ELK 收集微服务日志 18-8 【优化预处理】给 ES 创建 pipeline 实现对日志的预处理 18-9 ELK 的下载、安装和配置 18-10 给 ES 创建 pipeline
广告系统是互联网公司中的必备知识体系,但是关于怎样设计、实现广告系统的资料、课程却非常稀少 。本课程将从零开始逐步实现广告系统中最为核心的两个模块:广告投放系统与广告检索系统,并测试它们的可用性,让你在实战中学习广告系统的设计思想,实现方法,掌握这项各大公司都极为重视的技术