第四章 瞬时响应:网站的高性能架构
网站性能是客观指标,也是主观感受;网站性能测试
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量指标;
-
不同视角下的网站性能:用户视角(优化手段:优化页面HTML样式、利用浏览器端的并发和异步特性、调整浏览器的缓存策略、使用CND服务、反向代理等);开发人员(关注响应延迟、系统吞吐量、并发处理能力、系统稳定性;优化手段:使用缓存加速数据读取、使用集群提高系统吞吐能力、使用异步消息加快请求响应以及削峰、代码优化);运维人员(关注基础设施性能和资源利用率,如网络运营商的带宽能力、服务器硬件配置、数据中心网络架构、服务器和网络带宽的资源利用率等,优化手段:建设优化骨干网、使用高性价比定制服务器、使用虚拟化技术优化资源利用率等)
-
性能测试指标:开发人员的视角:响应时间(重复请求取均值)、并发数(系统能够同时处理的请求的数量)、吞吐量(单位时间内系统处理的请求数量;TPS:每秒事务数;HPS:每秒HTTP请求数;QPS:每秒查询数)、性能计数器(指标:System Load、对象与线程数、内存使用、CPU使用、磁盘与网络IO等)
-
性能测试方法:性能测试、负载测试、压力测试、稳定性测试
-
性能测试报告
-
性能优化策略:性能分析进而性能优化
-
浏览器访问优化:减少HTTP请求(合并CSS,合并JS、合并图片);使用浏览器缓存(将CSS、JS、图标等静态文件缓存在浏览器中。更新静态资源时,采用批量更新的方法);启用压缩(在服务器端对文件进行压缩,在浏览器端对文件解压缩);CSS放在页面最上面,JS放在页面最下面;减少Cookie传输;
-
CDN加速,CDN可以最短路径返回响应;缓存静态资源;
-
反向代理
-
分布式缓存
-
异步操作
-
使用集群
-
代码优化
-
机械硬盘vs.固态硬盘,机械硬盘快速顺序读写、慢速随机读写;连续访问(数据存储在连续的磁盘空间上),随机访问(数据存储在不连续的磁盘空间)
-
b+树vs.LSM树,为了改善数据访问特性,文件系统或者数据库系统通常会对数据排序后再存储,加快数据检索速度,
-
RAIDvs.HDFS
想要解决高并发的问题,肯定会导致低并发的时候有一定性能的影响。用户体验的快或是慢,可以通过技术手段改善,也可以通过优化交互体验改善。
第五章 万无一失:网站的高可用架构
一、网站可用性的度量与考核-
网站可用性度量
-
网站可用性考核
(1)高可用的应用
-
通过负载均衡进行无状态服务的失效转移:不能管理好session
-
应用服务器集群的Session管理:session服务器。分为无状态的应用服务器和有状态的Session服务器
(3)高可用的数据
-
CAP原理
-
数据备份
-
失效转移
(4)高可用网站的软件质量保证
-
网站发布
-
自动化测试
-
预发布验证
-
代码控制
-
自动化发布
-
灰度发布
(5)网站运行监控
-
监控数据采集
-
监控管理
第六章 永无止境:网站的伸缩性架构
网站架构的伸缩性设计
-
不同功能进行物理分离实现伸缩:比如流程上的不同部分,数据库、缓存、基础技术等
-
单一功能通过集群规模实现伸缩
应用服务器集群的伸缩性设计
-
HTTP重定向负载均衡:优点是比较简单。缺点是浏览器需要两次请求服务器才能完成一次访问,性能较差
-
DNS域名解析负载均衡:大型网站总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段。
-
反向代理负载均衡
-
IP负载均衡
-
数据链路层负载均衡
-
负载均衡算法:轮询,加权轮询,随机,最少连接,源地址散列。
分布式缓存集群的伸缩性设计
-
Memcached分布式缓存集群的访问模型
-
Memcached分布式缓存集群的伸缩性挑战
-
分布式缓存的一致性Hash算法
.数据存储服务器集群的伸缩性设计
-
关系数据库集群的伸缩性设计
-
NoSQL数据库的伸缩性设计:HBase为可伸缩海量数据储存而设计,实现面向在线业务的实时数据访问延迟。