理论系列-大型网站架构(笔记)
文章目录
1. 前言
1.1 大型网站特点
- 高并发,大流量:高并发用户,大流量访问
- 高可用:系统24小时不间断服务
- 海量数据:需要存储、管理海量数据
- 用户分布广泛,网络情况复杂
- 安全环境恶劣
- 需求快速变更,发布频繁
- 渐进式发展
1.2 网站架构模式
-
分层:
应用层
服务层
数据层
-
分割:服务拆分
-
分布式:业务拆分
-
集群
-
缓存
-
异步
-
冗余
-
自动化
1.3 核心要素
1.3.1 性能
指标:响应时间、TPS、系统性能计数器等
- | - |
---|---|
浏览器 | 浏览器缓存、页面压缩… |
DNS | CDN |
代理 | 反向代理 |
应用 | 缓存、消息队列、集群 |
代码 | 多线程等 |
数据库 | 索引、缓存、SQL优化 |
1.3.2 可用性
冗余
- | - |
---|---|
应用服务器 | 负载均衡+集群 |
存储服务器 | 备份 |
1.3.3 伸缩性
向集群加入服务器缓解不断上升的用户方法访问压力和不断增长的数据存储需求
1.3.4 扩展性
功能需求
事件驱动架构和分布式服务
2. 演进
2.1 初始阶段:一台服务器
一台服务器(部署应用程序、数据库、文件系统…)
2.2 应用和数据库分离
问题:用户增长,单机性能不够…
解决:应用和数据库分离
结果:应用服务器、文件服务器、数据库服务器
2.3 增加缓存
问题:热点数据查询慢
解决:增加缓存
结果:应用服务器、缓存服务器、数据库服务器、文件服务器
2.4 应用程序集群
问题:数据库可支撑查询,用户再增长,应用撑不住
解决:负载均衡+集群
结果:负载均衡、应用集群、缓存、数据库、文件
2.5 数据库读写分离
问题:数据库写称为瓶颈
解决:数据库读写分离
结果:负载均衡、应用集群、缓存、主-从数据库、文件
2.6 反向代理和CDN加速
问题:不同地区用户访问,速度差别大
2.7 分布式文件系统、分布式数据库、NoSQL、搜索引擎
问题:业务需求
2.8 服务拆分
3. 高可用架构
3.1 高可用网站架构
数据和服务的冗余备份和失效转移
3.2 高可用应用
无状态
负载均衡
集群
有状态的session
- Session复制
- Session绑定
- Cookie记录Session
- Session服务器
3.3 高可用服务
分级管理(核心服务更高可用)
超时设置
异步调用
服务降级
幂等性
3.4 高可用数据
数据备份和失效转移
4. 伸缩性架构
物理隔离:不同服务器部署不同服务
集群:多台服务器提供相同功能
负载均衡算法
一致性哈希
5. 可扩展架构
低耦合
消息队列
分布式服务
6. 架构技术
网站架构层:
- | - |
---|---|
前端架构 | |
应用层架构 | |
服务层架构 | |
存储层架构 | |
后台架构 | |
数据中心机房架构,安全架构,数据采集与监控 |
前端架构:浏览器优化,CDN,动静分离,图片服务,反向代理,DNS
应用层架构:开发框架,页面渲染,负载均衡,Session管理,动态页面静态化,业务拆分,虚拟化服务器
服务层架构:分布式消息,分布式服务,分布式缓存,分布式配置
存储层架构:分布式文件,关系数据库,NoSQL数据库,数据集同步
后台架构:搜索引擎,数据仓库,推荐系统
数据采集与监控:浏览器数据采集,服务器业务数据采集,服务器性能数据采集,系统监控,系统报警
安全架构:Web攻击,数据保护
数据中心机房架构:机房,机柜,服务器
参考
《大型网站技术架构》