Sosialt nettverk er kunsten å koble sammen med de som har felles interesser. Din "nettverk" er et fellesskap som hjelper deg med å forene deg med andre og gir mange fordeler. Nettverk via sosiale medier har revolusjonert hvordan vi bruker Internett og står i forkant med det vi nå kaller Web 2.0.
Facebook er sosiale nettverk. Folk har vært "facebooking" hverandre i ca 6 år nå, og gjør Facebook til det mest brukte sosiale nettverket med over 350 millioner brukere over hele verden. Men hvordan fungerer Facebook?
I denne artikkelen vil jeg diskutere Facebooks indre arbeid, som dekker arkitektur og frontend / backend-infrastruktur, "" møtene og boltene som holder Facebook sammen.
Hvordan fungerer Facebook? "" The Front End
Facebook bruker en rekke tjenester, verktøy og programmeringsspråk for å gjøre opp sin kjernevirksomhet. På forsiden kjører serverne en LAMP (Linux, Apache, MySQL og PHP) stabel med Memcache. Ikke en datavitenskapsekspert? La oss ta en titt på akkurat hva det betyr.
Linux og Apache
Denne delen er ganske selvforklarende. Linux er en Unix-lignende datamaskin operativsystem kjernen. Det er åpen kildekode, veldig tilpassbar og bra for sikkerhet. Facebook kjører Linux-operativsystemet på Apache HTTP-servere. Apache er også gratis og er den mest populære open source-webserveren som brukes.
MySQL
For databasen bruker Facebook MySQL på grunn av sin hastighet og pålitelighet. MySQL brukes primært som en nøkkelverdibutikk, da data er tilfeldig fordelt blant et stort sett med logiske forekomster. Disse logiske forekomstene er spredt over fysiske noder, og belastningsbalansering er gjort på det fysiske nodenivået.
Når det gjelder tilpasninger, har Facebook utviklet et tilpasset partisjoneringsprogram der en global ID er tildelt alle dataene. De har også et tilpasset arkiveringssystem som er basert på hvor hyppige og nyere data er per bruker. De fleste data distribueres tilfeldig.
PHP
Facebook bruker PHP fordi det er et godt webprogrammeringsspråk med omfattende støtte og et aktivt utviklingssamfunn, og det er bra for rask iterasjon. PHP er et dynamisk skrevet / tolket skriptspråk.
memcache
Memcache er et minne caching system som brukes til å øke dynamiske database-drevne nettsteder (som Facebook) ved å cache data og objekter i RAM for å redusere lesetiden. Memcache er Facebooks primære form for caching og bidrar til å lette databasebelastningen.
Å ha et caching system tillater Facebook å være så fort som det er å huske dataene dine. Hvis den ikke trenger å gå til databasen, vil den bare hente dataene fra hurtigbufferen basert på bruker-IDen din.
Ulemper ved bruk av LAMP
Facebook har innsett at det er ulemper å bruke LAMP-stakken. Spesielt er PHP ikke nødvendigvis optimalisert for store nettsteder og derfor vanskelig å skalere. Det er heller ikke det raskeste kjørespråket, og utvidelsesrammen er vanskelig å bruke.
Mike Schroepfer, Facebooks teknisk direktør, har nylig gjennomført intervju hos EmTech @ MIT om dette. "Skalering av noe nettsted er en utfordring, " sa Schroepfer, "men skalering av et sosialt nettverk har unike utfordringer."
Han fortsatte med å si at i motsetning til andre nettsteder, kan du ikke bare legge til flere servere for å løse problemet på grunn av Facebooks "store sammenkoblede datasett." Nye tilkoblinger er opprettet hele tiden på grunn av brukeraktivitet.
Facebook har vokst så raskt at de ofte står overfor problemer angående database spørringer, caching og lagring av data. Deres database er stor og i stor grad kompleks. For å regne for dette har Facebook startet mange åpne kildeprosjekter og backend-tjenester.
Hvordan fungerer Facebook? "" The Back End
Facebooks backend-tjenester er skrevet i en rekke forskjellige programmeringsspråk, inkludert C ++, Java, Python og Erlang. Deres filosofi for etableringen av tjenester er som følger:
1. Opprett en tjeneste hvis nødvendig
2. Lag et rammeverk / verktøysett for enklere opprettelse av tjenester
3. Bruk riktig programmeringsspråk for oppgaven
En liste over alle Facebooks åpen kildekodeutvikling finner du her. Jeg vil diskutere noen av de grunnleggende verktøyene Facebook har utviklet.
Sparsommelighet (protokoll)
Sparsommelighet er en lett, ekstern prosedyrekonstruksjon for skalerbar språkutvikling. Sparsommelighet støtter C + +, PHP, Python, Perl, Java, Ruby, Erlang og andre. Det er raskt, sparer utviklings tid, og gir arbeidsdeling av arbeid på servere og applikasjoner med høy ytelse.
Scribe (log server)
Scribe er en server for å aggregere loggdata streamet i sanntid fra mange andre servere. Det er et skalerbart rammeverk som er nyttig for å logge et bredt spekter av data. Det er bygget på toppen av sparsommelighet.
Cassandra (database)
Cassandra er et databasebehandlingssystem designet for å håndtere store mengder data spredt ut over mange servere. Den styrker Facebooks innbokssøkfunksjon og gir en strukturert nøkkelverdibutikk med mulig konsistens.
HipHop for PHP
HipHop for PHP er en kildekode transformator for PHP script kode og ble opprettet for å lagre serverressurser. HipHop forvandler PHP kildekoden til optimalisert C ++. Etter å ha gjort dette bruker den g ++ til å kompilere den til maskinkode.
Konklusjon
I et nøtteskall, det er Facebook. Denne artikkelen kan lett være 37 sider lenger hvis jeg skulle gå inn i flere detaljer, men å svare på spørsmålet "Hvordan fungerer Facebook?" Jeg tror dette vil være tilstrekkelig. Hvis du ser forbi alle funksjonene og innovasjonene, er hovedideen bak Facebook virkelig veldig grunnleggende for å holde folk tilkoblet. Facebook innser kraften i sosialt nettverk og er stadig innovativt for å holde sin tjeneste best i virksomheten.
Fant du denne artikkelen nyttig? Legg igjen dine tanker, kommentarer og ideer nedenfor!