211service.com
Kā darbojas Facebook
Facebook ir brīnišķīgs tīkla efekta piemērs, kurā tīkla vērtība lietotājam ir eksponenciāli proporcionāla citu tīkla lietotāju skaitam.
Facebook spēks izriet no tā, ko Džefs Rotšilds, tā tehnoloģiju viceprezidents, sauc par sociālo grafiku — tas ir ārkārtīgi daudzveidīgo savienojumu summa starp vietnes lietotājiem un viņu draugiem. starp cilvēkiem un notikumiem; starp pasākumiem un fotogrāfijām; starp fotogrāfijām un cilvēkiem; un starp milzīgu skaitu diskrētu objektu, kas saistīti ar metadatiem, kas tos apraksta, un to savienojumiem.
Šis stāsts bija daļa no mūsu 2008. gada jūlija numura
- Skatiet pārējo izdevuma daļu
- Abonēt
Facebook uztur datu centrus Santaklārā, Kalifornijā; Sanfrancisko; un Ziemeļvirdžīnija. Centri ir izveidoti trīs līmeņu x86 serveru aizmugurē, kas ir ielādēts ar atvērtā pirmkoda programmatūru, dažas no kurām Facebook ir izveidojis pats.
Apskatīsim galveno objektu Santaklārā un pēc tam parādīsim, kā tas mijiedarbojas ar saviem brāļiem un māsām.
Facebook tīkla augstāko līmeni veido tīmekļa serveri, kas veido tīmekļa lapas, kuras lietotāji redz, lielākoties ar astoņiem kodoliem, kuros darbojas 64 bitu Linux un Apache. Daudzas sociālā tīkla lapas un funkcijas ir izveidotas, izmantojot PHP — datora skriptu valodu, kas specializējas vienkāršām, automatizētām funkcijām. Taču Facebook izstrādā arī sarežģītas pamata lietojumprogrammas, izmantojot dažādas pilnvērtīgas datoru valodas, tostarp C++, Java, Python un Ruby. Lai pārvaldītu šīs pieejas sarežģītību, uzņēmums izveidoja Thrift — lietojumprogrammu sistēmu, kas ļauj sadarboties programmām, kas apkopotas no dažādām valodām.
Apakšējais līmenis sastāv no astoņu kodolu Linux serveriem, kuros darbojas MySQL — atvērtā koda datu bāzes servera lietojumprogramma. Rotšilds lēš, ka Facebook ir aptuveni 800 šādu serveru, kas izplata aptuveni 40 terabaitus lietotāju datu. Šajā līmenī tiek glabāti visi metadati par katru datubāzes objektu, piemēram, personu, fotoattēlu vai notikumu.
Vidējais līmenis sastāv no kešatmiņas serveriem. Pat 800 datu bāzes serveri nevar apkalpot visus nepieciešamos datus: Facebook saņem 15 miljonus pieprasījumu sekundē gan par datiem, gan savienojumiem. Lielapjoma kešatmiņas serveri, kuros darbojas Linux un atvērtā pirmkoda Memcache programmatūra, aizpilda nepilnības. Apmēram 95 procentus datu vaicājumu var aizpildīt no kešatmiņas serveru 15 terabaitiem RAM, tāpēc MySQL datu bāzēm un to salīdzinoši lēnajiem cietajiem diskiem ir jāpārsūta tikai 500 000 vaicājumu sekundē.
Fotoattēli, videoklipi un citi objekti, kas aizpilda tīmekļa līmeni, tiek glabāti atsevišķos datu centra failos.
Sanfrancisko iekārta atkārto Web un kešatmiņas līmeņus, kā arī datu bāzes objektu failētājus, bet izmanto Santa Clara MySQL datu bāzes līmeni.
Virdžīnijas datu centrs atrodas pārāk tālu, lai koplietotu MySQL datubāzes: ar 70 milisekundēm interneta aizkavi, dod vai ņem, tas vienkārši nedarbosies. Tādējādi tas pilnībā dublē Santa Clara iekārtu, izmantojot MySQL replikāciju, lai sinhronizētu datu bāzes līmeņus.
Kas notiks tālāk ar Facebook tehnoloģiju? Pirmkārt, saka Rotšilds, uzņēmums ir atklājis, ka pārtraukumi serveru Ethernet kontrolleros, kas ļauj serveriem apstrādāt neskaitāmus pieprasījumus, kas tiek saņemti vienlaikus, ir vājš kakls, jo tos parasti apstrādā tikai viens kodols. Tāpēc Facebook pārrakstīja kontrolieru draiverus, lai tie būtu piemēroti daudzkodolu sistēmām. Facebook arī eksperimentē ar cietvielu diskdziņiem, kas varētu paātrināt MySQL datu bāzes līmeņa veiktspēju 100 reizes.
Ņemot vērā to, ka Facebook aug un ka savienojumi pieaug eksponenciāli, vietnei drīz būs nepieciešama šī veiktspēja.