Netflix om hvordan du bygger tjenester som skalerer utover millioner av brukere

Millioner av mennesker over hele verden streamer mer enn to milliarder timer video fra Netflix hver måned.

I løpet av de siste syv årene har Netflix vokst fra å tilby online-filmer til noen tusen medlemmer til det punktet der strømmetjenestene i fjor utgjorde 34 prosent av toppstrømstrafikken i USA.

For hver person som ser på film eller TV gjennom Netflix, gyter tjenesten enda mer informasjon som beskriver hva som blir sett på og hvordan. Denne visningsdataene detaljer om hvilke titler en konto har sett, på hvilket tidspunkt noen sluttet å se en tittel og hva annet som blir streamet på en konto i det øyeblikket.

Netflix kan håndtere milliarder av forekomster av visning av data som genereres hver dag, men firmaet mener det vil trenge å omarkitektere systemene sine for å holde tritt med stadig økende etterspørsel.

"For å skalere til neste størrelsesorden, vurderer vi grunnleggende om arkitekturen vår, " sa Philip Fisher-Ogden, direktør for ingeniør i Netflix, i et blogginnlegg.

Microservices

Som en del av den om forestillingen om Netflix har til hensikt å bryte ned elementer som håndterer å se data på frakoblede komponenter kjent som mikroservices.

Microservices markerer et skifte fra å bygge applikasjoner som en monolitisk enhet, for eksempel et serversideapplikasjon som håndterer HTTP-forespørsler, utfører domenelogikk og henter og oppdaterer data fra en database. Ulempen med å bygge disse forskjellige ansvarsområdene til en enkelt kjørbar er at enhver liten kodingendring krever bygging og distribusjon av en ny versjon av serversiden-applikasjonen.

Derimot favoriserer mikroservice-tilnærmingen å bygge en enkelt applikasjon som en pakke med små tjenester, som hver kjører i sin egen prosess og kommuniserer med lette mekanismer, ofte en HTTP-ressurs-API.

Å bygge applikasjoner på denne måten har mange fordeler: hver tjeneste kan tilpasses veldefinerte forretningskrav og nye instanser blir automatisk distribuert etter hvert som etterspørselen øker. Fordi hver tjeneste er diskret, kan de også skrives på forskjellige programmeringsspråk og stole på forskjellige datalagringsteknologier. Feilsøking og refactoring-kode kan også være enklere når applikasjoner er sammensatt av mikroservices.

Netflix plan er å ha separate tjenester for håndtering av innsamling, behandling og levering av visningsdata, med frakoblet kommunikasjon mellom komponenter ved hjelp av signaler som sendes gjennom en hendelseskø.

Polyglot utholdenhet

Netflix andre arkitektoniske endring vil være et skifte til polyglot utholdenhet. Denne tilnærmingen betyr å bruke forskjellige databaser eller lagringsteknologier for å lagre data, avhengig av datatype eller hvordan de brukes. Datanvendelse kan variere på flere måter, for eksempel i volumet som lagres eller maksimal akseptabel latenstid for å lese eller skrive data til lagring. Polyglot-utholdenhet gjør det mulig å matche data til en komplementær lagringsteknologi.

Netflix vil bruke åpen kildekode, NoSQL distribuert database Cassandra for høyt volum, lav latensskriving og open source, NoSQL database Redis for høyt volum, lav latens lesing.

Hvorfor endre?

Netflix's Fisher-Ogden sier at endringene drives av et ønske om å takle smertepunktene i den nåværende arkitekturen, som kjører på skyveplattformen Amazon Web Services (AWS).

For tiden kan Netflix-kontoer få tilgang til de nyeste visningsdataene fra minnet til forskjellige "stateful nodes" - minneoptimaliserte R3-forekomster på AWS 'EC2-tjeneste.

"Den største ulempen med denne tilnærmingen var at svikt i en enkelt statlig node ville hindre 1 / nth av medlemsbasen fra å skrive til eller lese fra deres visningshistorikk, " sa Fisher-Ogden.

Etter å ha opplevd strømbrudd implementerte Netlix-teamet også et statsløst nivå som kunne hente foreldede data som tilbakeblikk når en tilstrekkelig node var utilgjengelig.

Ogden-Fisher sa at komponentene som ble kombinert sammen i den vakre arkitekturen, skulle "skilles ut i tjenester" som en del av redesignen.

"Vi opprettet visningstjenesten for å innkapsle domenet for visning av datainnsamling, prosessering og levering, " sa han og la til at tjenesten hadde samlet mer funksjonalitet over tid.

"Disse komponentene ville være enklere å utvikle, teste, feilsøke, distribuere og bruke hvis de ble hentet ut til sine egne tjenester."

I tillegg, når Netflix-brukere får tilgang til dette tilstrekkelige nivået, splitter det etterspørselen mellom maskiner på en måte som er gjenstand for å lage hot spots - der bestemte maskiner ender opp med å være ansvarlige for lagring og servering av en uforholdsmessig stor mengde data og forespørsler, forverret latenstid og ytelse.

Byggesteinene i Netflix neste generasjons arkitektur Bilde: Netflix

Da Netflix utvidet seg fra å kjøre i et enkelt til flere AWS-regioner, stedene der AWS-tjenester er vertskap, fant firmaet også at det måtte bygge en tilpasset mekanisme for å kommunisere mellom statlige nivåer i forskjellige regioner.

"Dette ga betydelig, uønsket kompleksitet til vårt overordnede system, " sa Ogden-Fisher.

Når det gjelder lagring av disse visningsdataene, bruker Netflix for tiden Cassandra som det primære datalageret for alle vedvarende data, med memcached lagvis på toppen av Cassandra som en garantert bane med lav latens for å lese, mulig foreldet data.

Å bytte fra memcached til Redis for høyt volum, lite latenstid leser er verdt, sa Ogden-Fisher som "Redis 'førsteklasse datatypestøtte bør støtte skriver bedre enn hvordan vi har lest-modifisere-skrevet i memcached".

"Vi opprettet et tilstrekkelig nivå fordi vi ønsket fordelen med minnet hastighet for våre høyeste volum lese / skrive bruk tilfeller, " sa Ogden-Fisher, og la til at Cassandra i sine pre-1.0 versjoner ikke kjørte på solid state-stasjoner, som kan lese og skrive data langt raskere enn spinnende harddisker på AWS.

"Vi trodde vi kunne designe et enkelt, men robust distribuert stateful-system nøyaktig tilpasset våre behov, men endte opp med en kompleks løsning som var mindre robust enn modne open source-teknologier."

© Copyright 2021 | pepebotifarra.com