大众点评网的Web开发之路
大众点评网资深系统架构师:王宏
1,动静分离:
了解动态页面请求和静态资源请求的不同特征
时间线Timeline
使用新的域名,指向静态资源
新建一个站点,处理静态资源
成本低,收益高
无缝衔接CDN
High Performance Web Sites
Even Faster Web Sites
YSlow优化
2,南北互通:
CDN:
静态CDN对于静态资源的优化非常有效
静态CDN
路径型版本控制,不对静态资源做URL重写 http://il.dpfile.com/s/css/g.base.min.
v44.css【重写到不带版本号的文件】
参数型版本控制http://a.tbcdn.cn/??p/global/1.0/global-min.css?
t=2011091520110301.css
不要把鸡蛋放到一个篮子里,博弈
机房选择:
网络质量,让用户帮组选择机房,使用“标准”图片进行监控对比
软性指标:支持响应、基本服务
硬性指标:防火、防盗、防断电成本低,收益高
var idcUrl = 'http://nanjing.dianping.com/test.jpg?' + Math.random();
document.getElementById('top').innerHTML = '<img src="' + idcUrl + '" onload="idc(this.src, ' + (new Date().getTime()) + ')" />';
function idc(url, start){var loadTime = new Date().getTime() - start;
// ga分析网络访问区域
_gaq.push(['_trackEvent', 'IDCLoadTime', url, '', loadTime]);}
持续监控:
Google Analytics / 百度统计
Gomez / 基调网络
DNSPod / 监控宝
Cacti / Ngios(内部)
3,分布式文件系统(图片等)
海量小文件,缓存命中率低
单机大磁盘,IO负载增高,单点故障
MogileFS、FastDFS、Taobao TFS、MongoDB GridFS
4,负载均衡(
混合使用)
DNS轮询:免费,无成本,无法进行健康检查,策略调整麻烦
Software:免费,成本低,有一定瓶颈,Nginx / LVS
Hardware:价格贵,可控型和稳定性很好
都需要注意Session保持的问题,最好是无Session化
5,架构升级
架构层次清晰化
Web Server
App Server
Cache
Database
架构思想的上下贯彻
全局缓存
数据冗余、No SQL Join
6,移动互联网
连接优化:减少连接,优化请求
数据序列化:抛弃JSON,使用Google Protocol Buffers
Native vs HTML5:合理利用 Native App 和 HTML 5 优化业务;Quality & Extendability