可伸缩性最佳实践:来自eBay的经验作者RandyShoup译者郭晓刚发布于2008年6月12日下午7时5分社区架构主题设计,性能和可伸缩性标签eBay分享|在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力
我们所做的每一项架构及设计决策,身前身后都能看到它的踪影
当我们面对的是全世界数以亿计的用户,每天的页面浏览量超过10亿,系统中的数据量要用皮字节(1015或250)来计算——可伸缩性是生死交关的问题
相关厂商内容百度技术沙龙第十期报名:WebApp开发与应用暨2011年技术趋势展望QCon全球企业开发大会(北京站),1月31日前7折抢票火热进行中
AdobeFlashBuilder4简体中文正式版高速下载在一个可伸缩的架构中,资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量、数据量等测量
如果说性能衡量的是每一工作单元所需的资源消耗,可伸缩性则是衡量当工作单元的数量或尺寸增加时,资源消耗的变化情况
换句话说,可伸缩性是整个价格-性能曲线的形状,而不是曲线上某一点的取值
可伸缩性有很多侧面——事务的方面、运营的方面、还有开发的方面
我们在改善一个Web系统的事务吞吐量的过程中学到了很多经验,本文总结了其中若干关键的最佳实践
可能很多最佳实践你会觉得似曾相识,也可能有素未谋面的
这些都是开发和运营eBay网站的众人的集体经验结晶
最佳实践#1:按功能分割相关的功能部分应该合在一起,不相关的功能部分应该分割开来——不管你把它叫做SOA、功能分解还是工程秘诀
而且,不相关的功能之间耦合程度越松散,就越能灵活地独立伸缩其中的一部分
在编码层次,我们无时不刻都在运用这条原则
JAR文件、包、Bundle等等,都是用来隔离和抽象功能的机制
在应用层次,eBay将不同的功能划分成几个应用程序池
销售功能由一组应用服务器运行,投标功能由另一组负责,搜索又是另外一组服务器