大型网站架构
高性能
网站性能测试:
指标:
1、响应时间
2、并发数
3、吞吐量
4、性能计数器
测试方法:
性能测试(可接收范围内)
负载测试(临界值,继续则性能下降)
压力测试(最大压力承受能力,继续则系统崩溃)
稳定性测试(运行长时间,检测稳定性)
性能报告:
并发数
响应时间
TPS
错误率
Load
内存
备注
优化策略:
性能分析(日志-响应时间-->监控数据-影响性能主要因素-内存、磁盘、网络、CPU、代码、架构、系统资源)
性能优化(如下)
web前端优化
浏览器优化
1、减少http请求(合并CSS、JS、图片)
2、使用浏览器缓存(设置http头中的Cache-Control、Expires)
3、启用压缩(html、css、js启动Gzip压缩)
4、css最上面,js最下面
5、减少cookie传输(静态资源独立域名访问)
CDN加速(缓存静态资源)
反向代理(缓存静态资源、负载均衡)
应用服务器优化
分布式缓存(memcached、redis)
异步(消息队列)
集群(负载均衡)
代码优化(多线程、资源复用<单例、对象池>、数据结构、垃圾回收<新生代、老年代的大小设置>)
存储优化
固态硬盘、LSM树(NoSql)、HDFS
高可用
度量=(1-网站不可用时间/年度总时间)*100%
考核=故障时间(分钟)*故障权重
高可用的应用:
1、通过负载均衡进行无状态服务的失效转移。
2、应用服务器集群的Session管理
高可用的服务:
1、分级管理(核心使用好的硬件设备、隔离避免故障连锁)
2、超时设置(一旦超时,抛异常,释放资源)
3、异步调用(避免一个服务失败导致整个应用请求失败)
4、服务降级(关闭部分不重要功能)
5、冥等性设计(服务重复调用)
高可用的数据:
1、CPA原理(数据可用性、数据一致性、分区耐受性,无法同时满足)
2、数据备份
3、失效转移
软件质量保证:
1、网站发布(运行中发布)
2、自动化测试
3、预发布验证(预发布服务器,与正式不同的是没有配在负载均衡服务器上,外部用户无法访问)
4、代码控制(分支开发,主干发布)
5、自动化发布(周四发布日)
6、灰度发布(部分新版,部分老版)
网站运行监控
监控数据采集
1、用户行为日志收集
2、服务器性能监控
3、运行数据报告
监控管理
系统报警
失效转移
自动降级