`
wildwind
  • 浏览: 100484 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论
阅读更多

 

eBay是目前世界上最大的电子商务网站(Am I right?),目前已有2亿多注册用户,每天PV超过10亿,执行260多亿次SQL操作,在这么高的负载下仍然能提供非常稳定的服务(可用性达 99.94%),其架构设计一定有很多过人之外。Bay的技术人员Dan Pritchett和Randy Shoup前段时间在SD Forum上介绍了eBay的架构设计,现简述如下。

 

除最基本的Web服务器和数据库服务器之外,eBay的网站完全使用自主开发的软件,开发人员达几百人。从1995年eBay成立以来, eBay网站的架构经历了多次演变。最初的V1.0版本开发只用了一个周末,使用Perl,应用各层都部署在一台机器上,数据存储采用文件系统+GDBM (动态哈希表)相结合的方式。1.0用了两年,到了1997年系统中的条件达到5万时就顶不住了,于是开发的2.0,在逻辑上是三层架构,物理上是二层, 应用层使用C++编写的内嵌于ISS的dll实现,数据库也独立出来使用Oracle。各系统都只使用一台服务器(Web服务器是有多台,但是不同的 Web服务器提供不同的服务)。再过了两年,99年升级到2.1,其中部分前台服务器使用集群,并将搜索功能独立出来,同时升级了数据库服务器的硬件。好 景不长,一年还没用下来又不行了,于是升级到2.3,所有前台服务器都使用了集群,数据库加了个Standby。结果发现还是不行,二个月之后立马升级到 2.4,数据库按业务划分了一下,使用多台服务器了(终于跨出了关键性的一步啊)。接下来的V2.5按数据库划分得更细了。02年之后又升级到3.0,使 用Java技术重写整个应用。

 

eBay在架构设计上主要关心三个可伸缩性:数据库存储可伸缩性、应用层可伸缩性和搜索服务可伸缩性,现一一道来。

数据库存储的可伸缩性实现的第一招是根据功能将数据库服务器加以分组,分为用户、条目、账号、反馈、事务等70多个类别。组内可伸缩性实现 则有两种方式:master/slave或数据分区,数据分区有使用取模实现,也有使用映射数据库实现。为减少数据库的负载,数据库层不包含业务逻辑,没 有存储过程,参照完全性检查、联接、排序等占CPU的工作移到应用中去作。同时很少使用事务,绝大部分操作都用auto commit模式。为减少对事务的依赖,应用程序需要非常仔细的安排数据库操作的顺序,对于部分不可避免的数据不一致则使用异步的故障处理脚本来处理。要求不使用事务增加了开发的难度,但也避免了数据库死锁和提高的数据库的并发度。

 

应用层主要涉及负载的分布和依赖关系最小化两个方面。eBay不使用大部分的J2EE特性,只使用servlet和一个定制的连接池,应 用层完全不维护状态信息(session使用cookie或scratch数据库维护),并尽可能的对常用的metadata等信息做了缓存。应用程序严 格的分为呈现层、业务层和集成层。其中集成层即数据访问层(Data Access Layer),实际上是eBay自己实现的一个Java ORM组件,负责所有CRUD操作,并支持动态数据路由服务(即逻辑数据库服务器->物理数据库服务器动态映射关系管理)。

 

为减少应用之间的依赖关系,应用代码按功能区划分为买出、购买等多个独立模块,共享的模块如用户认证、个性化等组织成Domain,应用 只依赖于Domain,不依赖于其它应用,Domain中各模块之间也无相关依赖关系。应用服务器和数据库服务器也根据业务类型划分为多个集群,不同集群 的开发、部署可并行进行。

 

eBay的全文检索系统原来使用的是第三方开发的一个系统,但到2002年就遇到了性能瓶颈,当时更新一次索引需要9个小时,使用了最高 档的设备也满足不了需求。eBay对全文检索的要求很高,产品列表、竞标等信息要求实时更新、很多查询要求返回所有结果、存储有按关键字、分类和结构化属 性组织等多种形式。由于没有现成产品能满足所有需求,eBay开发了自己的全文检索系统,其中有很多创新性的功能。实时供给器平台负责将更新从主数据库可 靠广播到多个检索节点,索引支持实时更新,支持内存索引。索引系统是高度分布式的,索引机有多组副本,一组又包含多台机器。缓存技术也被应用于搜索系统 中,主要是缓存常用搜索或非常耗资源的搜索的结果。

 

由此可见即使强大如eBay,最初的系统都是很菜的,后来一步步走向分布式才解决了一个又一个瓶颈,可见分布式是大势所趋。也可以看到功能 分解或面向对象中的CRC原则在网站架构设计中的重要性,若是功能划分不清晰,业务单元之间的依赖关系过于复杂,要设计一个好的架构是难上加难。详细的ppt在此

转自: http://wangyuanzju.blog.163.com/blog/static/130292006112222413257/

分享到:
评论

相关推荐

    eBay 入门 eBay 入门eBay 入门

    根据提供的文件信息,我们可以从中提炼出与eBay入门相关的几个重要知识点: ### 1. eBay基础知识 - **定义**:eBay是一个全球知名的在线购物网站,用户可以在上面进行商品的买卖活动。 - **发展历程**:自1995年...

    eBay帮助文档(eBay_SDK_v581.0 for_Java ebay_api)

    《eBay SDK v581.0 for Java:探索eBay API的核心技术与应用》 eBay SDK(Software Development Kit)v581.0 for Java是针对Java开发者设计的一套工具包,它允许开发人员能够轻松地与eBay平台进行交互,实现各种...

    ebay eBay简化收费结构

    eBay作为全球知名的在线拍卖与购物网站,自成立以来便在全球范围内拥有庞大的用户基础和广泛的市场影响力。eBay的收费结构一直是其商业模式的重要组成部分,它直接关系到卖家的成本和收益,同时也影响着买家的购物...

    Ebay 克隆源码 php版本

    这个源码可以用于创建类似eBay的在线市场,允许用户进行商品拍卖、购买和销售。 【描述】"Ebay,克隆源码,测试可以用,php代码写"说明了这个源码已经过测试,可正常运行。使用PHP编写意味着它依赖于PHP语言,这是一...

    eBAY教程eBAY教程

    《eBAY教程详解》 eBAY,作为全球最大的在线拍卖及购物网站之一,吸引了无数卖家和买家参与其中。本教程将全方位地解析eBAY平台的操作与策略,帮助您从新手快速成长为精通eBAY交易的专业人士。 一、eBAY注册与认证...

    Ebay的架构发展

    Ebay作为全球知名的电子商务平台,其架构的演化体现了互联网发展的历程,同时也代表了在巨大流量和高并发环境下的架构设计和技术选型的最佳实践。了解Ebay的架构发展历程,对于IT行业人员理解大型分布式系统的设计、...

    eBay架构

    **eBay架构** eBay是全球知名的在线拍卖和购物网站,其背后的技术架构支撑着海量的商品交易和用户交互。为了处理如此大规模的业务,eBay的架构必须具备高可用性、可扩展性和高性能等特性。以下是对eBay架构的详细...

    ebay ppt.rar

    【标题】"eBay平台分析与运营策略" 在IT行业中,eBay是一个全球知名的电子商务平台,它为全球卖家和买家提供了在线交易的便利。这份名为"eBay ppt.rar"的压缩包文件,很可能是关于eBay平台的业务分析、运营策略或是...

    剪断它! eBay按钮「Snip it! button for eBay」-crx插件

    让您立即在Snip.pl上安排您的eBay snipes 一般来说,狙击在最后几秒钟就进行在线拍卖。当然,如果你有极好的互联网连接,精确的手表,钢铁般的神经和空闲时间的多余,你可以手动完成 Snip.pl是一个在线拍卖狙击手,...

    eBay 成功 成功 成功

    根据提供的文件信息,我们可以总结出一系列与eBay成功策略相关的知识点。这些知识点主要围绕着如何在eBay上取得成功,包括识别适合在eBay销售的商品、拓展全球市场、提高生产力、增加利润以及如何将eBay作为全职业务...

    ebay架构原则,架构演变历史及ebay的自动化

    标题与描述均提到了“ebay架构原则,架构演变历史及ebay的自动化”,这实际上指代了eBay在IT架构设计、发展以及自动化技术应用上的深入探索与实践。以下是对这一主题的深入分析,旨在解析eBay如何通过其独特的架构...

    接入ebay支付的SDK

    接入eBay支付的SDK是开发电商应用,尤其是与eBay平台进行深度整合的重要步骤。这个SDK包含了一系列核心工具,使得开发者能够轻松地在自己的应用程序中集成eBay的支付功能。以下将详细介绍这些核心组件和相关知识点。...

    eBay小爬虫

    【标题】"eBay小爬虫"是一款专为ebay平台设计的数据抓取工具,它在2007年4月以1.0版本的形式首次亮相。这款软件的主要功能是帮助用户快速、简便地获取其在ebay上的店铺商品信息。 【描述】描述中提到,"eBay小爬虫...

    Ebay API SDK 747 完整包

    **Ebay API SDK 747 完整包** Ebay API SDK 747 是一个专门为开发者设计的工具包,用于与eBay电子商务平台进行集成。这个版本的SDK提供了全面的功能,允许开发者通过编程方式访问eBay的各种服务,如商品上架、交易...

    Ebay架构特点(HPTS 2009)

    Ebay的架构基于分布式计算,将复杂的问题拆分成多个独立的服务,每个服务运行在单独的服务器上。这种设计允许Ebay横向扩展,通过增加更多的服务器来应对流量增长,而不是依赖单个强大的机器。 二、服务化 Ebay采用...

    ebayAPI 

    eBay API/SDK Tutorial for Java 本 tutorial旨在展示使用 eBay API/SDK 的基本步骤,旨在帮助开发者快速上手使用 eBay API/SDK。为了完成本 tutorial,需要具备以下几个条件: 1. eBay Trading SDK for Java 2. ...

    Laravel开发-ebay-legacy

    本文将深入探讨“Laravel开发-ebay-legacy”项目,这是一个专门为与eBay交易平台进行API交互而设计的软件层。 首先,我们要明白“legacy”一词在此上下文中的含义。在技术领域,“legacy”通常指的是旧版或过时的...

    Python爬虫抓取Ebay页面

    ### Python爬虫抓取Ebay页面 #### 概述 本篇内容主要介绍如何使用Python编写网络爬虫来抓取Ebay网站上的商品信息。在实际应用中,爬虫技术被广泛应用于数据挖掘、信息检索等领域,对于电商网站来说更是如此。通过...

    Ebay API技术开发白皮书

    ### Ebay API技术开发白皮书知识点详解 #### 一、简介 本白皮书主要针对Ebay API的应用与开发,提供了详细的指导与建议。对于希望通过Ebay API进行应用开发的技术人员来说,这份文档非常有价值。 #### 二、API概述...

Global site tag (gtag.js) - Google Analytics