eBay是如何管理海量数据的
今天,eBay这家炙手可热的拍卖/购物网站,下大以每周增加10T空间的速度扩充着其存储。与Xerox和Google相仿的是,eBay自身已经成了一种专属词汇,用来表达该公司所从事的事情(今天,eBay这个词代表了拍卖和购物的意思)。即使从流量、受欢迎程度和盈利能力等方面评估,这家互联网站也与Google、Amazon、Yahoo、eHarmoney、Digg.com和社交网站MySpace.com、FaceBook.com不相上下。
作为一家世界上最大的拍卖网站,eBay的一些内部数据已经让人震惊:
l 站点平均每天有超过10亿次的页面浏览;
l 每秒客户通过此站点定购价值大约为1700美元的商品;
l 每天有260亿次的SQL查询;
l 每两分钟就有一个钻石珠宝卖出;
l 每分钟就有一辆车卖出;
l 每一秒钟就有一个发动机零部件卖出;
l 每一刻钟有6亿份清单生成,而且目前已经拥有2亿零4百万注册用户。
此外,尤为惊人的一点是:130万人所有的日常生活消费是在eBay中进行的。
如果这些数字没有给你产生直观的感受,我们可以做一个对比。在1930年代,美国罗斯福时期的两大行政工作机构,民间资源保护队(Civilian Conservation Corps)和民用工程总署(Civil Works Administration),曾雇用了总计650万的工人。eBay现在处理的交易量,大约等于当时这些工人一同完成的劳动量。当然,这其中还包括遍布全球7*24小时的Web页面浏览以及货币交易——中间几乎没有间断(同时代表对650万工人的管理)。经统计,eBay站点的可靠性已经达到每日99.94%,这个数据说明每天大概会有50秒的服务间断。此前曾有人于1999年7月间做过统计,当时站点的平均每天间断时间为43分钟。
eBay如何在技术上取得这样的成功?其研究实验室的杰出工程师Paul StrongStrong介绍了先前从未在媒体上曝光过的eBay存储策略:
l 存储工程师团队使用2petabytes(IP=1,000T)的裸数据存储空间作为日常运行站点存储数据的基本空间,而且现在每周都会以新增加10个Terabytes的存储空间的速度来保证新增交易的需要。使用传统的网络计算系统来搭建这个站点,此系统有大约170台Win2000/Win2003服务器。
l 大约170台Linux(RHES3)服务器。
l 三台Solaris服务器:用来构建和部署eBay.com并移交QA;编译Java和C++代码;完善、优化并压缩XSL、JS和HTML。
l 构建站点耗时:过去是10小时;现在仅用30分钟。
l 在过去的2年半里,共产生过2百万个构建版本。
经过构建的成品应用会被部署到大约15,000个服务器的系统之中。另外,eBay用了很多不同系列的产品来武装其存储系统,这包括Brocade的交换机、IBM的软件架构Tivoli、NetApp的NAS(网络连接存储)硬件以及日立的大型阵列数据系统(系统95%的构成),当然,系统也运行Oracle数据库。
eBay为其大多数的数据库维护了四份备份,其主要数据中心散布在美国本土,在世界各地都有相应代理。
eBay站点的结构如下:
l 高度的分布式。
l 拍卖站点是基于Java构建的,搜索的基础部件是基于C++。
l 有上百位一起工作的开发人员。
为了与业务增长保持同样的步伐,eBay有如下应用:
l 集中式的应用程序日志;它是一个用于记录细致的应用程序信息的可扩展平台。
l 全球一体化的账务:实时整合进一个第三方的账务。
l 企业事务流:让消息队列可靠与高效的统一技术。系统中使用了怀旧式样来提升用户体验。
l 稳定的多点传关架构:支持海量数据的分布式分析,并且保证搜索架构能跟上公司成长的步伐。
当开始处理网络负载有关问题时,Strong说,“世界时区给我们提供了一种天然的“负载平衡器”美国最忙的时候,欧洲(第二大使用eBay的地区)的人们正在沉睡,反之亦然,虽然偶尔也会出现阻塞,但两大洲间的天然分割对我们是有好处的。”