`
阅读更多

引用说明:原文来自于 http://brighter.iteye.com/blog/224637 的再次引用,为了方便本人阅读,文本格式略有调整。


eBay的架构
文/Todd Hoff 译/于晓潮

有谁不想知道eBay是如何开展业务的呢?成为世界上最大的高负荷量的网站之一,这个过程可不容易。创建这样一个庞然大物,需要真正的工程学:在网站的稳定性、运转速度、性能和成本之间达到一个平衡。

你可能无法模仿eBay增容系统的方法,但是其中的问题和可能的解决方案是值得我们学习借鉴的。

平台

○  Java

○  Oracle

○  WebSphere

○  Horizontal Scaling

○  Sharding                                      

○  Mix of Windows and Unix

统计数据

○  每天一般处理260亿个SQL请求,对1亿件供出售的商品进行跟踪记录

○  2.12亿名注册用户,10亿张照片

○  每天10亿次页面访问量,产生1.05亿张列表,2PB的数据。每月30亿应用程序接口呼叫。1999年6月到2006年第三季度间,页面浏览量、邮件的发送量、带宽增长了35倍。

○  99.94%的可用性,通过“每个人都可以使用网站的所有部分”与“在某个地方有些用户无法使用网站的至少一个部分”对比计算得出。

○  数据库虚拟化,涵盖分布在100多个服务器集群中的600种产品实例。

○  15,000个J2EE应用服务器。大概100组的功能(又叫做apps)。“池”的概念:处理所有销售业务的机器。[DSJ1]

架构

○  一切设计都依照“如果负荷增长十几倍会怎么样”来考虑。采取平行性增容而非垂直性增容,即拥有很多平行的盒子。

○  架构被严格分成:数据层、应用层、搜索、运行

○  表示层使用MSXML框架(即使在Java中)

○  oracle数据库,Websphere Java(1.3.1版本)

○  依照主访问路径、以及对一个主键的模数为界限,划分数据库

○  每个数据库至少有三个在线数据库,分布在8个数据中心。

○  一些数据库备份在15分钟、4个小时之后运行

○  数据库依照功能分割为70余项,包括:用户、项目账户、反馈、交易等。

○  不使用存储过程,有一些非常简单的触发机制。  

○  密集使用CPU的任务从数据库层移到应用层。因为应用服务器便宜而数据库则是制约瓶颈,所以参照完整性、连接和分类在应用层完成。

○  没有客户端事务处理和分布式事务处理。

○  J2EE:使用servlets、JDBC、连接池(具有重新写入功能),其它很少使用。

○  应用层中没有状态信息。状态信息存在于cookie或者scratch数据库中。

○  应用服务器之间没有对话——采用严格的架构分层。

○  网站上的一般商品在卖出之前其搜索数据(比如价格)改变5次,因此实时的搜索结果非常重要。

○   Voyager——eBay建立的实时反馈架构。使用基本数据库提供的的可靠的多点映射机制(multicast),来完成节点搜索、内存中的搜索索引、水平分割、N切片、在M个实例中平衡负载、存储请求等功能。

经验总结:
○  减容,而不是扩容

——在每一层上平行增容

——功能分解

○  推荐异步整合

——最小化可用性耦合

——增加增容的选择

○  虚拟组件

——降低物理依存

——提高配置弹性

○  应对故障的设计

——自动的故障检测和通知

——在商务特性中采用“失效保护模式”

○  因为数据库是制约瓶颈,所以将任务从数据库移到应用层。Ebay在这方面做的非常极端。我们看到其它的架构使用缓存和文件系统来解决数据库的瓶颈问题,而Ebay甚至用应用层处理很多传统的数据库操作(如表连接)。

○  按自己的意愿使用和舍弃,不必采用全套框架,只使用对你有用的。eBay没有使用完整的J2EE stack,只是采用servlets、JDBC、连接池等。

○  不要害怕构建满足你的需求并按需求发展的解决方案。每一个现成的解决方案都不可能完全让你高枕无忧,你必须自己走完剩下的路。

○  随着业务的成长,运行控制成为增容的越来越大的一部分。如果运行一个即时使用的系统,你必须考虑如何升级、配置和监视数以千计的机器。

○  架构进化——任何一个成长中的网站面临的主要挑战。在保持现有网站运行的同时,需要有改变、改善和开发新系统的能力。

○  一开始就过于担心可增容性是错误的。因为分析和担心可能永远也不会发生的流量而陷入恐慌是不必要的。

○  完全不考虑可增容性是不对的。事情永远不会做完,系统总是在进化和改变,你需要建立一个有能力应付架构进化的组织。并且一开始就把这些期望和能力融入你的业务中去,不要让人和组织成为你网站瘫痪的原因。不要认为系统一开始就应该是完美的,一个好的系统是在解决真正的问题和担忧中成长起来的,期待改变,适应改变才是正确的态度。

分享到:
评论

相关推荐

    Ebay分布式数据库实现

    本篇文章将详细介绍eBay分布式数据库的架构与分层原理。 #### 二、Data Access Layer (DAL) 概览 Data Access Layer (DAL) 是一种面向对象的抽象层,用于访问和更新分布式持久资源中的数据。所有对持久资源的增删...

    siliconslopes2020-minimalviablearchitecture-200201200415.pdf

    在本篇文档中,Randy Shoup讲解了最小可行架构(Minimal Viable Architecture)的概念,并分享了他在谷歌和eBay的架构演进经验。他强调,架构演化是一个渐进的过程,企业往往会在达到一定规模后转向微服务架构。以下...

    新版Android开发教程.rar

    � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的...

    NoSQL数据库笔谈

    应用篇则分享了一些公司,如eBay、淘宝和Flickr等,在架构设计和运维实践中使用NoSQL数据库的心得与经验。这些经验对于构建可扩展、高性能、高可用性的互联网应用至关重要。 文档还提到了云计算架构以及一些反模式...

    程序员杂志2011年2月份

    例如,文章中提到了淘宝平台主架构师学文初、百度基础架构部工程师刘标志等人,他们的故事激励读者勇于尝试创业,并且提示了创业成功的关键要素:把握新技术,实施创新理念。 第三,在管理理念方面,文章强调了...

    开题报告模板

    本案例中,我们关注的主题是"C2C网上拍卖系统",这是一类允许个人消费者之间进行商品买卖的在线交易平台,类似于eBay或淘宝。在撰写开题报告时,通常需要对相关领域进行深入的文献综述,以便了解当前的研究进展和...

    揭开J2EE集群的面纱

    1999年eBay服务中断22小时的事件就是一个典型的例子,这次中断不仅导致了大约230万次拍卖活动的暂停,还使eBay的股价下降了9.2%。 为了应对这些挑战,J2EE集群作为一种流行的技术被广泛应用,它可以提供高可用性和...

    中小企业参与跨境电商的第三方平台选择问题分析.pdf

    第三方平台指的是提供给卖家和买家交易的网络中介服务,例如eBay、Amazon、Wish等。 描述中所提到的“行业数据”和“数据分析”提示了该文档可能会涉及对跨境电商行业内部数据的研究分析,这可能包括交易量、用户...

    基于matlab语言提取图像PHOG特征的检索方法.pdf

    此外,本文档还提到了亚马逊和eBay等知名电子商务网站,这些网站拥有庞大的商品图像数据库,对图像检索的需求和要求非常高。因此,提出的方法对于这些网站来说具有实际应用价值。 在论文中,还出现了一些与PHOG特征...

    我国小微型农产品跨境电商存在的问题与对策研究.pdf

    6. 跨境电商的运营模式:跨境电商模式正在从C2C、B2C向B2B、M2B、M2C转变,不同电商平台如亚马孙、eBay、全球速卖通等占有重要地位,而一些新兴市场的本土电商平台也逐渐吸引中国商家入驻。 7. 政策支持与市场潜力...

Global site tag (gtag.js) - Google Analytics