1. 单库单应用模式
  2. 内容分发模式
  3. 查询分离模式
  4. 微服务模式
  5. 多级缓存模式
  6. 分库分表模式
  7. 弹性伸缩模式
  8. 多机房模式


文章目录

1.单库单应用模式

SOA

架构模式 8种_java

这种模式一般只有一个数据库,一个业务应用层,一个后台管理系统,所有的业务都是用过业务层完成的,所有的数据也都是存储在一个数据库中的,好一点会有数据库的同步。

优点:结构简单、开发速度快、实现简单,可用于产品的第一版等有原型验证需求、用户少的设计。
缺点:性能差、基本没有高可用、扩展性差,不适用于大规模部署、应用等生产环境。

2.内容分发模式

CDN技术把网页、图片、CSS、JS等这些静态资源分发到离用户最近的服务器。

架构模式 8种_架构_02

这种模式较单库单应用模式多了一个CDN、一个云存储OSS(七牛、又拍等雷同)。

这个模式的关键是智能DNS,它能够解析出离用户最近的服务器。

优点:资源下载快、无需过多的开发与配置,同时也减轻了后端服务器对资源的存储压力,减少带宽的使用。
缺点:目前来说OSS,CDN的价格还是稍微有些贵(虽然已经降价好几次了),只适用于中小规模的应用,另外由于网络传输的延迟、CDN的同步策略等,会有一些一致性、更新慢方面的问题。

3.查询分离模式

这种模式主要解决单机数据库压力过大,从而导致业务缓慢甚至超时,查询响应时间变长的问题,也包括需要大量数据库服务器计算资源的查询请求。

架构模式 8种_数据库_03
一个是业务数据库的主从分离,一个是引入了ES

数据延迟,数据一致性的保证。

4.微服务模式

架构模式 8种_架构_04

业务分块,做了垂直切分,切成一个个独立的系统,每个系统各自衍化,有自己的库、缓存、ES等辅助系统,系统之间的实时交互通过RPC,异步交互通过MQ,通过这种组合,共同完成整个系统功能。

相对高性能,可扩展性强,高可用,适合于中等以上规模公司架构
复杂、度不好把握。指不仅需要一个能在高层把控大方向、大流程、总体技术的人, 还需要能够针对各个子系统有针对性的开发。

5.多级缓存模式

架构模式 8种_开发语言_05
客户端处,一个是API网关处,一个是具体的后端业务处

客户端处缓存: 对于WEB来讲,有浏览器本地缓存、Cookie、Storage、缓存策略等技术;对于APP来讲,有本地数据库、本地文件、本地内存、进程内缓存支持。

API网关处缓存: http请求,API网关用的基本都是nginx, 可以使用nginx本身的缓存模块,也可以使用Lua+Redis技术定制化。其他的也都大同小异。

后端业务处: Redis,Memcache,Jvm。

数据一致性问题较突出,容易发生雪崩

6.分‍‍‍库分表模式

架构模式 8种_缓存_06
减少数据库单表的压力。

事务保证困难、业务逻辑需要做大量改造。

7.弹性伸缩模式

架构模式 8种_缓存_07
多了一个弹性伸缩服务,用来动态的增加、减少实例。

突然间的大流量爆发

具体实现上比较成熟的两种资源池方案是​​VM​​​、​​docker​​, 监控的点有CPU、内存、硬盘、网络IO、服务质量等,根据这些,在配合一些预留、扩张、收缩策略, 进行自动伸缩。

优点:弹性、随需计算,充分优化企业计算资源。
缺点:应用要从架构层做到可横向扩展化改造、依赖的底层配套比较多,对技术水平、实力、应用规模要求较高。

8.多机房模式

主要解决不同地区高性能、高可用的问题。

架构模式 8种_缓存_08
优点:高可用、高性能、异地多活。
缺点:数据同步、数据一致性、请求路由。