Efnisyfirlit[Fela][Sýna]
WhatsApp er samfélagsskilaboðaforrit sem gerir notendum kleift að skiptast á skilaboðum sín á milli.
Hefur þú einhvern tíma íhugað hvernig WhatsApp virkar?
Hver eru hugtökin sem liggja til grundvallar sköpun þess og starfsemi?
Þessi grein mun fara yfir grunnatriði WhatsApp kerfishönnun.
Við förum líka í gegnum almennan arkitektúr WhatsApp, sem hægt er að nota til að smíða hvers kyns spjallhugbúnað.
Svo, án frekari ummæla, skulum við kíkja á kerfishönnun WhatsApp!
1. Helstu kröfur
WhatsApp er mjög stigstærð tækni sem er notuð af mörgum um allan heim. Þess vegna ætti það að vera vel hannað til að vera nánast alltaf áreiðanlegt og virka.
Þess vegna er mikilvægt að ákvarða mikilvægar þarfir kerfisins.
Þetta eru lágmarkskröfur fyrir WhatsApp boðberann:
- Fær um að auðvelda einstaklingssamskipti.
- Skilaboðaviðurkenning og síðast séð eru bæði möguleg (Sent, Afhent og Lesið).
- Leyfa dulkóðun frá enda til enda og fjölmiðlastuðningi (myndir/myndbönd).
Við skulum komast að því hversu mikla afkastagetu nauðsynleg þjónusta okkar krefst.
2. Mat á afkastagetu
Markmið okkar er að búa til vettvang sem getur séð um mikla umferð. Gerum ráð fyrir að 10 milljarðar SMS séu sendar á dag. Við höfum:
- Á hverjum degi eru 10 milljarðar SMS sendar frá einum milljarði manna.
- Þegar umferð var sem mest (á sekúndu) voru 700,000 manns virkir (6x að meðaltali)
- Á hámarksnotkun eru send 40 milljónir skilaboða á sekúndu.
- Meðallengd skilaboða er 160 stafir: 10B * 160 = 1.6TB af gögnum er búið til á hverjum degi.
- Tökum tíu ára starf sem dæmi: 10 * 1.6B * 365 PB
- Allt forritið verður byggt upp af örþjónustum, sem hver um sig mun framkvæma sérhæft verkefni. Gerum ráð fyrir að það taki 20 millisekúndur að senda skilaboð og að það séu 100 samhliða tengingar á hvern netþjón. Þar af leiðandi er áætlaður fjöldi spjallþjóna sem krafist er = (spjallskilaboð á sekúndu bið)/ samtímis tengingar á hvern netþjón = 40M * 20ms / 100 = 8000 netþjónar.
3. Arkitektúr á háu stigi
Þetta kerfi er byggt á tveimur kjarnaþjónustum. Spjallþjónusta og tímabundin þjónusta, til dæmis. Spjallþjónustan sér um alla umferð sem myndast af netskilaboðum notenda. Samtímis annast bráðabirgðaþjónustan umferð þegar notandinn er ótengdur.
Ef notandinn er á netinu sér spjallþjónustan um að koma skilaboðum til skila.
Það mun staðfesta hvort viðtakandi skilaboðanna sé á netinu eða ekki; ef viðtakandinn er á netinu mun þessi þjónusta afhenda skilaboðin strax; ef viðtakandinn er ekki á netinu mun bráðabirgðaþjónustan senda skilaboðin til hans þegar þeir snúa aftur á netinu.
Tímabundin þjónusta geymir sérstakt geymslusvæði til að geyma tímabundið aðgengileg gögn þar til ónettengdur notandi tengist aftur.
Hönnun API á háu stigi
Þessi þjónusta er með tvö virkt forritaskil á háu stigi til að senda og lesa skilaboð. Kerfið er hægt að útfæra með því að nota REST arkitektúrinn.
Færibreytur til að senda skilaboð
Þetta API verður notað til að senda skilaboð á milli tveggja notenda.
Færibreytur samtals
Þetta API er notað til að sýna þráðspjall. Líttu á þetta sem það fyrsta sem þú sérð þegar þú opnar WhatsApp. Við viljum aðeins fá nokkur skilaboð fyrir einn notanda í einni API fyrirspurn. Til að takast á við þetta þarf offset og skilaboðatalningu færibreytur.
Hver eru virkni eiginleika eins og síðast séð, stakur hak og tvöfaldur merktur?
Mikilvæga hlutverkið í innleiðingu þessarar þjónustu er viðurkenningarþjónustan. Þessir eiginleikar voru þróaðir þar sem þessi þjónusta heldur áfram að búa til og staðfesta staðfestingarsvör.
- Stakur merki: Þegar skilaboð frá notanda A berst til notanda B sendir þjónninn einn hak sem staðfestir að skilaboðin hafi verið send.
- tvöfalda merkið: Eftir að skilaboð miðlarans hafa verið send til notanda B í gegnum rétta tengingu mun notandi B staðfesta móttöku skilaboðanna til netþjónsins. Miðlarinn mun síðan veita notanda A aðra viðurkenningu. Fyrir vikið birtist tvítekinn hak.
- Blá tikk: Notandi B mun senda aðra staðfestingu til þjónsins eftir að hafa athugað skilaboðin. Miðlarinn mun þá senda notanda A viðbótarskilaboð. Blár hak birtist á skjá notanda A eftir það.
- Síðast séð: Hjartsláttarbúnaðurinn er algjörlega ábyrgur fyrir síðast séð eiginleika. Á 5 sekúndna fresti er hjartsláttur sendur til netþjónsins, sem heldur utan um stöðu hvers notanda sem síðast sást í töflu sem allir aðrir notendur geta nálgast auðveldlega.
4. Hönnun helstu eiginleika
Persónuleg samskipti
Þetta er nauðsynlegur hluti af spjallþjónustunni. Notandi getur einfaldlega sent skilaboð til annars notanda sem notar þessa þjónustu. Við skulum skoða hvernig þetta virkar:
Gerum ráð fyrir að Jay vilji eiga samskipti við Aayush. Jay er tengdur við spjallþjón sem hann fær skilaboðin með. Jay fær staðfestingu frá spjallþjóni um að skilaboðin hafi verið send. Spjallþjónninn óskar nú eftir upplýsingum frá gagnageymslunni um spjallþjóninn sem Aayush er tengdur við. Spjallþjónn Jay sendir nú skilaboðin til spjallmiðlara Aayush og Aayush tekur á móti skilaboðunum í gegnum ýta. Aayush sendir nú staðfestingu á spjallþjón Jay, sem lætur Jay vita að skilaboðin hafi verið afhent. Ef Aayush las skilaboðin aftur var ný viðurkenning á því að skilaboðin hefðu verið lesin afhent Jay.
Staða notendavirkni
Síðasta skiptið sem einstaklingur var virkur er reglulegur þáttur í spjallboðum.
Kerfi til að viðhalda tengingu milli viðskiptavinarins og netþjónsins er sýnt á þessari skýringarmynd. Vefinnstungur voru notaðar til að koma á tvíátta tengingu milli þjónsins og biðlarans. Þessar tengingar senda hjartslátt, sem eru notaðir til að fylgjast með virknistöðu notandans.
Persónuvernd frá enda til enda
Dulkóðun frá enda til enda er lykileiginleiki sem tryggir að aðeins notendur sem tala geta lesið samskiptin. Opinberum lykli er deilt á milli allra notenda sem taka þátt í samskiptum og er mikilvægt til að viðhalda enda-til-enda dulkóðun. Gerum ráð fyrir að það séu tveir notendur á rásinni, Jay og Aayush, sem eiga samskipti sín á milli.
Jay er með almenningslykil Aayush og Aayush er með almenningslykil Jay sem og ósamnýtan einkalykil þeirra. Þar af leiðandi, þegar Jay sendir skilaboðin, dulkóðar hann þau með opinberum lykli Aayush, sem aðeins er hægt að afkóða með einkalykli Aayush.
Á sama hátt mun Jay aðeins geta afkóðað samskipti Aayush. Fyrir vikið munu aðeins Jay og Aaysuh geta séð samskipti hvors annars og þjónninn mun bara virka sem gátt í öllu ferlinu.
5. Flöskuhálsar
Öll kerfi eru viðkvæm fyrir bilun. Til að stjórna svo miklu umferðarmagni verður þjónustan að vera starfhæf og bilanaþolin allan tímann til að forðast flöskuhálsa. Vegna þess að þjónusta okkar er algjörlega háð spjall- og tímabundnum netþjónum verðum við að leysa öll vandamál sem koma upp við rekstur þeirra.
Bilun á spjallþjóni: Þetta er hjarta kerfisins okkar. Þegar notendur eru á netinu er það ábyrgt fyrir stjórnun og afhendingu skilaboða. Þess vegna heldur þetta kerfi tengsl við notendur sína.
Þar af leiðandi, ef þessi þjónusta mistekst, mun allur arkitektúrinn þjást. Það eru tvær aðferðir til að stjórna bilun á spjallþjóninum. Ein aðferð er að færa TCP tengingar yfir á annan netþjón, en önnur er að leyfa notendum að hefja tengingar sjálfkrafa ef tengingin tapast.
Bilun í tímabundinni geymslu: Annar hluti sem er viðkvæmur fyrir bilun sem gæti að lokum skaðað alla þjónustuna er tímabundin geymsla. Skilaboð á leið til notenda án nettengingar glatast ef þessi þjónusta mistekst.
Við getum komið í veg fyrir tap skeyta með því að endurtaka tímabundna geymslu hvers notanda. Fyrir vikið er hægt að nota eftirmyndina til að vinna úr aðgerðunum hvenær sem notandinn kemur aftur á netinu. Ef upprunalegi þjónninn verður aðgengilegur eru bæði upprunalegu og eftirmyndatilvikin af bráðabirgðageymslu notandans sameinuð í eina verslun.
6. Hagræðingartækni
Leyfi: Til að skila óaðfinnanlegri og bættri upplifun viðskiptavina verður boðberaþjónustan að vera í rauntíma. Þar af leiðandi verður að draga úr leynd með því að vista hluta af þeim gögnum sem oft er aðgangur að. Við getum vistað stöðu notendavirkni og nýleg samtöl í minninu með því að nota dreift skyndiminni eins og Redis.
Framboð: Við þurfum að þjónusta okkar sé tiltæk meirihluta tímans. Kerfið okkar verður að vera bilunarþolið, þannig að við getum haldið nokkrum eintökum af tímabundnum skilaboðum svo hægt sé að endurheimta öll skilaboð sem glatast fljótt úr afritum þeirra. Þar af leiðandi er ekki hægt að stefna aðgengi kerfisins í hættu.
Niðurstaða
Kerfið okkar styður nú aðeins nokkra möguleika, en við getum auðveldlega stækkað það til að bæta við hópspjalli til að dreifa skilaboðum til nokkurra einstaklinga. Þú getur líka boðið upp á mynd- og símtalsmöguleika. Þetta kerfi er einnig hægt að þróa þannig að notendur geti birt stöðuuppfærslur eða frásagnir og lesið hver annan.
Ég vann hörðum höndum að því að veita þér yfirlit yfir WhatsApp kerfishönnunina á háu stigi. Ég vona að þú hafir haft gaman af því og nýtt þér það vel.
Skildu eftir skilaboð