jAbLoK

blog už dávno nejen o javě

eBay, Java a škálovatelnost

s 2 komentářů

Jak to vypadá, když se za pomocí J2EE vytváří webová aplikace, jejíž databáze obsahuje přes dva petabajty dat (peta = 10245) a jejíž dvě stě milionů registrovaných uživatelů jejím prostřednictvím v kterýkoli čas nabízí okolo sta miliónů položek?

Architektura eBay

  • na nejhrubší úrovni rozděleno na databázovou vrstvu, aplikační vstvu, vyhledávací systém a operations
  • Aplikační vrstva:
    • nedrží stav (tedy žádné sessions, natož stateful session beans)
      • schválně jsem se podíval na HTTP hlavičky, zaujala mě cookie jménem “nonsession” ;)
    • asi 100 funkčních celků, v terminologii eBay “apps” (někdo by možná řekl “business services”), dohromady to dělá cca 15,000 serverů
    • aplikační servery spolu nekomunikují, běží nezávisle na sobě (což lze snadno díky předchozímu bodu)
  • Databázová vrstva:
    • rozdělena vertikálně na něco přes 70 funkčních celků (databází). Ty jsou dále řezány horizontálně podle hlavního klíče pro daný logický celek
    • většina náročných obvykle databázových operací se provádí na aplikační vrstvě; zmiňují se joiny, kontrola referenční integrity, třídění. Nepěstují se žádné uložené procedury (sem tam nějaký jednoduchý trigger)
    • eBay nepoužívá transakce (tedy kromě PayPalu, který pod eBay taky patří)
    • v praxi to znamená, že je vymezena skupina životně důležitých dat, které musí být vždy v konzistentním stavu, u ostatních se garantuje pouze “best effort”

Kdy se hodí Java?

Zajímavé jsou použité technologie: J2EE (konkrétně WebSphere) a Oracle, čímž se eBay výraně odlišuje od různých Flickrů a podobné havěti. Co mají ale tyto weby s eBay společné, jsou architektonické patterny, které se na hony vzdalují představě správné J2EE aplikace z dob EJB2.0. Ale na tom samozřejmě není nic divného.

Proč tedy v eBay Javu vůbec používají?

Dan Pritchett ve své prezentaci z roku 2006 píše: “[we] rewrote the entire application in J2EE … which gave us chance to architect the code for reuse and separation of duties”. A co si tak vzpomínám, to byl možná hlavní důvod, proč jsem se kdysi dávno po nějakých pěti letech s Perlem a PHP pouštěl do psaní webových aplikací v Javě.

Odkazy

Written by Pavel Kolesnikov

duben 28, 2008 na 8:40 dop.

Zasláno do Java, Scalability

Tagged with , , ,

2 odpovědí

Subscribe to comments with RSS.

  1. Nejsem programátor, nevidím do toho, ale s ebayem pracuju. Nemohu tvrdit, že by mne ebay ozářil rychlostí a reakčností. Tím netvrdím, že za to může použití javy, ale také může.

    mab

    květen 5, 2008 at 4:22 pm

  2. [...] podobně jako třeba eBay stejně zjistíme, že na aplikační vrstvu budeme muset převést i operace, které by nás [...]


Zanechat odpověď