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

  • mscx-ad 父模块

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

  • mscx-ad-db

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

  • mscx-ad-common

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

  • mscx-ad-feign-sdk

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

  • mscx-ad-dashboard

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

  • mscx-ad-discovery

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

  • mscx-ad-zuul

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

  • mscx-ad-sponsor

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

  • mscx-ad-search

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

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

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

番外

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


奔跑的人生 | 博客园 | segmentfault | spring4all | csdn | 掘金 | OSChina | 简书 | 头条 | 知乎 | 51CTO

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

  1. [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard

    在之前的18次文章中,我们实现了广告系统的广告投放,广告检索业务功能,中间使用到了 服务发现Eureka,服务调用Feign,网关路由Zuul以及错误熔断Hystrix等Spring Cloud组件. ...

  2. [Spring cloud 一步步实现广告系统] 2. 配置&Eureka服务

    父项目管理 首先,我们在创建投放系统之前,先看一下我们的工程结构: mscx-ad-sponsor就是我们的广告投放系统.如上结构,我们需要首先创建一个Parent Project mscx-ad 来 ...

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

    在前面的过程中,我们创建了4个project: 服务发现 我们使用Eureka 作为服务发现组件,学习了Eureka Server,Eureka Client的使用. Eureka Server 加依 ...

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

    什么是广告系统? 主要包含: 广告主投放广告的<广告投放系统> 媒体方(广告展示媒介-)检索广告用的<广告检索系统> 广告计费系统(按次,曝光量等等) 报表系统 Etc. 使用 ...

  5. [Spring cloud 一步步实现广告系统] 13. 索引服务编码实现

    上一节我们分析了广告索引的维护有2种,全量索引加载和增量索引维护.因为广告检索是广告系统中最为重要的环节,大家一定要认真理解我们索引设计的思路,接下来我们来编码实现索引维护功能. 我们来定义一个接口, ...

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

    MySQL Binlog简介 什么是binlog? 一个二进制日志,用来记录对数据发生或潜在发生更改的SQL语句,并以而进行的形式保存在磁盘中. binlog 的作用? 最主要有3个用途: 数据复制( ...

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

    广告系统学习过程中问题答疑 博客园 Eureka集群启动报错 Answer 因为Eureka在集群启动过程中,会连接集群中其他的机器进行数据同步,在这个过程中,如果别的服务还没有启动完成,就会出现Co ...

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

    上一节我们使用了Ribbon(基于Http/Tcp)进行微服务的调用,Ribbon的调用比较简单,通过Ribbon组件对请求的服务进行拦截,通过Eureka Server 获取到服务实例的IP:Por ...

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

    DAO层设计实现 这里我们使用Spring DATA JPA来实现数据库操作,当然大家也可以使用Mybatis,都是一样的,我们依然以用户表操作为例: /** * AdUserRepository f ...

随机推荐

  1. 使用DQL查询数据库

    DQL ( Data Query Language) 是数据查询语言,如 Select 语句#### 一.DQL 语法 ```sqlSELECT [ALL | DISTINCT]{* | table. ...

  2. NOIP2018提高/普及成绩

    明天就要出了,不忍看到自己爆零,现在很慌. 大家都考的如何呢?欢迎留言自己的分数或预估分数.

  3. Excel催化剂开源第48波-Excel与PowerBIDeskTop互通互联之第二篇

    前一篇的分享中,主要谈到Excel透视表连接PowerBIDeskTop的技术,在访问SSAS模型时,不止可以使用透视表的方式访问,更可以发数据模型发起DAX或MDX查询,返回一个结果表数据,较透视表 ...

  4. Polya定理与Burnside引理

    也许更好的阅读体验 \(Burnside引理\) 公式 \(\begin{aligned}L=\frac{1}{|G|}\sum_{i=1}^{|G|}D_{G_i}\end{aligned}\) 一 ...

  5. python 之 并发编程(线程理论,开启线程的两种方式,进程与线程的区别,线程对象的其他方法)

    9.9 线程理论 1.什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位,一个进程内自带一个线程,线程才是执行单位 2.进程VS线程 同一进程内的线程们共享 ...

  6. maven install时跳过测试

    xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! - ...

  7. C++里long的字节数

    标准规定long的大小不小于int也就是说sizeof(long)>=sizeof(int). Numerical type sizes in C (bits) Platforms  \   T ...

  8. python基础之元祖、嵌套,for循环、 enumerate、range的试用案例

    元祖又叫做只读列表,可循环查询.可切片,元祖里的直接元素不能更改,但是若里面有嵌套的列表,则可以修改列表里的元素 tu = (1,2,3,'sun',[3,4,5,'cat']) tu[4][3] = ...

  9. 实战SpringCloud响应式微服务系列教程(第一章)

    前言 在当今互联网飞速发展的时代,业务需求不断的更新和产品的迭代给系统开发过程和编程模式也带来巨大挑战,Spring Cloud微服务也随之应用而生,从springboot1.x到springboot ...

  10. ArchSummit分享 | 高德地图App架构演化与实践

    讲师介绍 郝仁杰,高德地图无线开发专家.在7月13日落幕的2019年ArchSummit峰会上就高德地图近几年的App架构演化和实践进行了分享. 背景概述 高德是国内领先的数字地图内容.导航和位置服务 ...