jAbLoK

eBay, Java a škálovatelnost

Zasláno do Java, Scalability by Pavel Kolesnikov na Duben 28th, 2008

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

Tagged with: , , ,

One Response to 'eBay, Java a škálovatelnost'

Subscribe to comments with RSS or Zpětný odkaz to 'eBay, Java a škálovatelnost'.

  1. mab said, on Květen 5th, 2008 at 4:22 pm

    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.

Leave a Reply