Annonse
Sosiale nettverk er kunsten å koble til de som deler felles interesser. Ditt "nettverk" er et fellesskap som hjelper deg med å holde deg forent med andre og gir mange fordeler. Nettverk via nettsteder på sosiale medier har revolusjonert hvordan vi bruker Internett og er i forkant av det vi nå kaller Web 2.0.
Facebook er sosiale nettverk. Folk har "facebooket" hverandre i omtrent 6 år nå, og lager Facebook 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 og dekke dens arkitektur og frontend / backend infrastruktur ”” muttere og bolter som holder Facebook sammen.
Hvordan fungerer Facebook? ”” Frontend
Facebook bruker en rekke tjenester, verktøy og programmeringsspråk for å utgjøre sin kjerneinfrastruktur. I fronten kjører serverne deres en LAMP (Linux, Apache, MySQL og PHP) med Memcache. Ikke en informatikkekspert? La oss se nærmere på hva det betyr.
Linux og Apache

Denne delen er ganske selvforklarende. Linux er en Unix-lignende datamaskinens operativsystemkjerne. Den er åpen kildekode, veldig tilpassbar og god 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 er i bruk.
MySQL

For databasen bruker Facebook MySQL på grunn av hastighet og pålitelighet. MySQL brukes først og fremst som en nøkkelverdilager da data blir tilfeldig distribuert mellom et stort sett med logiske forekomster. Disse logiske forekomstene er spredt over fysiske noder, og belastningsbalansering gjøres på det fysiske nodenivået.
For så vidt angår tilpasninger, har Facebook utviklet et tilpasset partisjonsskjema der en global ID tilordnes alle data. De har også et tilpasset arkiveringsskjema 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 nettprogrammeringsspråk med omfattende støtte og et aktivt utviklermiljø og det er bra for rask iterasjon. PHP er et dynamisk typisk / tolket skriptspråk.
memcache

memcache er et minnesbuffersystem som brukes til å fremskynde dynamiske databasedrevne nettsteder (som Facebook) ved å bufret data og objekter i RAM for å redusere lesetiden. Memcache er Facebooks primære form for hurtigbufring og hjelper med å lindre databasebelastningen.
Å ha et hurtigbufringssystem gjør at Facebook kan være så raskt som det er når du husker dataene dine. Hvis den ikke trenger å gå til databasen, vil den bare hente dataene fra cachen basert på bruker-IDen din.
Ulemper ved bruk av LAMP
Facebook har innsett at det er ulemper med å bruke LAMP-stabelen. Spesielt er PHP ikke nødvendigvis optimalisert for store nettsteder og derfor vanskelig å skalere. Det er heller ikke det raskeste utførende språket, og utvidelsesrammen er vanskelig å bruke.

Mike Schroepfer, Facebooks visepresident for ingeniørstudier, gjorde nylig et intervju kl EMTECH @ MIT angående dette. "Skalering av ethvert nettsted er en utfordring," sa Schroepfer, "men å skalere 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 fordi av Facebooks "enorme sammenkoblede datasett." Nye tilkoblinger opprettes hele tiden på grunn av brukeraktivitet.
Facebook har vokst så raskt at de ofte blir møtt med spørsmål angående databasespørsmål, hurtigbufring og lagring av data. Deres database er stor og stort sett sammensatt. For å redegjøre for dette har Facebook startet mange open source-prosjekter og backend-tjenester.
Hvordan fungerer Facebook? ”” Bakenden
Facebooks backend-tjenester er skrevet på en rekke forskjellige programmeringsspråk, inkludert C ++, Java, Python og Erlang. Deres filosofi for etablering av tjenester er som følger:
1. Opprett en tjeneste hvis nødvendig
2. Lag et rammeverk / verktøysett for enklere oppretting 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 essensielle verktøyene som Facebook har utviklet.
Sparsomhet (protokoll)
Thrift er et lette rammeverk for ekstern prosedyre for skalerbar utvikling av språketjenester. Thrift støtter C ++, PHP, Python, Perl, Java, Ruby, Erlang og andre. Det er raskt, sparer utviklingstid og gir en arbeidsdelingsdeling på servere og applikasjoner med høy ytelse.
Skrive (logg server)
Skribent er en server for å samle loggdata streamet i sanntid fra mange andre servere. Det er et skalerbart rammeverk som er nyttig for logging av en lang rekke data. Det er bygget på toppen av sparsommelen.
Cassandra (database)

Cassandra er et databasestyringssystem designet for å håndtere store datamengder spredt over mange servere. Det styrker Facebooks innboksøkfunksjon og gir en strukturert nøkkelverdi-butikk med eventuell konsistens.
HipHop for PHP
HipHop for PHP er en kildekodetransformator for PHP skriptkode og ble opprettet for å lagre serverressurser. HipHop transformerer PHP kildekode til optimalisert C ++. Etter å ha gjort dette bruker den g ++ for å kompilere den til maskinkode.
Konklusjon
Kort sagt, det er Facebook. Denne artikkelen kan lett være 37 sider lenger hvis jeg skulle gå nærmere inn på, men for å svare på spørsmålet “Hvordan fungerer Facebook?” Jeg tror dette vil være nok. Hvis du ser forbi alle funksjonene og innovasjonene, er hovedideen bak Facebook veldig grunnleggende "" å holde folk koblet. Facebook innser kraften i sosiale nettverk og innoverer kontinuerlig for å holde tjenestene deres best mulig i bedriften.
Synes du at denne artikkelen var nyttig? Legg igjen tankene, kommentarene og ideene dine nedenfor!
Steve, samfunnssjef i VaynerMedia, brenner for sosiale medier og merkevarebygging.