高可用架构
技术随笔
大型网站技术架构笔记:演化历程、架构模式与核心要素
大型网站的技术架构并非一蹴而就,而是随着业务规模逐步演化出来的。本文整理自主流架构实践,从演化历程、架构模式、核心要素三个层面做笔记。
一、架构演化历程
- 初始阶段:应用、数据库、文件都在一台服务器(LAMP)。
- 应用与数据分离:应用服务器(强 CPU)、数据库服务器(强内存/磁盘)、文件服务器各司其职。
- 引入缓存:遵循二八定律,把高频访问的 20% 数据放入缓存(本地缓存 / 分布式缓存)。
- 应用服务器集群:通过负载均衡横向扩展,提升并发能力。
- 数据库读写分离:主库写、从库读,缓解数据库压力。
- 反向代理与 CDN:CDN 把静态资源放到离用户最近的机房;反向代理缓存动态页面。
- 分布式文件系统 / 分布式数据库:单机能存不下时做分库分表、引入 NoSQL。
- 业务拆分与分布式服务:按业务拆应用,把用户、商品等公共能力抽成独立服务复用。
二、常用架构模式
- 分层:表现层 / 业务层(Service)/ 数据层(DAO)边界清晰,便于协作与部署。
- 分割:业务垂直拆分,模块低耦合、独立部署。
- 分布式:分层与分割的目的就是便于分布式部署(应用、静态资源、数据、计算)。
- 集群:单模块多机部署,配合负载均衡提供扩展性与高可用。
- 缓存:CDN、反向代理、本地缓存、分布式缓存,前提是被频繁访问且一段时间内有效。
- 异步:用消息队列解耦,削峰填谷、加快响应。
- 冗余:服务器集群 + 数据库冷热备份,保障 7×24 可用。
- 自动化与安全:自动化发布/监控/降级;身份校验、加密、验证码、防注入。
三、五大核心架构要素
| 要素 | 含义 | 常用手段 |
|---|---|---|
| 性能 | 用户访问快慢 | 浏览器缓存/CDN、缓存、异步、集群、索引与 SQL 优化 |
| 可用性 | 可访问时间占比 | 冗余集群、灰度发布、自动化测试 |
| 伸缩性 | 加机器提升能力 | 无状态应用 + 负载均衡、一致性哈希缓存路由 |
| 扩展性 | 快速响应需求变化 | 事件驱动(消息队列)、分布式服务 |
| 安全性 | 应对攻击 | HTTPS、加密、防 XSS/SQL 注入、风控 |