Kazalo[Skrij][Pokaži]
WhatsApp je program za družabno sporočanje, ki uporabnikom omogoča medsebojno izmenjavo sporočil.
Ste kdaj pomislili, kako deluje WhatsApp?
Kateri so koncepti, ki podpirajo njegovo ustvarjanje in delovanje?
Ta članek bo obravnaval osnove WhatsApp načrtovanje sistema.
Preučili bomo tudi splošno arhitekturo WhatsAppa, ki jo je mogoče uporabiti za izdelavo kakršne koli programske opreme za klepet.
Torej, brez nadaljnjega odlašanja, poglejmo zasnovo sistema WhatsApp!
1. Ključne zahteve
WhatsApp je zelo razširljiva tehnologija, ki jo uporablja veliko ljudi po vsem svetu. Posledično mora biti dobro zasnovan, da je skoraj vedno zanesljiv in delujoč.
Posledično je določitev kritičnih potreb sistema ključnega pomena.
To so minimalne zahteve za messenger WhatsApp:
- Sposoben olajšati interakcije ena na ena.
- Možna sta potrditev prejema sporočila in zadnji viden (Poslano, Dostavljeno in Prebrano).
- Dovolite šifriranje od konca do konca in podporo za medije (slike/videoposnetki).
Ugotovimo, koliko zmogljivosti zahteva naša potrebna storitev.
2. Ocenjevanje zmogljivosti
Naš cilj je ustvariti platformo, ki bo lahko obvladovala veliko količino prometa. Predpostavimo, da je na dan poslanih 10 milijard SMS-ov. Imamo:
- Vsak dan milijarda ljudi pošlje 10 milijard SMS-ov.
- Ob največjem prometu (na sekundo) je bilo aktivnih 700,000 ljudi (6X povprečje)
- Med največjo porabo se prenese 40 milijonov sporočil na sekundo.
- Povprečna dolžina sporočila je 160 znakov: 10B * 160 = 1.6TB podatkov se ustvari vsak dan.
- Za primer vzemite deset let delovne dobe: 10 * 1.6 B * 365 PB
- Celotno aplikacijo bodo sestavljale mikrostoritve, od katerih bo vsaka izvajala specializirano nalogo. Predpostavimo, da pošiljanje sporočila traja 20 milisekund in da obstaja 100 sočasnih povezav na strežnik. Posledično je pričakovano število zahtevanih strežnikov za klepet = (zakasnitev sporočil v klepetu na sekundo)/ sočasne povezave na strežnik = 40M * 20ms / 100 = 8000 strežnikov.
3. Arhitektura na visoki ravni
Ta sistem je zgrajen na dveh osnovnih storitvah. Storitev klepeta in prehodna storitev, na primer. Klepetalna storitev obravnava ves promet, ki ga ustvarijo spletna sporočila uporabnikov. Hkrati začasna storitev obravnava promet, ko je uporabnik brez povezave.
Če je uporabnik na spletu, je za dostavo sporočil zadolžena klepetalnica.
Preveril bo, ali je prejemnik sporočila na spletu ali ne; če je prejemnik na spletu, bo ta storitev takoj dostavila sporočilo; če prejemnik ni na spletu, mu bo prehodna storitev poslala sporočilo, ko se vrne na splet.
Prehodna storitev hrani ločen prostor za shranjevanje začasno dostopnih podatkov, dokler se uporabnik brez povezave znova ne poveže.
Oblikovanje API-jev visoke ravni
Ta storitev ima dva delujoča API-ja na visoki ravni za pošiljanje in branje sporočil. Sistem je mogoče implementirati z uporabo arhitekture REST.
Parametri za pošiljanje sporočil
Ta API bo uporabljen za prenos sporočil med dvema uporabnikoma.
Parametri pogovora
Ta API se uporablja za prikaz klepetov v nitih. To je prva stvar, ki jo vidite, ko odprete WhatsApp. Želeli bi prejeti samo nekaj sporočil za enega uporabnika v eni poizvedbi API. Za obravnavo tega so potrebni parametri odmika in števila sporočil.
Kakšne so funkcije funkcij, kot so zadnji viden, enojna in dvojna kljukica?
Pomembno vlogo pri uvajanju teh storitev ima storitev potrditve. Te funkcije so bile razvite, ker ta storitev še naprej ustvarja in preverja potrditvene odgovore.
- En klopa: Ko sporočilo od uporabnika A doseže uporabnika B, strežnik pošlje eno samo kljukico, ki potrdi, da je bilo sporočilo poslano.
- Dvojna kljukica: Ko je sporočilo strežnika poslano uporabniku B prek ustrezne povezave, bo uporabnik B strežniku potrdil prejem sporočila. Strežnik bo nato uporabniku A zagotovil še eno potrditev. Posledično se prikaže podvojena kljukica.
- bluetick: Uporabnik B bo po preverjanju sporočila strežniku poslal še eno potrditev. Strežnik bo nato poslal uporabniku A dodatno potrditveno sporočilo. Po tem se bo na zaslonu uporabnika A pojavila modra kljukica.
- Zadnjič viden: Mehanizem srčnega utripa je v celoti odgovoren za zadnjo videno funkcijo. Vsakih 5 sekund se srčni utrip prenese na strežnik, ki spremlja stanje zadnjega obiska vsakega uporabnika v tabeli, do katere lahko brez težav dostopa kateri koli drug uporabnik.
4. Oblikovanje ključnih funkcij
Prilagojena interakcija
To je nujen del storitve Klepet. Uporabnik lahko s to storitvijo preprosto pošlje sporočila drugemu uporabniku. Oglejmo si, kako to deluje:
Recimo, da želi Jay komunicirati z Aayushem. Jay je povezan s strežnikom za klepet, s katerim prejme sporočilo. Jay od strežnika za klepet prejme potrditev, da je bilo sporočilo odposlano. Strežnik za klepet zdaj zahteva informacije iz shrambe podatkov o strežniku za klepet, s katerim je povezan Aayush. Jayev strežnik za klepet zdaj pošlje sporočilo Aayushevemu strežniku za klepet, Aayush pa sporočilo prejme prek potisnega mehanizma. Aayush zdaj pošlje potrditev Jayevemu strežniku za klepet, ki Jaya obvesti, da je bilo sporočilo dostavljeno. Če je Aayush ponovno prebral sporočilo, je bilo Jayu poslano novo potrdilo, da je bilo sporočilo prebrano.
Stanje uporabniške dejavnosti
Ko je bila oseba nazadnje aktivna, je redna funkcija hitrih sporočil.
Na tem diagramu je prikazan sistem za vzdrževanje povezave med odjemalcem in strežnikom. Spletne vtičnice so bile uporabljene za vzpostavitev dvosmerne povezave med strežnikom in odjemalcem. Te povezave pošiljajo srčne utripe, ki se uporabljajo za spremljanje statusa aktivnosti uporabnika.
Zasebnost od konca do konca
Šifriranje od konca do konca je ključna lastnost, ki zagotavlja, da lahko komunikacije berejo le uporabniki, ki se pogovarjajo. Javni ključ si delijo vsi uporabniki, vključeni v komunikacijo, in je ključnega pomena za vzdrževanje šifriranja od konca do konca. Predpostavimo, da sta na kanalu dva uporabnika, Jay in Aayush, ki komunicirata drug z drugim.
Jay ima Aayushev javni ključ, Aayush pa Jayev javni ključ in njun zasebni ključ, ki ni v skupni rabi. Posledično, ko Jay pošlje sporočilo, ga šifrira z Aayushevim javnim ključem, ki ga je mogoče dekodirati samo z Aayushevim zasebnim ključem.
Podobno bo Jay lahko samo dekodiral Aayushevo komunikacijo. Posledično bosta lahko samo Jay in Aaysuh videla medsebojno komunikacijo, strežnik pa bo v celotnem procesu deloval le kot prehod.
5. Ozka grla
Vsak sistem je nagnjen k okvaram. Za upravljanje tako velikega obsega prometa mora storitev ves čas delovati in biti odporna na napake, da se izogne ozkim grlom. Ker je naša storitev v celoti odvisna od strežnikov Chat in Transient, moramo rešiti vse težave, ki izhajajo iz njihovega delovanja.
Okvara strežnika za klepet: To je srce našega sistema. Ko so uporabniki na spletu, je odgovoren za upravljanje in dostavo sporočil. Posledično ta sistem ohranja povezave s svojimi uporabniki.
Če ta storitev ne uspe, bo zaradi tega trpela celotna arhitektura. Obstajata dva pristopa za obvladovanje okvare strežnika za klepet. Eden od načinov je premik povezav TCP na drug strežnik, drugi pa omogočanje uporabnikom, da samodejno vzpostavijo povezave v primeru izgube povezave.
Napaka prehodnega shranjevanja: Druga komponenta, ki je nagnjena k okvaram in lahko sčasoma poškoduje celotno storitev, je prehodno shranjevanje. Sporočila na poti uporabnikom brez povezave se izgubijo, če ta storitev ne deluje.
Izgubo sporočil lahko preprečimo tako, da podvojimo začasno shrambo vsakega uporabnika. Posledično se replika lahko uporabi za obdelavo funkcij, kadar koli se uporabnik vrne v splet. Če izvirni strežnik postane dostopen, se tako izvirnik kot kopija primerkov prehodnega pomnilnika uporabnika združita v eno samo shrambo.
6. Optimizacijske tehnike
Latenca: Za zagotavljanje brezhibne in izboljšane uporabniške izkušnje mora biti storitev sporočanja v realnem času. Posledično je treba zakasnitev zmanjšati s predpomnjenjem dela pogosto dostopanih podatkov. Stanje dejavnosti uporabnika in nedavne pogovore lahko predpomnimo v pomnilnik z uporabo porazdeljenega predpomnilnika, kot je Redis.
Na voljo: Potrebujemo, da je naša storitev na voljo večino časa. Naš sistem mora biti odporen na napake, zato lahko hranimo več kopij prehodnih sporočil, tako da je mogoče vsako izgubljeno sporočilo hitro obnoviti iz njegovih dvojnikov. Zaradi tega razpoložljivost sistema ne more biti ogrožena.
zaključek
Naš sistem zdaj podpira le nekaj zmogljivosti, vendar ga lahko preprosto razširimo in dodamo skupinske klepete za distribucijo sporočil več posameznikom. Omogočite lahko tudi video in telefonske klice. Ta sistem je mogoče razviti tudi tako, da lahko uporabniki objavljajo posodobitve stanja ali pripovedi in berejo drug drugega.
Trdo sem delal, da sem vam zagotovil pregled na visoki ravni zasnove sistema WhatsApp. Upam, da ste uživali in ga boste dobro uporabili.
Pustite Odgovori