刚读完这本书,是阿里前技术专家的著作。
写得还好,比较通俗易懂。
第一篇讲述大型网站架构系统,初始阶段的网站架构,使用缓存改善网站性能,使用应用服务器集群改善网站的并发处理能力,数据库读写分离,反向代理和CDN网站响应,使用分布式文件系统和分布式数据库系统,使用NoSQL和搜索引擎,业务拆分,分布式服务。
另一方面中小网站使用LAMP技术(Linux+Apache+MySQL+PHP)开发自己的网站。
网站架构模式
①分层(将网站软件系统分为应用层、服务层、数据层,在开发过程中,严格遵循分层架构的约束,禁止跨层次的调用(应用层直接调用数据层)及逆向调用(数据层调用服务层,或服务层调用应用层))。
②分割③分布(分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算)④集群
⑤缓存(CDN,反向代理,本地缓存,分布式缓存)⑥异步⑦冗余⑧自动化⑨安全
大型网站核心架构要素
①性能②可用性③伸缩性④扩展性⑤安全性
性能测试指标
①响应时间②并发数③吞吐量④性能计数器
性能测试方法
①性能测试②负载测试③压力测试④稳定性测试
性能优化
根据网站分成架构,可分为Web前端性能优化,应用服务器性能优化,存储服务器性能优化
Web前端性能优化:主要优化手段有优化浏览器访问、使用反向代理、CDN
浏览器访问优化:
1、减少http请求
2、使用浏览器缓存
3、启用压缩
4、CSS放在页面最上面,JavaScript放在页面最下面
5、减少Cookie传输
CDN加速:
CDN能够缓存的一般是静态资源,如图片,文件,CSS,Script脚本,静态网页
反向代理
传统代理服务器位于浏览器一侧,代理浏览器将HTTP请求发送到互联网上。而反向代理服务器位于网站机房一侧。
应用服务器性能
分布式缓存
合理使用缓存
没有热点的访问
数据不一致与脏读
缓存可用性
缓存预热
缓存穿透
分布式缓存架构
Memcached曾一度是网站分布式缓存的代名词
使用集群
代码优化
多线程
资源复用
数据结构
垃圾回收
存储性能优化
机械硬盘VS固态硬盘
B+树 vs LSM树
RAID vs HDFS
网站性能优化技术网站性能遇到问题时的解决方案,而网站的性能问题很多是在用户高并发访问时产生的,所以网站性能优化的主要工作是改善高并发用户访问情况下的网站响应速度。本章开篇说,
网站可用性度量
网站可用性考核
故障分=故障时间(分钟)*故障权重
高可用的网站架构
通常企业级应用系统为提高系统可用性,会采用昂贵的软硬件设备,如IBM的小型机乃至中型机及专有操作系统,Oracle数据库,EMC存储设备等。互联网公司更多地采用PC级服务器,开源数据库和操作系统。这些廉价的设备在节约成本的同时也降低了可用性,特别服务器硬件设备。