» » » » » » Proiectarea şi funcţionarea sitului Facebook

Proiectarea şi funcţionarea sitului Facebook

postat în: Facebook | 0

Facebook_Headquarters_1_Hacker_Way_Menlo_Park(Intrarea în sediul complexului Facebook din Menlo Park, California)

Culoarea primară a site-ului Facebook este albastru, întrucât Zuckerberg este daltonist, o problemă de care şi-a dat seama abia după un test efectuat în jurul anului 2007, după cum a explicat el în 2010: „albastrul este culoarea cea mai bogată pentru mine, eu pot vedea toate nuanţele de albastru.” Facebook este construit în PHP care este compilat cu HipHop pentru PHP, un „un transformator de cod sursă” construit de inginerii Facebook, care transformă PHP în C++ . Folosirea HipHop s-a raportat că a redus consumul mediu de CPU pe serverele Facebook cu 50%.

Facebook este dezvoltat ca o aplicație monolit. Potrivit unui interviu în 2012 cu Chuck Rossi, un inginer de la Facebook, Facebook compilează în bucîţi binare de 1,5 GB care sunt apoi distribuite la serverele folosind un sistem personalizat bazat pe BitTorrent. Rossi a declarat că este nevoie de aproximativ 15 minute pentru a construi și 15 minute pentru a le lansa la servere. Procesul de construcție și de lansare este fără întreruperi, și modificări la Facebook sunt lansate zilnic.

Facebook a folosit o platformă combinată bazată pe HBase pentru a stoca date între mașini distribuite. Folosind o arhitectură de decantare, noile evenimente sunt stocate în fișiere jurnal, iar jurnalele sunt puse la coadă. Sistemul rulează aceste evenimente și le scrie în sistemul de stocare. Interfaţa de utilizator apoi extrage datele și le afișează pentru utilizatori. Facebook se ocupă de cereri ca comportamentul AJAX. Aceste cereri sunt scrise într-un fișier jurnal, folosind Scribe (dezvoltat de Facebook).

Datele sunt citite de la aceste fișiere jurnal folosind Ptail, un instrument construit pe plan intern pentru a agrega date de la mai multe depozite Scribe. Acesta pune la coadă fișierele jurnal și extrage datele (şi astfel numele). Datele Ptail sunt separate afară în trei fluxuri astfel încât acestea să poată fi în cele din urmă trimise la propriile clustere în diferite centre de date (impresii plugin, impresii flux de ştiri, acțiuni (plugin + flux de ştiri)). Puma este utilizat pentru a gestiona perioadele de flux mare de date (de intrare/ieșire, sau IO). Datele sunt prelucrate în loturi pentru a reduce numărul de dăţi necesare pentru a citi și a scrie în perioade de mari solicitări (Un articol „fierbinte” va genera o mulțime de impresii și impresii de fluxuri de știri, care vor provoca un uriaş flux de date). Loturile sunt luate la fiecare 1,5 secunde, limitate de memoria utilizată la crearea unui tabel hash.

După aceasta, datele ajung în format PHP (compilat cu HipHop pentru PHP). Backend este scris în Java și Thrift este folosit ca formatul de mesagerie astfel încât programele PHP să poată interoga servicii Java. Soluțiile de caching sunt folosite pentru a face paginile web să fie afișate mai repede. Cu cât sunt mai multe şi mai mai datele din cache, cu atât mai puțin utilizat este timpul real. Datele sunt apoi trimise la serverele MapReduce astfel încât să poată fi interogate prin Hive. Acest lucru servește, de asemenea, ca plan de rezervă pentru ca datele să poată fi recuperate de la Hive. Fişerele jurnal brute sunt îndepărtate după o perioadă de timp.

Pe 20 martie 2014 Facebook a anunțat un nou limbaj de programare în sursă deschisă numit Hack. Înainte de lansarea publică, o mare parte din Facebook a fost deja rescris și „testat pe câmpul de luptă” folosind noul limbaj.

Acest text este disponibil sub licența Creative Commons cu atribuire și distribuire în condiții identice

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *