[Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结

到目前为止,我们整个初级广告检索系统就初步开发完成了,我们来整体回顾一下我们的广告系统。
整个广告系统编码结构如下:

1.mscx-ad 父模块

主要是为了方便我们项目的统一管理

2.mscx-ad-db

这个模块主要有2个作用,本身只应该作为数据库脚本管理package来使用,但是我们在生成索引文件的过程中,为了方便,我就直接将导出全量索引的json文件生成也写在了该项目中。 主要目的还是通过flyway进行数据库脚本的管理。

3.mscx-ad-common

这个主要是一些通用工具类的存放

4.mscx-ad-feign-sdk

这个jar包主要是为了服务间的调用,为了统一管理各种pojo 以及CustomFeignClient而创建的,方便一次修改,全局应用。当然如果项目团队不大的时候,你完全可以在不同的project中创建相同的vo对象,目前RPC中大多如此设计。

5.mscx-ad-dashboard

这个是hystrix提供的可视化管理工具,当然,后期我同样会使用我们的阿里大大的sentinel将其替换掉,敬请期待。

6.mscx-ad-discovery

这个我命名的时候没有使用ad-eureka,在项目中也是尽量使用的SpringCloud Common抽象的公共注解,比如@EnableDiscoveryClient,其实有心的同学能看的出来,我打的主意也是想要后续替换的,我们可以使用ZK,但是我后期同样会使用我们阿里大大的NACOS 来替换掉它。

7.mscx-ad-zuul

网关路由组件,没啥特别的,后续使用gateway替换

8.mscx-ad-sponsor

广告新增的主要模块,为广告主服务

9.mscx-ad-search

整个广告系统的核心,对外暴露查询服务。

为了我们系统的高可用,上述系统理论上都需要多实例部署。

我们在广告检索服务中使用到了监听 Mysql数据库的 Binlog来实现增量索引,大家不妨想想,如果我们的系统请求很高,我们的binlog就需要被N多的服务实例所监听,这样会有什么问题? 为什么会有这种问题? 怎么修改是合理的?

番外

从2018年10月31号,我们阿里大大开源发布了Spring Cloud Alibaba,经过1年的项目孵化,终于在2019年8月1号毕业了小马哥威武, SC-Alibaba Team 威武。为了迎接这一伟大的国内Spring盛世,接下来我会写一个学习SCA的课程,途中遇到的所有问题都会和大家一起共享,加油。

原文地址:https://www.cnblogs.com/zhangpan1244/p/11386208.html

时间: 2024-10-08 22:34:09

[Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结的相关文章

[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用

上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Port,然后再去调用API.本节课我们使用更简单的方式来实现,使用声明式的Web服务客户端Feign,我们只需要使用Feign来声明接口,利用注解来进行配置就可以使用了,是不是很简单?实际工作中,我们也只会用到Feign来进行服务之间的调用(大多数).接下来,我们来实例操作一把. 为了代码的重用性,我们

[Spring cloud 一步步实现广告系统] 配置项目结构 & 实现Eureka服务

父项目管理 首先,我们在创建投放系统之前,先看一下我们的工程结构: mscx-ad-sponsor就是我们的广告投放系统.如上结构,我们需要首先创建一个Parent Project mscx-ad 来编写父项目的pom,来管理我们的统一依赖信息. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xm

[Spring cloud 一步步实现广告系统] 业务架构分析

什么是广告系统? 主要包含: 广告主投放广告的<广告投放系统> 媒体方(广告展示媒介-<地铁广告屏幕>)检索广告用的<广告检索系统> 广告计费系统(按次,曝光量等等) 报表系统 Etc. 使用技能栈 JDK1.8 MySQL 8+ Maven 3+ Spring cloud Greenwich.SR2 Eureka Zuul / gateway Feign ... Spring boot 2.1.5 Kafka 2.2.0 MySQL Binlog 项目结构 项目架构

[Spring cloud 一步步实现广告系统] 7. 中期总结回顾

在前面的过程中,我们创建了4个project: 服务发现 我们使用Eureka 作为服务发现组件,学习了Eureka Server,Eureka Client的使用. Eureka Server 加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <!--<artifactId>spring-cloud-netflix-eureka-server</artifactId>

[Spring cloud 一步步实现广告系统] 15. 使用开源组件监听Binlog 实现增量索引准备

MySQL Binlog简介 什么是binlog? 一个二进制日志,用来记录对数据发生或潜在发生更改的SQL语句,并以而进行的形式保存在磁盘中. binlog 的作用? 最主要有3个用途: 数据复制(主从同步) Mysql 的Master-Slave协议,让Slave可以通过监听binlog实现数据复制,达到数据一致性目的 数据恢复 通过mysqlbinlog工具恢复数据 增量备份 Binlog 变量 log_bin (Binlog 开关,使用show variables like 'log_b

[Spring cloud 一步步实现广告系统] 15. 监听Binlog 增量索引准备

MySQL Binlog简介 什么是binlog? 一个二进制日志,用来记录对数据发生或潜在发生更改的SQL语句,并以而进行的形式保存在磁盘中. binlog 的作用? 最主要有3个用途: 数据复制(主从同步) Mysql 的Master-Slave协议,让Slave可以通过监听binlog实现数据复制,达到数据一致性目的 数据恢复 通过mysqlbinlog工具恢复数据 增量备份 Binlog 变量 log_bin (Binlog 开关,使用show variables like 'log_b

[Spring cloud 一步步实现广告系统] 21. 系统错误汇总

广告系统学习过程中问题答疑 博客园 Eureka集群启动报错 Answer 因为Eureka在集群启动过程中,会连接集群中其他的机器进行数据同步,在这个过程中,如果别的服务还没有启动完成,就会出现Connection refused: connecterror,当其他节点启动完成之后,报错就会消失. AdSearch 服务启动报错 2019-08-16 10:27:57.038 ERROR 73180 --- [ main] o.s.boot.SpringApplication : Applic

[Spring cloud 一步步实现广告系统] 6. Service实现&amp;Zuul配置&amp;Test

DAO层设计实现 这里我们使用Spring DATA JPA来实现数据库操作,当然大家也可以使用Mybatis,都是一样的,我们依然以用户表操作为例: /** * AdUserRepository for 用户数据库操作接口 * 继承自JpaRepository<AdUser, Long>,第一个参数AdUser代表当前要操作的实体类的class定义,第二个参数Long表示该类的主键类型 * * @author <a href="mailto:[email protected]

[Spring cloud 一步步实现广告系统] 3. 网关路由

Zuul(Router and Filter) WIKI: 传送门 作用 认证,鉴权(Authentication/Security) 预判(Insights) 压力测试(Stress Testing) 灰度/金丝雀测试(Canary Testing) 动态路由(Dynamic Routing) 服务迁移(Service Migration) 降低负载(Load Shedding) 静态响应处理(Static Response handling) 主动/主动交换管理(Active/Active