Werrej[Aħbi][Uri]
WhatsApp huwa programm ta' messaġġi soċjali li jippermetti lill-utenti jiskambjaw messaġġi ma' xulxin.
Qatt ikkunsidrajt kif jaħdem WhatsApp?
X'inhuma l-kunċetti li jsostnu l-ħolqien u t-tħaddim tiegħu?
Dan l-artikolu se jmur fuq il-baŜi ta 'WhatsApp disinn tas-sistema.
Se ngħaddu wkoll mill-arkitettura ġenerali ta' WhatsApp, li tista' tintuża biex tibni kwalunkwe tip ta' softwer ta' chat.
Allura, mingħajr aktar dewmien, ejja nagħtu ħarsa lejn id-disinn tas-sistema ta 'WhatsApp!
1. Rekwiżiti Ewlenin
WhatsApp hija teknoloġija skalabbli ħafna li tintuża minn ħafna nies madwar id-dinja kollha. Bħala riżultat, għandu jkun iddisinjat tajjeb biex ikun prattikament dejjem affidabbli u jaħdem.
Bħala riżultat, id-determinazzjoni tal-ħtiġijiet kritiċi tas-sistema hija kritika.
Dawn huma r-rekwiżiti minimi għall-messaġġier WhatsApp:
- Kapaċi jiffaċilita l-interazzjonijiet one-on-one.
- Ir-rikonoxximent tal-messaġġ u l-aħħar li dehru huma t-tnejn possibbli (Mibgħut, Mwassla, u Aqra).
- Ippermetti encryption end-to-end u appoġġ tal-midja (immaġini/vidjows).
Ejja nsiru nafu kemm jeħtieġ is-servizz meħtieġ tagħna.
2. Stima tal-Kapaċità
L-għan tagħna huwa li noħolqu pjattaforma li kapaċi timmaniġġja ammont kbir ta’ traffiku. Assumi li jintbagħtu 10 biljun SMS kuljum. Għandna:
- Kull jum, 10 biljun SMS jintbagħtu minn biljun ruħ.
- Fl-ogħla traffiku (kull sekonda), 700,000 ruħ kienu attivi (6X medja)
- Waqt l-ogħla użu, jiġu trażmessi 40 miljun messaġġ kull sekonda.
- It-tul medju ta 'messaġġ huwa 160 karattru: 10B * 160 = 1.6TB ta' dejta hija ġġenerata kuljum.
- Ħu għaxar snin ta 'servizz bħala eżempju: 10 * 1.6B * 365 PB
- L-applikazzjoni kollha se tkun magħmula minn mikroservizzi, li kull wieħed minnhom se jesegwixxi kompitu speċjalizzat. Assumi li tibgħat messaġġ jieħu 20 millisekondi u li hemm 100 konnessjoni konkorrenti għal kull server. Bħala riżultat, in-numru antiċipat ta 'servers taċ-chat meħtieġa = (messaġġi taċ-chat kull sekonda Latency)/ konnessjonijiet konkorrenti għal kull server = 40M * 20ms / 100 = 8000 servers.
3. Arkitettura ta 'livell għoli
Din is-sistema hija mibnija fuq żewġ servizzi ewlenin. Servizz ta’ chat u servizz transitorju, pereżempju. Is-servizz taċ-chat jieħu ħsieb it-traffiku kollu ġġenerat mill-messaġġi onlajn tal-utenti. Fl-istess ħin, is-servizz temporanju jimmaniġġa t-traffiku meta l-utent ikun offline.
Jekk l-utent ikun online, is-servizz taċ-chat huwa inkarigat mit-twassil tal-messaġġi.
Se tivverifika jekk ir-riċevitur tal-messaġġ huwiex onlajn jew le; jekk ir-riċevitur ikun online, dan is-servizz iwassal il-messaġġ immedjatament; jekk ir-riċevitur ma jkunx onlajn, is-servizz transitorju jibgħatlu l-messaġġ meta jirritornaw online.
Is-servizz transitorju jżomm żona ta 'ħażna separata biex iżżomm data temporanjament aċċessibbli sakemm l-utent offline jerġa' jikkonnettja.
Disinn ta' APIs ta' Livell Għoli
Dan is-servizz għandu żewġ APIs li jaħdmu b'livell għoli biex jintbagħtu u jaqraw messaġġi. Is-sistema tista' tiġi implimentata bl-użu tal-arkitettura REST.
Parametri biex jintbagħtu messaġġi
Din l-API se tintuża biex tittrasmetti messaġġi bejn żewġ utenti.
Parametri tal-konversazzjoni
Din l-API tintuża biex turi chats bil-kamin. Ikkunsidra din l-ewwel ħaġa li tara meta tiftaħ WhatsApp. Nixtiequ biss niksbu ftit messaġġi għal utent wieħed f'mistoqsija API waħda. Biex timmaniġġja dan, huma meħtieġa l-parametri tal-offset u tal-għadd tal-messaġġi.
X'inhuma l-funzjonijiet tal-karatteristiċi bħall-aħħar li dehru, qurdien wieħed, u qurdien doppju?
Ir-rwol importanti fl-iskjerament ta' dawn is-servizzi huwa s-servizz ta' rikonoxximent. Dawn il-karatteristiċi ġew żviluppati peress li dan is-servizz ikompli jiġġenera u jivverifika tweġibiet ta’ rikonoxximent.
- Immarka unika: Meta messaġġ mill-Utent A jilħaq l-Utent B, is-server jibgħat qurdien wieħed li jirrikonoxxi li l-messaġġ ġie trażmess.
- Immarka doppju: Wara li l-messaġġ tas-server ikun intbagħat lill-Utent B permezz tal-konnessjoni xierqa, l-Utent B jirrikonoxxi li rċieva l-messaġġ lis-server. Is-server imbagħad jipprovdi lill-Utent A rikonoxximent ieħor. Bħala riżultat, se tidher qurdien duplikat.
- Immarka blu: L-utent B jibgħat rikonoxximent ieħor lis-server wara li jiċċekkja l-messaġġ. Is-server imbagħad jibgħat lill-Utent A messaġġ addizzjonali ta' rikonoxximent. Wara dan, se tidher qurdien blu fuq l-iskrin tal-Utent A.
- L-aħħar tidher: Il-mekkaniżmu tat-taħbit tal-qalb huwa kompletament responsabbli għall-aħħar karatteristika li deher. Kull 5 sekondi, taħbit tal-qalb jiġi trażmess lis-server, li jżomm rekord tal-istatus ta 'kull utent li deher l-aħħar f'tabella li tista' tiġi aċċessata faċilment minn kwalunkwe utent ieħor.
4. Iddisinjar ta 'karatteristiċi ewlenin
Interazzjoni personalizzata
Din hija parti meħtieġa mis-servizz taċ-Chat. Utent jista 'sempliċement jibgħat messaġġi lil utent ieħor billi juża dan is-servizz. Ejja nagħtu ħarsa lejn kif jaħdem dan:
Assumi li Jay irid jikkomunika ma' Aayush. Jay huwa marbut ma' chat server li miegħu jirċievi l-messaġġ. Jay jirċievi konferma mis-server taċ-chat li l-messaġġ intbagħat. Is-server taċ-chat issa qed jitlob informazzjoni mill-maħżen tad-dejta dwar is-server taċ-chat li miegħu huwa konness Aayush. Is-server taċ-chat ta' Jay issa jittrasmetti l-messaġġ lis-server taċ-chat ta' Aayush, u Aayush jirċievi l-messaġġ permezz ta' mekkaniżmu push. Aayush issa jibgħat rikonoxximent lis-server taċ-chat ta' Jay, li javża lil Jay li l-messaġġ ġie kkunsinnat. Jekk Aayush jaqra l-messaġġ mill-ġdid, rikonoxximent ġdid li l-messaġġ kien inqara ngħatat lil Jay.
Status tal-Attività tal-Utent
L-aħħar darba li persuna kienet attiva hija karatteristika regolari tal-messaġġiera instantanja.
F'din id-dijagramma tidher sistema biex tinżamm konnessjoni bejn il-klijent u s-server. Web sockets intużaw biex tiġi stabbilita konnessjoni bidirezzjonali bejn is-server u l-klijent. Dawn il-konnessjonijiet jibagħtu taħbit tal-qalb, li jintużaw biex jimmonitorjaw l-istatus tal-attività tal-utent.
Privatezza minn tarf sa tarf
Il-kriptaġġ minn tarf sa tarf huwa karatteristika ewlenija li tiżgura li l-utenti li jkunu qed jitkellmu biss jistgħu jaqraw il-komunikazzjonijiet. Ċavetta pubblika hija kondiviża fost l-utenti kollha involuti fil-komunikazzjoni u hija kritika biex isostni l-encryption End-to-End. Assumi li hemm żewġ utenti fuq il-kanal, Jay, u Aayush, li jikkomunikaw ma 'xulxin.
Jay għandu ċ-ċavetta pubblika ta' Aayush, u Aayush għandu ċ-ċavetta pubblika ta' Jay kif ukoll iċ-ċavetta privata mhux kondiviża tagħhom. Bħala riżultat, meta Jay jittrasmetti l-messaġġ, huwa jikkripta biċ-ċavetta pubblika ta 'Aayush, li tista' tiġi dekodifikata biss biċ-ċavetta privata ta 'Aayush.
Bl-istess mod, Jay se jkun jista 'biss jiddekodifika l-komunikazzjoni ta' Aayush. Bħala riżultat, Jay u Aaysuh biss se jkunu jistgħu jaraw il-komunikazzjonijiet ta 'xulxin, u s-server se jiffunzjona biss bħala portal fil-proċess kollu.
5. Bottlenecks
Kull sistema hija suxxettibbli għal ħsara. Biex jimmaniġġja volum daqshekk kbir ta’ traffiku, is-servizz irid jibqa’ operattiv u tolleranti għall-ħsarat il-ħin kollu biex jiġu evitati konġestjonijiet. Minħabba li s-servizz tagħna jiddependi għal kollox fuq is-servers Chat u Transient, irridu nsolvu l-kwistjonijiet kollha li jinqalgħu mit-tħaddim tagħhom.
Nuqqas tas-Chat Server: Din hija l-qalba tas-sistema tagħna. Meta l-utenti jkunu online, huwa responsabbli għall-ġestjoni u t-twassil tal-messaġġi. Bħala riżultat, din is-sistema żżomm rabtiet mal-utenti tagħha.
Bħala riżultat, jekk dan is-servizz ifalli, l-arkitettura kollha se tbati. Hemm żewġ approċċi għall-ġestjoni tal-falliment tas-server taċ-chat. Metodu wieħed huwa li tbiddel il-konnessjonijiet TCP għal server ieħor, filwaqt li ieħor huwa li jippermetti lill-utenti jibdew konnessjonijiet awtomatikament fil-każ ta 'telf ta' konnessjoni.
Nuqqas ta' Ħażna Transitorja: Komponent ieħor suxxettibbli għal falliment li eventwalment jista 'jagħmel ħsara lis-servizz kollu huwa ħażna temporanja. Messaġġi fi triqthom għal utenti offline jintilfu jekk dan is-servizz ifalli.
Nistgħu nipprevjenu t-telf tal-messaġġ billi nirreplikaw il-ħażna temporanja ta 'kull utent. Bħala riżultat, ir-replika tista' tintuża biex tipproċessa l-funzjonijiet kull meta l-utent jirritorna online. Jekk is-server oriġinali jsir aċċessibbli, kemm l-istanzi oriġinali kif ukoll dawk replika tal-ħażna transitorja tal-utent huma magħquda f'maħżen wieħed.
6. Tekniki ta 'ottimizzazzjoni
Latenza: Biex tagħti esperjenza tal-klijent bla xkiel u mtejba, is-servizz tal-messaġġier għandu jkun f'ħin reali. B'riżultat ta' dan, il-latenza trid titnaqqas billi tiġi kkaċċjata parti mid-dejta ta' spiss aċċessata. Nistgħu nżommu fil-cache l-istatus tal-attività tal-utent u l-konversazzjonijiet reċenti fil-memorja billi tuża cache distribwit bħal Redis.
disponibbiltà: Għandna bżonn li s-servizz tagħna jkun disponibbli l-maġġoranza tal-ħin. Is-sistema tagħna trid tkun tolleranti għall-ħsarat, għalhekk nistgħu nżommu diversi kopji ta 'messaġġi tranżitorji sabiex kwalunkwe messaġġ li jintilef ikun jista' jiġi rkuprat malajr mid-duplikati tiegħu. Bħala riżultat, id-disponibbiltà tas-sistema ma tistax tiġi pperikolata.
konklużjoni
Is-sistema tagħna issa tappoġġja biss ftit kapaċitajiet, iżda nistgħu faċilment nespanduha biex inżidu chats tal-grupp biex iqassmu messaġġi lil diversi individwi. Tista 'wkoll tipprovdi kapaċitajiet ta' vidjow u telefonati. Din is-sistema tista’ tiġi żviluppata wkoll b’tali mod li l-utenti jkunu jistgħu jippubblikaw aġġornamenti tal-istatus jew narrattivi u jaqraw lil xulxin.
Ħdimt ħafna biex nipprovdulek ħarsa ġenerali ta' livell għoli tad-disinn tas-sistema WhatsApp. Nispera li ħadt gost u se tagħmel użu tajjeb.
Ħalli Irrispondi