MD 更新:未知

大型网站架构演化 — 总结

笔记排序

序号笔记所处阶段
00维度技术全景索引(贯穿全程)
01架构演化单体 → 垂直拆分 → 引入缓存(演化主线)
02Web 应用服务器服务器角色分离(Web 服务器 vs 应用服务器)
03负载均衡流量分发、高可用、横向扩展
04使用服务集群改善网站并发能力集群化 + Session 一致性 + 有状态/无状态
05缓存数据库(Redis)Redis vs Memcache、缓存雪崩/穿透/击穿/预热
06缓存与分布式系统CAP 理论、Redis 集群分片、持久化 RDB/AOF
07内容分发网络(CDN)静态资源就近访问、边缘节点
08NoSql非结构化数据、高并发读写、横向扩展
09JWT无状态身份认证、令牌机制
10响应式 Web 设计多终端适配、流式布局

演化路径

大型网站的架构演化遵循一条自底向上、逐层解耦的路线:

第一阶段:单体应用 → 垂直拆分

网站起步时应用、数据库、文件全部部署在一台服务器。访问量增长后拆分为三台独立服务器,各司其职。

flowchart LR
    A[单体架构:应用+数据库+文件 同一台] --> B[垂直拆分:应用服务器 / 数据库服务器 / 文件服务器 分离]

第二阶段:引入缓存层

数据库成为瓶颈后,在应用与数据库之间加入缓存(Memcache/Redis),遵循旁路缓存(Cache-Aside)、读写穿透、异步写入等模式,将读压力从数据库剥离。

flowchart LR
    A[应用服务器] --> B[分布式缓存]
    A --> C[数据库]

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

单台应用服务器达到上限,通过负载均衡器(四层/七层)将请求分发到多台服务器集群。核心问题:Session 共享(存入 Redis)、有状态 vs 无状态服务。

flowchart LR
    C[客户端] --> LB[负载均衡器]
    LB --> A1[应用服务器 1]
    LB --> A2[应用服务器 2]
    LB --> A3[应用服务器 n]
    A1 --> Redis[(Redis Session)]
    A2 --> Redis
    A3 --> Redis

第四阶段:动静分离 + CDN 加速

静态资源(HTML/CSS/JS/图片/视频)不再每次都回源,推送到全球 CDN 边缘节点,用户就近获取。

第五阶段:数据层多元化(NoSQL)

关系型数据库在非结构化数据、高并发写、全文搜索等场景下力不从心。按数据特征选型:Redis(缓存/Session)、MongoDB(文档)、Elasticsearch(搜索)、HBase(日志分析)。

第六阶段:服务化与前端适配

后端向微服务演进,认证采用 JWT 实现无状态;前端采用响应式设计适配多端。


核心设计原则

  1. 纵向拆分——应用、数据、文件分离到独立服务器
  2. 横向扩展——集群 + 负载均衡线性扩展处理能力
  3. 缓存前置——层层加缓存(浏览器 → CDN → 反向代理 → 本地缓存 → 分布式缓存),尽可能不触及数据库
  4. 职责分离——不同数据特征使用不同存储引擎(SQL / NoSQL / ES / 文件系统)
  5. 无状态设计——服务不保存客户端状态,通过 Redis 或 JWT 解耦

各维度技术总览

维度涉及技术
架构MVC、MVP、MVVM、REST、WebService、微服务
并发分流集群(负载均衡)、CDN
缓存Memcache、Redis、Squid
数据主从表、内存数据库、反规范化、NoSQL、分区、视图与物化视图
持久化Hibernate、Mybatis
分布式存储Hadoop、FastDFS、区块链
Web 服务器Apache、WebSphere、WebLogic、Tomcat、JBOSS、IIS
数据编码XML、JSON
安全性SQL 注入
其他静态化、有状态与无状态、响应式 Web 设计