Zviri Mukati[Viga][Ratidza]
WhatsApp chirongwa chekutumira mameseji chinobvumira vashandisi kuchinjana mameseji nemumwe.
Makambofunga here kuti WhatsApp inoshanda sei?
Ndedzipi pfungwa dzinotsigira kusikwa kwayo uye kushanda kwayo?
Ichi chinyorwa chichaenda pamusoro pezvakakosha zveWhatsApp dhizaini yehurongwa.
Isu tichaenda zvakare kuburikidza neWhatsApp's general architecture, inogona kushandiswa kuvaka chero mhando yechat software.
Saka, pasina imwezve ado, ngatitarisei paWhatsApp's system dhizaini!
1. Zvinodiwa Zvikuru
WhatsApp ndiyo yakanyanya scalable tekinoroji inoshandiswa nevanhu vazhinji pasi rese. Nekuda kweizvozvo, inofanirwa kuve yakagadzirwa zvakanaka kuti igare yakavimbika uye inoshanda.
Nekuda kweizvozvo, kuona zvinodikanwa zvehurongwa zvakakosha.
Izvi ndizvo zvidiki zvinodiwa kune WhatsApp messenger:
- Kukwanisa kufambisa kudyidzana kwe-one-one.
- Mvumo yemeseji uye yekupedzisira kuonekwa zvese zvinogoneka (Kutumirwa, Kuendeswa, uye Kuverenga).
- Bvumira kumagumo-kusvika-kumagumo encryption uye midhiya tsigiro (mifananidzo/mavhidhiyo).
Ngationei kuti yakawanda sei basa redu rinodikanwa rinoda.
2. Estimating Capacity
Chinangwa chedu ndechekugadzira chikuva chinokwanisa kubata huwandu hukuru hwetraffic. Fungidzira kuti mabhiriyoni gumi eSMS anotumirwa pazuva. Tine:
- Zuva rega rega, mabhiriyoni gumi eSMS anotumirwa nevanhu bhiriyoni.
- Peak traffic (pasekondi), 700,000 vanhu vaive vachishanda (6X avhareji)
- Munguva yekushandiswa kwepamusoro, mamirioni makumi mana meseji anofambiswa pasekondi.
- Avhareji yehurefu hwemeseji ndeye 160 mavara: 10B * 160 = 1.6TB yedata inogadzirwa zuva rega rega.
- Tora makore gumi ebasa semuenzaniso: 10 * 1.6B * 365 PB
- Iyo yese application ichave yakagadzirwa ne microservices, imwe neimwe ichaita basa rakasarudzika. Fungidzira kuti kutumira meseji kunotora makumi maviri milliseconds uye kuti kune zana anobatana pasevha. Nekuda kweizvozvo, iyo inotarisirwa nhamba yemasevha ekutaura anodiwa = (mameseji ekutaura pasekondi Latency) / kuwirirana kwakafanana pane server = 20M * 100ms / 40 = 20 maseva.
3. Chivakwa chepamusoro-soro
Iyi sisitimu yakavakirwa pamasevhisi maviri makuru. Chat service uye transitory sevhisi, semuenzaniso. Iyo chat sevhisi inobata yese traffic inogadzirwa nevashandisi'mameseji epamhepo. Panguva imwe chete, sevhisi yenguva pfupi inobata traffic kana mushandisi asiri pamhepo.
Kana mushandisi ari online, sevhisi yekutaura ndiyo ine basa rekutumira mameseji.
Ichaona kuti arikugamuchira meseji ari online here kana kuti kwete; kana anogamuchira ari online, sevhisi iyi inoendesa meseji nekukurumidza; kana mugamuchiri asiri pamhepo, sevhisi inotenderera inotumira meseji kwavari kana vadzoka online.
Sevhisi yekufambisa inochengeta nzvimbo yekuchengetera yakaparadzana yekuchengetedza data kwenguva pfupi kusvika mushandisi wekunze abatanazve.
Kugadzira High-Level APIs
Iyi sevhisi ine maviri epamusoro-level anoshanda maAPI ekutumira nekuverenga mameseji. Iyo sisitimu inogona kuitwa uchishandisa iyo REST architecture.
Parameters yekutumira mameseji
Iyi API ichashandiswa kutumira mameseji pakati pevashandisi vaviri.
Parameters yekukurukurirana
API iyi inoshandiswa kuratidza chats dzine thread. Funga ichi chinhu chekutanga chaunoona paunovhura WhatsApp. Tinongoda kuwana mameseji mashoma emushandisi mumwechete mune imwechete API query. Kuti uite izvi, iyo yekubvisa uye meseji kuverenga paramita inodiwa.
Ndeapi mabasa ezvimiro zvakaita sekupedzisira kuonekwa, chikwekwe chimwe chete, uye chikwekwe kaviri?
Basa rakakosha mukufambiswa kwesevhisi ibasa rekubvuma. Aya maficha akagadziridzwa sezvo sevhisi iyi ichiri kuramba ichigadzira uye nekuona mhinduro dzekubvuma.
- Kunyepa+
- Tiki kaviri: Mushure mesevha yemeseji yatumirwa kuMushandisi B kuburikidza nekubatanidza kwakaringana, Mushandisi B anobvuma kugamuchira meseji kune server. Sevha inozopa Mushandisi A kumwe kubvuma. Nekuda kweizvozvo, chikwekwe chakafanana chichaonekwa.
- Blue tick: Mushandisi B anotumira kumwe kubvuma kune server mushure mekutarisa meseji. Sevha inozotumira Mushandisi A imwe meseji yekubvuma. Tiki yebhuruu ichaonekwa pachiratidziro cheMushandisi A mushure meizvozvo.
- Takapedzisira kuonekwa: The heartbeat mechanism ine chekuita nekupedzisira kuonekwa. Masekonzi mashanu ega ega, kurova kwemoyo kunoendeswa kune sevha, iyo inocherechedza mamiriro ekupedzisira emushandisi anoonekwa patafura inogona kuwanikwa nyore nyore nemumwe mushandisi.
4. Kugadzira zvinhu zvakakosha
Kudyidzana kwakasarudzika
Ichi chikamu chinodiwa cheChat service. Mushandisi anogona kungotumira meseji kune mumwe mushandisi achishandisa iyi sevhisi. Ngationei kuti izvi zvinoshanda sei:
Funga kuti Jay anoda kutaurirana naAayush. Jay akabatana nechat server yaanogamuchira nayo meseji. Jay anogamuchira simbiso kubva kune chat server kuti meseji yakatumirwa. Iyo chat server yave kukumbira ruzivo kubva kuchitoro chedata nezve chat server iyo Aayush yakabatana nayo. Jay's chat server ikozvino inotumira meseji kuAayush's chat server, uye Aayush inogamuchira meseji kuburikidza neanosundidzira. Aayush ikozvino inotumira kubvuma kune chat server yaJay, iyo inozivisa Jay kuti meseji yaunzwa. Kana Aayush akaverenga meseji zvakare, kubvuma kutsva kuti meseji yanga yaverengwa yakaunzwa kuna Jay.
Mamiriro Ekuita Mushandisi
Nguva yekupedzisira apo munhu akashanda chinhu chenguva dzose chenhume dzepakarepo.
Iyo sisitimu yekuchengetedza hukama pakati pemutengi neseva inoratidzwa mumufananidzo uyu. Zvigadziko zvewebhu zvakashandiswa kumisikidza bidirectional yekubatanidza pakati pesevha nemutengi. Izvi zvinongedzo zvinotumira kurova kwemoyo, izvo zvinoshandiswa kutarisa mamiriro ekuita kwemushandisi.
End-to-End Privacy
Kupera-kusvika-kumagumo encryption chinhu chakakosha chinovimbisa kuti chete vashandisi vanokurukura vanogona kuverenga kutaurirana. Kiyi yeruzhinji inogovaniswa pakati pevashandisi vese vanobatanidzwa mukutaurirana uye yakakosha kuchengetedza End-to-End encryption. Fungidzira kuti kune vashandisi vaviri pachiteshi, Jay, naAayush, vanotaurirana.
Jay ane kiyi yeruzhinji yeAayush, uye Aayush ane kiyi yeruzhinji yaJay pamwe nekiyi yavo yakavanzika isina kugovaniswa. Nekuda kweizvozvo, kana Jay atumira meseji, anoinyora nekiyi yeruzhinji yeAayush, iyo inogona kungogadziriswa nekiyi yakavanzika yeAayush.
Saizvozvo, Jay anozongokwanisa kudzora kutaurirana kwaAayush. Nekuda kweizvozvo, Jay naAaysuh chete ndivo vachakwanisa kuona kutaurirana kweumwe neumwe, uye sevha inongoshanda segedhi mukuita kwese.
5. Mabhodhoro
Yese sisitimu inokanganisa kushanda zvakanaka. Kugadzirisa huwandu hwakakura hwetraffic, sevhisi inofanirwa kugara ichishanda uye inoshivirira kukanganisa nguva dzese kudzivirira mabhodhoro. Nekuti sevhisi yedu inotsamira chose paChat uye Transient maseva, isu tinofanirwa kugadzirisa zvese zvinomuka kubva mukushanda kwavo.
Kutadza kweChat Server: Uyu ndiwo moyo wehurongwa hwedu. Kana vashandisi vari online, ine basa rekutonga uye kutumira mameseji. Nekuda kweizvozvo, iyi sisitimu inochengetedza hukama nevashandisi vayo.
Nekuda kweizvozvo, kana sevhisi iyi ikatadza, dhizaini yese ichatambura. Pane nzira mbiri dzekugadzirisa kutadza kweiyo chat server. Imwe nzira ndeyekuchinja TCP yekubatanidza kune imwe sevha, nepo imwe ndeye kubvumira vashandisi kuti vatange kusanganisa otomatiki kana paine kurasikirwa kwekubatanidza.
Kutadza Kuchengeta Kwenguva pfupi: Chimwe chikamu chinowanzotadza kutadza chinogona kupedzisira chakuvadza sevhisi yese ndeyekuchengetedza kwenguva pfupi. Mameseji ari munzira kuenda kuvashandisi vepamhepo anorasika kana sevhisi iyi ikatadza.
Tinogona kudzivirira kurasikirwa kwemeseji nekudzokorora chengetedzo yenguva pfupi yemushandisi. Nekuda kweizvozvo, iyo replica inogona kushandiswa kugadzirisa mabasa pese kana mushandisi adzoka online. Kana sevha yepakutanga ikasvika, zvese zvekutanga uye zvekare zvekare zvekuchengetedza kwemushandisi zvinosanganiswa kuita chitoro chimwe chete.
6. Optimization maitiro
Latency: Kuunza isina musono uye yakagadziridzwa mutengi ruzivo, iyo messenger sevhisi inofanirwa kunge iri chaiyo-nguva. Nekuda kweizvozvo, latency inofanirwa kudzikiswa necaching chikamu cheanowanzo kuwanikwa data. Isu tinokwanisa cache chiitiko chemushandisi uye nhaurirano dzichangoburwa mundangariro tichishandisa cache yakagoverwa seRedis.
kuwanikwa: Tinoda kuti sevhisi yedu iwanikwe nguva zhinji. Sisitimu yedu inofanirwa kuve inoshivirira kukanganisa, nekudaro tinokwanisa kuchengeta akati wandei mameseji enguva pfupi kuitira kuti chero meseji yakarasika igone kudzoserwa kubva kune zvakapetwa. Nekuda kweizvozvo, kuwanikwa kwehurongwa hakugone kukanganisa.
mhedziso
Sisitimu yedu ikozvino inotsigira mashoma mashoma, asi isu tinokwanisa kuiwedzera zviri nyore kuwedzera chats dzeboka kugovera mameseji kune akati wandei. Iwe unogona zvakare kupa vhidhiyo uye mafoni ekufona. Iyi sisitimu inogona zvakare kugadzirwa zvekuti vashandisi vanokwanisa kuburitsa mamiriro ekugadzirisa kana nganonyorwa uye kuverengana.
Ndakashanda nesimba kuti ndikupe iyo yepamusoro-yepamusoro dhizaini yeWhatsApp system dhizaini. Ndinovimba wakanakidzwa nazvo uye uchazvishandisa zvakanaka.
Leave a Reply