`

eBay Architecture

阅读更多

eBay Architecture

Update 2: EBay's Randy Shoup spills the secrets of how to service hundreds of millions of users and over two billion page views a day in Scalability Best Practices: Lessons from eBay on InfoQ. The practices: Partition by Function, Split Horizontally, Avoid Distributed Transactions, Decouple Functions Asynchronously, Move Processing To Asynchronous Flows, Virtualize At All Levels, Cache Appropriately .
Update: eBay Serves 5 Billion API Calls Each Month . Aren't we seeing more and more traffic driven by mashups composed on top of open APIs? APIs are no longer a bolt on, they are your application. Architecturally that argues for implementing your own application around the same APIs developers and users employ.

Who hasn't wondered how eBay does their business? As one of the largest most loaded websites in the world, it can't be easy. And the subtitle of the presentation hints at how creating such a monster system requires true engineering: Striking a balance between site stability, feature velocity, performance, and cost.

You may not be able to emulate how eBay scales their system, but the issues and possible solutions are worth learning from.

Site: http://ebay.com

Information Sources

  • The eBay Architecture - Striking a balance between site stability, feature velocity, performance, and cost.
  • Podcast: eBay’s Transactions on a Massive Scale
  • Dan Pritchett on Architecture at eBay interview by InfoQ

    Platform

  • Java
  • Oracle
  • WebSphere, servlets
  • Horizontal Scaling
  • Sharding
  • Mix of Windows and Unix

    What's Inside?

    This information was adapted from Johannes Ernst's Blog

    The Stats

  • On an average day, it runs through 26 billion SQL queries and keeps tabs on 100 million items available for purchase.
  • 212 million registered users, 1 billion photos
  • 1 billion page views a day, 105 million listings, 2 petabytes of data, 3 billion API calls a month
  • Something like a factor of 35 in page views, e-mails sent, bandwidth from June 1999 to Q3/2006.
  • 99.94% availability, measured as "all parts of site functional to everybody" vs. at least one part of a site not functional to some users somewhere
  • The database is virtualized and spans 600 production instances residing in more than 100 server clusters.
  • 15,000 application servers, all J2EE. About 100 groups of functionality aka "apps". Notion of a "pool": "all the machines that deal with selling"...

    The Architecture

  • Everything is planned with the question "what if load increases by 10x". Scaling only horizontal, not vertical: many parallel boxes.
  • Architectures is strictly divided into layers: data tier, application tier, search, operations,
  • Leverages MSXML framework for presentation layer (even in Java)
  • Oracle databases, WebSphere Java (still 1.3.1)
  • Split databases by primary access path, modulo on a key.
  • Every database has at least 3 on-line databases. Distributed over 8 data centers
  • Some database copies run 15 min behind, 4 hours behind
  • Databases are segmented by function: user, item account, feedback, transaction, over 70 in all.
  • No stored procedures are used. There are some very simple triggers.
  • Move cpu-intensive work moved out of the database layer to applications applications layer: referential integrity, joins, sorting done in the application layer! Reasoning: app servers are cheap, databases are the bottleneck.
  • No client-side transactions. no distributed transactions
  • J2EE: use servlets, JDBC, connection pools (with rewrite). Not much else.
  • No state information in application tier. Transient state maintained in cookie or scratch database.
  • App servers do not talk to each other -- strict layering of architecture
  • Search, in 2002: 9 hours to update the index running on largest Sun box available -- not keeping up.
  • Average item on site changes its search data 5 times before it is sold (e.g. price), so real-time search results are extremely important.
  • "Voyager": real-time feeder infrastructure built by eBay.. Uses reliable multicast from primary database to search nodes, in-memory search index, horizontal segmentation, N slices, load-balances over M instances, cache queries.

    Lessons Learned

  • Scale Out, Not Up
    – Horizontal scaling at every tier.
    – Functional decomposition.
  • Prefer Asynchronous Integration
    – Minimize availability coupling.
    – Improve scaling options.
  • Virtualize Components
    – Reduce physical dependencies.
    – Improve deployment flexibility.
  • Design for Failure
    – Automated failure detection and notification.
    – “Limp mode” operation of business features.
  • Move work out of the database into the applications because the database is the bottleneck. Ebay does this in the extreme. We see it in other architecture using caching and the file system, but eBay even does a lot of traditional database operations in applications (like joins).
  • Use what you like and toss what you don't need. Ebay didn't feel compelled to use full blown J2EE stack. They liked Java and Servlets so that's all they used. You don't have to buy into any framework completely. Just use what works for you.
  • Don't be afraid to build solutions that meet and evolve with your needs. Every off the shelf solution will fail you at some point. You have to go the rest of the way on your own.
  • Operational controls become a larger and larger part of scalability as you grow. How do you upgrade, configure, and monitor thousands of machines will running a live system?
  • Architectures evolve. You need to be able to change, refine, and develop your new system while keeping your existing site running. That's the primary challenge of any growing website.
  • It's a mistake to worry too much about scalability from the start. Don't suffer from paralysis by analysis and worrying about traffic that may never come.
  • It's also a mistake not to worry about scalability at all. You need to develop an organization capable of dealing with architecture evolution. Understand you are never done. Your system will always evolve and change. Build those expectations and capabilities into your business from the start. Don't let people and organizations be why your site fails. Many people will think the system should be perfect from the start. It doesn't work that way. A good system is developed overtime in response to real issues and concerns. Expect change and adapt to change.
  • 分享到:
    评论

    相关推荐

      The eBay Architecture

      标题:“The eBay Architecture”(eBay的架构) 描述:这份由eBay架构师Randy Shoup和Dan Pritchett在2006年11月29日的SDForum上展示的PPT,深入探讨了eBay如何在网站稳定性、功能更新速度、性能和成本之间找到...

      eBay Architecture-Scalability with Agility

      标题“eBay Architecture - Scalability with Agility”及描述同名,揭示了eBay如何通过灵活且可扩展的架构来应对日益增长的数据量、用户需求以及业务挑战。下面,我们将深入探讨这一主题,理解eBay是如何实现其架构...

      国外技术干货:eBay Architecture(Tony Ng) 2011- Tony NG.zip

      《eBay架构解析》是由Tony Ng在2011年分享的技术干货,主要探讨了eBay这个全球知名电子商务平台的架构设计与实现。这个压缩包包含了一本PDF文档,可能是讲座笔记或者报告,以及一个名为"UhR8x728IOQQHzmP8fTct0QzaBN...

      ebay architecture principle

      ### eBay架构原则详解 在互联网领域,eBay作为全球最大的在线交易平台之一,其技术架构面临着巨大的挑战。为了应对这些挑战,eBay总结了一系列最佳实践,这些实践不仅帮助eBay自身成长,也为其他需要处理大规模数据...

      ebay_architecture.pdf

      NULL 博文链接:https://yanxia611.iteye.com/blog/921605

      eBay 开源SOA框架

      SOA(Service-Oriented Architecture,面向服务架构)是一种设计和构建软件系统的方法,它强调将业务功能分解为独立的服务,这些服务可以通过网络进行交互,实现松耦合和高复用性。eBay开源的SOA框架是其在大规模...

      ebay,youku,facebook等架构文档

      1. **eBay架构** (ebay_architecture.pdf、ebay_arch_principles.pdf): - eBay的架构设计注重高可用性和可扩展性,以支持全球范围内的大规模在线交易。 - 强调服务化和模块化,使系统能够快速适应业务变化。 - ...

      ebay SOA 架构

      在电子商务领域,eBay 是最早采用服务导向架构(Service-Oriented Architecture,简称 SOA)的企业之一。作为全球领先的在线交易平台,eBay 需要处理海量的数据交换和服务请求,这促使它在早期就探索并实施了 SOA ...

      从eBay的SOA解决方案谈SaaS扩展性

      本文将通过分析eBay的SOA(Service-Oriented Architecture,面向服务的架构)解决方案,深入探讨SaaS扩展性的实现路径。 ### SOA与SaaS的结合 SOA是一种设计原则,它强调通过服务接口将应用程序的不同功能组件解耦...

      高性能高并发服务器架构大全

       eBay 的数据库分布扩展架构 68  从LiveJournal后台发展看大规模网站性能优化方法 70 一、LiveJournal发展历程 70 二、LiveJournal架构现状概况 70 三、从LiveJournal发展中学习 71 1、一台服务器 71 2、...

      知名网站架构相关文档收集A

      4. **ebay_architecture.pdf** - eBay作为全球知名的拍卖网站,其架构可能涉及到拍卖系统的实时性、交易安全和大规模库存管理等方面的技术。 5. **linkedin_communication_architecture.pdf** - LinkedIn的通信架构...

      Big-Data-in-Big-Companies(SAS大数据报告).pdf

      Arguably, firms like Google, eBay, LinkedIn, and Facebook were built around big data from the beginning. They didn’t have to reconcile or integrate big data with more traditional sources of data and...

      EBCMS.zip_On Message_cms

      EBay EBCMS content management system uses the popular PHP+MySQL architecture design, MVC design pattern, fully open source. With eBay content management system: Article management Model management ...

      siliconslopes2020-minimalviablearchitecture-200201200415.pdf

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

      SOA: end of business as usual

      在当今快速发展的科技领域,"SOA:业务如常的终结"这一主题揭示了服务导向架构(Service-Oriented Architecture,简称SOA)如何深刻地影响着商业环境。CTO安迪·穆尔霍兰德在Capgemini的演讲中指出,SOA不仅是一种...

      Web Services 教程

      3.3 eBay Trading API:允许开发者访问eBay的市场数据,如搜索商品、管理拍卖等。 四、Web Services的安全与管理 4.1 WS-Security:定义了一套安全模型,用于保护Web Services的通信,包括消息认证、加密、签名等...

      关于SaaS的介绍 未来趋势 技术革命

      SaaS的应用范围广泛,涵盖了电子商务(如eBay)、云计算基础设施(如Amazon)、在线办公工具(如在线OA)、即时通讯(IM)、在线安全(如在线杀毒)、在线娱乐(如在线音乐播放)等多个领域。这些服务在日常工作中...

      Flex技術報告

      - **eBay**:举了一个著名的使用Flex开发的应用案例——eBay网站的部分功能就是用Flex实现的。 - **CCTVQ~5uƉeYЏS**:这部分内容不清晰,但可能提到了其他使用Flex开发的成功案例。 #### 七、MXML在Flex中的角色...

    Global site tag (gtag.js) - Google Analytics