案例2:维基百科高性能架构演化设计
www.wikipedia.org
相比同流量级别有百度、谷歌,背后市值数百亿美金、员工上万、服务器无数,服务器数百台,维护人员十余名。
网站建立在LAMP上。
架构组成部分:
GeoDNS:可将域名解析到离用户最近的服务器
LVS: 基于Linux的开源负载均衡服务器
Squid: 基于Linux的开源反向代理服务器
Lighttpd: 开源的应用服务器(更轻量、更快速,许多网站使用它作为图片服务器)
PHP: Web应用程序开发语言
Memcached: 开源分布式缓存系统
Lucene:开源全文搜索引擎
MySQL:开源关系数据库管理系统
性能优化策略:
前端性能优化:
(网站前端,一般包括DNS服务、CDN服务、反向代理服务、静态资源服务等)
CDN服务(缓存热点词条内容页面、部署在离客户浏览器最近的地方)
-->LVS(负载均衡)-->反向代理服务器Squid集群(核心,缓存热点词条)
-->LVS(负载均衡)-->Apache应用服务器集群
CDN缓存准则:
1、内容页面不包括动态信息
2、内容页面有唯一REST风格URL
3、HTML响应头写入缓存控制信息
服务器性能优化:
PHP服务器(硬件改善)
APC(PHP字节码缓存模块,加速代码执行减少资源消耗)
Imagemagick(图片处理转化)
Tex(进行文本格式化,特别是将科学公式内容转换成图片格式)
替换PHP字符串查询函数strtr(),使用更优化的算法重构
后端性能优化:
后端服务(包括缓存、存储、数据库)
主要手段:使用缓存
缓存使用策略:
1、热点特别集中的数据直接缓存到应用服务器的本地内存
2、缓存数据的内容尽量使应用服务器可以直接使用的格式,如HTML
3、使用缓存服务器存储session对象
4、memcache持久化连接
MySQL优化:
1、使用较大的服务器内存
2、使用RAID0磁盘阵列加速磁盘访问(降低数据库持久可靠性,弥补手段,主从复制,数据库异步备份等)
3、数据库事务一致性设置在较低水平,加快宕机恢复速度
4、如果master数据库宕机,立即将应用切到salve数据库,同时关闭数据库写服务。
(业务后退一步,技术前进一大步)