Kaip veikia Facebook

„Facebook“ yra puikus tinklo efekto pavyzdys, kai tinklo vertė vartotojui yra eksponentiškai proporcinga kitų to tinklo vartotojų skaičiui.





„Facebook“ galia kyla iš to, ką jos technologijų viceprezidentas Jeffas Rothschildas vadina socialiniu grafiku – nepaprastai įvairių ryšių tarp svetainės vartotojų ir jų draugų suma; tarp žmonių ir įvykių; tarp įvykių ir nuotraukų; tarp nuotraukų ir žmonių; ir tarp daugybės atskirų objektų, susietų juos apibūdinančiais metaduomenimis ir jų ryšiais.

Socialinių tinklų verslas

Ši istorija buvo mūsų 2008 m. liepos mėn. numerio dalis

  • Žr. likusią numerio dalį
  • Prenumeruoti

„Facebook“ turi duomenų centrus Santa Klaroje, Kalifornijoje; San Franciskas; ir Šiaurės Virdžinija. Centrai yra sukurti ant trijų x86 serverių pakopų, kuriuose yra atvirojo kodo programinė įranga, kai kuriuos „Facebook“ sukūrė pati.



Pažiūrėkime į pagrindinę Santa Klaros įstaigą ir parodykime, kaip ji bendrauja su savo broliais ir seserimis.

Aukščiausią „Facebook“ tinklo pakopą sudaro žiniatinklio serveriai, kurie sukuria tinklalapius, kuriuos mato vartotojai, dauguma jų turi aštuonis branduolius, kuriuose veikia 64 bitų „Linux“ ir „Apache“. Daugelis socialinio tinklo puslapių ir funkcijų yra sukurti naudojant PHP – kompiuterinę scenarijų kalbą, kuri specializuojasi paprastoms, automatizuotoms funkcijoms. Tačiau „Facebook“ taip pat kuria sudėtingas pagrindines programas, naudodamas įvairias visas kompiuterių kalbas, įskaitant C++, Java, Python ir Ruby. Siekdama valdyti šio metodo sudėtingumą, bendrovė sukūrė Thrift – taikomųjų programų sistemą, leidžiančią iš skirtingų kalbų sudarytoms programoms dirbti kartu.

Apatinę pakopą sudaro aštuonių branduolių Linux serveriai, kuriuose veikia MySQL, atvirojo kodo duomenų bazės serverio programa. Rothschild skaičiuoja, kad „Facebook“ turi apie 800 tokių serverių, paskirstančių apie 40 terabaitų vartotojų duomenų. Šioje pakopoje saugomi visi metaduomenys apie kiekvieną duomenų bazės objektą, pvz., asmenį, nuotrauką ar įvykį.



Vidurinę pakopą sudaro talpyklos serveriai. Net 800 duomenų bazių serverių negali aptarnauti visų reikiamų duomenų: „Facebook“ gauna 15 milijonų užklausų per sekundę ir dėl duomenų, ir dėl ryšių. Sukaupti talpyklos serveriai, kuriuose veikia „Linux“ ir atvirojo kodo „Memcache“ programinė įranga, užpildo spragą. Apie 95 procentus duomenų užklausų galima užpildyti iš talpyklos serverių 15 terabaitų RAM, todėl tik 500 000 užklausų per sekundę turi būti perduodama į MySQL duomenų bazes ir jų santykinai lėtus standžiuosius diskus.

Nuotraukos, vaizdo įrašai ir kiti objektai, užpildantys žiniatinklio pakopą, saugomi atskiruose duomenų centro failuose.

San Francisko įrenginys atkartoja žiniatinklio ir talpyklos pakopas, taip pat duomenų bazės objektų rinkmenas, tačiau naudoja Santa Clara MySQL duomenų bazės pakopą.



Virdžinijos duomenų centras yra per toli, kad būtų galima dalytis MySQL duomenų bazėmis: su 70 milisekundžių interneto vėlavimu, duok ar imk, jis tiesiog neveiks. Taigi jis visiškai dubliuoja Santa Clara įrenginį, naudodamas MySQL replikaciją, kad duomenų bazės pakopos būtų sinchronizuojamos.

Kas bus toliau su „Facebook“ technologija? Viena vertus, sako Rothschild, bendrovė išsiaiškino, kad serverių eterneto valdiklių pertraukimai, leidžiantys serveriams apdoroti daugybę užklausų, gaunamų tuo pačiu metu, yra kliūtis, nes paprastai jas tvarko tik vienas branduolys. Taigi „Facebook“ perrašė valdiklių tvarkykles, kad jos būtų pritaikytos kelių branduolių sistemoms. „Facebook“ taip pat eksperimentuoja su kietojo kūno diskais, kurie gali pagreitinti „MySQL“ duomenų bazės pakopos našumą 100 kartų.

Atsižvelgiant į tai, kad „Facebook“ auga ir kad ryšiai auga eksponentiškai, greitai svetainė prireiks tokio našumo.



paslėpti