本文以eBay为例来分析大型网站架构设计,个人觉得其网站架构设计方案还是值得我们去学习的,希望能对我们的项目设计和开发起到参考作用。
eBay 作为全球最大的网络交易市场赢得了市场的尊重,作为技术人员我们对其后台架构如何能够支撑起这个庞然大物都会感兴趣。每天十亿次访问量,超过1亿的注册会员,6.2亿个商品这些天文般的数字意味着它每天承受着巨大的并发访问量,而且eBay上大量页面都不是静态页面。eBay的架构是eBay的工程师和Sun的工程师共同设计完成的。
一、eBay原则
每一层都要支持水平伸缩, 按功能划分,数据层/应用层/搜索/操作的伸缩;
优选异步方式为系统间交互的方式;
减少系统间物理依赖以及提升部署的灵活性;
自动化的错误诊断和通知,业务功能的降级支持。
对应的四点架构模式:
能分则分;
能异步则异步;
能自动化则自动化;
记住所有失败的事。
点评:智能化、智能的推荐,用户请求的智能回答,基于用户数据的收集和分析。
二、大型网站架构
物理分离webserver和数据库
增加页面缓存:squid,前端相对静态的页面缓存技术
增加页面片段缓存 ESI, 让动态页面里相对静态的部分也缓存起来
数据缓存,将重复获取的数据缓存起来
增加Web server
负载均衡, LVS;
保持状态信息的同步,如用户session, 写入数据库, 写入存储, cookie或同步session信息等机制;
如何保持数据缓存信息的同步, 考虑的机制有缓存同步或分布式缓存;
如何让上传文件这些类似的功能继续正常, 考虑的机制有使用共享文件系统或存储。
分库策略, 就是数据库的分割, 分库规则,是否需修改程序。
分表, DAL和分布式缓存,分表规则(动态hash算法, consistent hash算法),是否修改程序,通用的框架以实现分库分表的数据访问, 在ebay的架构中对应的就是DAL(数据库连接的管理, 超时,异常, 数据库 操作的控制, 分库分表规则的封装), 分布式缓存方案。
增加更多的Web server
数据读写分离和廉价存储方案
进入大型分布式应用时代和廉价服务器集群梦想时代。
点评:高性能、稳定的通信框架;业务调整, 系统依赖关系的控制。