先介绍一下BlueDavy在其“大型网站架构演变和知识体系”,很有意义。
文章链接: http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html
要点如下:
架构演变第一步:物理分离webserver和数据库
架构演变第二步:增加页面缓存
架构演变第三步:增加页面片段缓存
架构演变第四步:数据缓存
架构演变第五步: 增加webserver
架构演变第六步:分库
架构演变第七步:分表、DAL和分布式缓存
架构演变第八步:增加更多的webserver
架构演变第九步:数据读写分离和廉价存储方案
架构演变第十步:进入大型分布式应用时代和廉价服务器群梦想时代
外贸B2C网站的访问量,可以参照下面的数据:
上图引用了四家比较大的外贸电商网站的浏量数据,虽然Y轴没有坐标,但根据不是非常精确的估算,流量分别如下:
Dealextreme 50~100万/日
LightintheBox 50~100万/日
ChinaVasion 5~10万/日
DinoDirect 10~15万/日
这样的流量,和淘宝、京东、一号店这样的国内巨头还是相差很远。
但优良的网站架构同样可以对外贸B2C站点起到加快用户访问速度,降低负荷的作用。所以我们需要因地制宜的选择适合的网站架构。
大多数外贸B2C网站,访问量相对上面四个网站不会更大,只会更小。我们应该采用哪个级别的网站架构,又有效又省钱呢?BlueDavy在博客中提到了10个层次的架构,从低到高。我觉得“第五步”是适合的。说它适合,是因为不需要做伤筋动骨的改动,不需要占用太多的开发资源。架构示意图如下:
(上述图片来自BlueDavy的文章)
前段代理缓存:可以用基于squid的反向代理加速实现,开源的方案很容易找。也有收费解决方案,可供购买。
页面片段缓存:举个例子,buyonme网站的主题区,会显示超过28幅产品图片和价格、评论数量,涉及很多SQL查询,速度比较慢。这部分内容大约10分钟变动一次。优化思路是通过程序,每10分钟将片段写入某个静态文件中,比如cache_page.htm ,同时在内存中载入。当时加载首页的时候,就自动从内存中读取,加快速度。10分钟后,内存数据失效,就会再从cache_page.htm中读取数据。这部分会涉及一定程序工作量。如果需要做片段缓存的页面数量较多,工作量随之增大。
数据缓存:通过query cache来实现,也会牵涉到一部分工作量。如果是基于zen-cart的系统,有类似插件可以应用。
增加webserver:通过dns轮巡达成负载均衡。通过上述改造,网站符合将有效降低。
如过后端性能还上不去,那就需要考虑分数据库,数据库读写分离或是更进一步的改造了。但感觉,对于访问量10万左右的外贸电子商务网站,上述解决方法已经足够。
其实我们在讨论优化系统架构的时候,经常忽略一个更简单的解决方法,那就是购买更猛的服务器。外贸电商网站,访问量再牛也不会上到天上,如果服务器足够强劲的话,什么负载均衡、缓存、分离都是浮云。而现如今CPU升级的速度足以赶上网站用户增加的速度。
作者: 谭砚耘@用户体验与可用性设计-科研笔记
版权属于: 谭砚耘 (TOTHETOP至尚国际 )
版权所有。转载时必须以链接形式注明作者和原始出处
如果你希望与作者交流,请发送邮件到 tanyanyun/at/163.com 别忘了修改小老鼠