大型网站架构技术
大型网站架构技术
大型网站特点
- 用户多,分布广泛
- 大流量、高并发
- 易受攻击
- 功能多、变更频繁
- 海量数据
- 从小到大、逐渐发展
架构目标
高性能:提供快速访问体验
高可用:网站服务一直正常访问
可伸缩:通过硬件增加/减少,提高/降低处理能力
可扩展:系统间耦合低,方便通过新增/移除方式,增加/减少新的功能模块
安全性:网站安全访问和数据加密,安全存储等策略
敏捷性:随需应变,快速相应
架构模式
- 分层:
- 分割:按业务/模块/功能特点进行划分
- 集群:负载均衡
- 缓存:将静态资源放在离用户最近的地方,业务数据放高性能数据库中
- 异步:
- 冗余:增加副本。提高可用性和性能(灾备
- 安全:敏感数据加密传输,脱敏、风控、反欺诈等
- 自动:将重复的、不需要人工参与的,通过工具自动完成
- 敏捷:
高性能架构
- 以用户为中心,提供快速的访问体验。主要体现在:响应快
- 以系统为中心,主要体现在:并发能力高性能稳定。
- 前端优化: 减少HTTP请求次数,使用浏览器缓存,JS压缩,CDN加速
- 应用服务层优化:使用多级缓存,异步,集群等
- 代码优化:合理的架构,多线程,资源复用(对象池),代码逻辑(循环查询数据库问题),cache等
- 存储优化:缓存。固态,读写分离,分布式存储(HDFS), NoSql等
高可用架构
大型网站在任何时候都应该可以正常访问,但是因为网站大型网站的复杂性,要保证高可用是非常困难的。行内一般用几个9表示可用性指标,比如99.99%
即不通用时间:0.01% * 365 *24 * 60 = 52.56 分钟 / 年
- 应用层:负载均衡、分级管理、快速失败、服务降级
- 数据库:主从复制、冷热备份、故障转移
- 中间件:集群部署、分片交叉备份等
- 外部环境:ups(不间断电源)、同城灾备、异地灾备
大型系统架构演进过程
- 使用分布式文件系统
- 使用NoSql和搜索引擎
- 大数据(数据仓库
- ElasticSearch、
- mangoDB
- 将应用服务器进行业务拆分
- 消息队列
- 解耦、削峰、异步
- 多中心
- 高可用
评估系统承载能力
- 业务预估
评估维度
预计三年注册用户数:500万
注册用户数、日均UA、日均PV
峰值预估:平常量的2-3倍
业务评估
- 每天的UA(二八原则): 500万 * 0.2 = 100万
- PV量: 100万 * 30 = 3000 万 (按照每日每个用户点击浏览30次
- 一天集中访问量(二八原则) : 24*0.2=4.8小时 3000万*0.8 = 2400 万
- 每分钟的并发:4.8*60=288分钟, 2400万/288 = 8.33万
- 每秒并发量:8.33万/60 = 1388
- 峰值每秒并发数(三倍):1388*3 = 4164
系统要求
核心接口在并发用户数100(在线用户数的万分之一):
TPS:200/s ,QPS: 5000/s
- TPS :Transactions Per Second(每秒传输的事务处理个数),即服务器每秒处理的事务数
- QPS:Queries-per-second(每秒查询数
步骤
准备压测环境(和线上配置保持一致
通过jmeter压测工具进行测试
测试程度(一般是机器CPU到80%
结果
Samples: 采样数/请求数
Average:平均响应时间,单位毫秒
90%Line:90%的请求响应时间。单位毫秒
Min,Maximum:最小、大响应时间。单位毫秒
Error%: 响应错误率
Throughput: 每秒吞吐量
评估改进
优化系统,以提高更多的负载能力
计算出后台至少需要多少台服务器才能满足要求