Sie sind auf Seite 1von 16

Software Architecture of

Contents
What is eBay? Platforms System requirements Architecture overview Data tier Application tier Search

eBay??
An online auction and shopping website Founded in September of 1995 Global online marketplace where practically anyone can trade practically anything Global presence in 39 markets, including the U.S Registered at NASDAQ as EBAY

The Numbers
212 million registered users

1 billion photos
1 billion page views a day, 105 million listings, 2 peta bytes of data, 5 billion API calls a month Marketplaces net revenues totalled $1.6 billion in Q2 2011

The database is virtualized and spans 600 production instances residing in more than 100 server clusters.
16,000 application servers, all J2EE. About 100 groups of functionality

Platforms
Java Oracle

Web sphere, Servlets


Horizontal Scaling Mix of Windows and Unix

Systemic Requirements
Availability Reliability Massive Scalability Security

Enable Seamless growth

Maintainability Faster Product Delivery

Deliver quality functionality at accelerating rates


Enable rapid business innovation

Architecture for future 10 x growth

Different Versions

Architecture overview
Strictly divided into layers: Data tier, application tier, search and operations Everything is planned with the question "what if load increases by 10x Scale out, not scale up Leverages MSXML framework for presentation layer Asynchronous Integration

Database
Oracle databases
Database splits for horizontal scalability Items split by category Every database has at least 3 on-line databases Segmented by function: user, item account, feedback, transaction, over 70 in all No stored procedures, some simple triggers

Logical Database Hosts


Separate application notion of a database from physical implementation Databases maybe combined and separated with no code changes Reduce cost of creating multiple environments (Dev, QA,..)

Application Tier Overview


Spread the Load Segmented by function (roughly 16,000 application servers into 220 different pools) Horizontal load-balancing within functions

Minimize dependencies Between applications Between functional areas From applications to data tier resources
Virtualized data access

Application Tier-Massive Scaling J2EE


Get the most of J2EE
eBay scales on Servlets and a rewritten connection pool

Keep Application Tier Completely Stateless


No session state in application layer Transient state maintained in cookie databases

Cache where possible


Cache common metadata across requests with cache refresh procedures Cache reload from local storage Cache request data in Thread Local

Application Tier-Tiered application model


Application partitioned into tiers
Presentation Business Integration

Application Tier-Platform Decoupling


Domain Partitioning for deployment Decouple non-transactional domains from transactional flows Search and billing domains not required in transaction processing Fraud domain is required but easier to manage separately Integrate with a combination of asynchronous EDA and synchronous SOA patterns
Transaction Platform EDA Billing EDA Search SOA Fraud

Scaling Search
In 2002, third party off-the-shelf search engine had reached its limits eBay wanted Real time updates, exhaustive recalls , flexible data storage New implementation had the following features Real time feeder infrastructure Real time indexing In-memory search index Horizontal segmentation Caching To retrieve search results, an aggregator component parallelizes queries over multiple partitions, and makes a highly partitioned search grid appear to clients as one logical index.

Das könnte Ihnen auch gefallen