乐于分享
好东西不私藏

29.大型软件架构演化

29.大型软件架构演化
大家好!今天我们继续细说软考高级架构知识点。本节我们学习大型软件架构演化的内容

第 1 阶段:单体架构

概念:网站初期规模小,应用程序、数据库、文件全部部署在同一台服务器。
特点:所有资源耦合在一台机器。
优点:架构最简单、开发部署便捷、维护成本极低。
缺点:性能、存储受单台服务器硬件上限约束,用户量上涨后极易遇到瓶颈,无法水平扩展。

第 2 阶段:垂直架构(应用与数据分离)

概念:业务增长,拆分服务器角色,分成应用服务器、文件服务器、数据库服务器三台独立服务器。
特点:不同服务器匹配不同硬件需求;应用侧重算力、数据库侧重内存磁盘、文件服务器侧重大容量硬盘。
优点:硬件资源按需分配,并发能力与存储空间得到提升。
缺点:数据库依旧是单点,访问压力上涨后数据库延迟会拖垮整体系统。

第 3 阶段:引入缓存优化性能

概念:遵循二八定律(80% 访问集中 20% 热点数据),引入缓存降低数据库访问压力;分为本地缓存、远程分布式缓存集群。
    本地缓存:部署在应用服务器内存
     远程分布式缓存:独立缓存服务器集群
特点:热点数据放内存,减少数据库查询。
优点:显著降低数据库负载,提升数据访问速度。
缺点:单台应用服务器请求连接数有限,高峰期应用服务器成为新瓶颈;本地缓存受应用内存限制,存在内存争抢。

第 4 阶段:应用服务器集群 + 负载均衡

概念:应用服务器水平扩展,搭建集群;增加负载均衡调度器,把用户请求分发到集群内多台应用服务器。
特点:应用层支持横向扩容。
优点:消除应用服务器单点瓶颈,实现系统弹性伸缩,支持更多并发用户。
缺点:数据库依然是整个系统最大瓶颈,尚未解决数据层压力。

第 5 阶段:数据库读写分离

概念:利用数据库主从复制,搭建主库(写操作)、从库(读操作);应用通过统一数据访问模块区分读写请求。
特点:读写流量拆分,读请求分流到从库。
优点:分担数据库压力,提升查询能力;对应用透明。
缺点:
  1. 主从存在数据同步延迟;
  2. 单主库写入能力仍存在上限,海量写入场景无法支撑。

第 6 阶段:CDN + 反向代理加速

概念:引入 CDN、反向代理,依靠缓存尽早向用户返回静态资源。
   CDN:部署在网络边缘机房,就近给用户提供资源
   反向代理:部署在网站中心机房,缓存静态资源
特点:静态资源就近访问,减少后端流量。
优点:改善跨地域用户访问速度,减轻后端应用集群压力,降低用户流失。
缺点:主要优化静态资源,无法解决动态业务、数据库层面压力。

第 7 阶段:分布式文件系统 + 分布式数据库

概念:当单台数据库、文件服务器无法承载数据规模时,进行拆分;文件使用分布式文件系统,数据库做分库分表 / 业务分库。
特点:数据层分布式化,摆脱单机存储上限。
优点:突破单机存储限制,支持海量文件与海量数据存储。
缺点:分布式带来事务、数据一致性、运维复杂度上升;跨库查询难度增加。

第 8 阶段:引入 NoSQL + 搜索引擎

概念:业务场景多样化,关系型数据库难以满足全部需求;引入 NoSQL 存储非结构化数据、搜索引擎解决复杂全文检索;统一数据访问模块屏蔽多种数据源差异。特点:多类型数据存储混合架构。
优点:适配多样化数据场景,提升检索能力,充分发挥不同存储引擎优势。
缺点:系统组件增多,架构复杂度、运维难度上升;需要掌握多种存储技术。

第 9 阶段:业务拆分(水平业务划分)

概念:按照产品线、业务域拆分单体应用,拆分为多个独立部署应用(订单、用户、商品等);应用之间通过链接、消息队列、共享数据库交互。
特点:业务解耦,不同团队独立负责不同应用。
优点:业务隔离,独立迭代发布,团队并行开发,故障影响范围缩小。
缺点:多个应用直接连接数据库,大量数据库连接消耗,容易引发连接资源耗尽。

第 10 阶段:分布式服务(微服务雏形)

概念:抽取各个应用通用重复业务(用户管理、商品服务),独立部署为公共分布式服务;前端应用只处理界面,通过远程调用复用公共服务。
特点:业务能力下沉为可复用服务,前后端、通用业务与业务应用解耦。
优点:服务复用,消除大量重复开发;减少数据库直接连接数量;架构具备高度弹性,支撑超大规模集群。
缺点:分布式架构复杂度最高,需要处理服务治理、远程调用、超时、分布式事务、服务监控等一系列问题。

辅助背诵顺口溜

一单二垂三缓存,四集群五读写分;六 cdn 七分布存,八搜九拆十服务。

思维导图

非常感谢大家一直以来的支持与陪伴!如果这期内容对你有收获、有帮助,欢迎点赞、关注,持续解锁更多IT架构干货,我们下期再见!

相关学习资料