Tabl Cynnwys[Cuddio][Dangos]
Mae WhatsApp yn rhaglen negeseuon cymdeithasol sy'n caniatáu i ddefnyddwyr gyfnewid negeseuon â'i gilydd.
Ydych chi erioed wedi ystyried sut mae WhatsApp yn gweithio?
Beth yw'r cysyniadau sy'n sail i'w greadigaeth a'i weithrediad?
Bydd yr erthygl hon yn mynd dros hanfodion WhatsApp dylunio system.
Byddwn hefyd yn mynd trwy bensaernïaeth gyffredinol WhatsApp, y gellir ei ddefnyddio i adeiladu unrhyw fath o feddalwedd sgwrsio.
Felly, heb ragor o wybodaeth, gadewch i ni edrych ar ddyluniad system WhatsApp!
1. Gofynion Allweddol
Mae WhatsApp yn dechnoleg hynod raddadwy a ddefnyddir gan lawer o bobl ledled y byd. O ganlyniad, dylai fod wedi'i ddylunio'n dda i fod bron bob amser yn ddibynadwy ac yn gweithredu.
O ganlyniad, mae pennu anghenion hanfodol y system yn hollbwysig.
Dyma'r gofynion sylfaenol ar gyfer y negesydd WhatsApp:
- Gallu hwyluso rhyngweithiadau un-i-un.
- Mae'n bosibl cydnabod neges a'r rhai a welwyd ddiwethaf (Anfonwyd, Dosbarthwyd, a Darllenwyd).
- Caniatáu amgryptio o'r dechrau i'r diwedd a chymorth cyfryngau (delweddau/fideos).
Dewch i ni ddarganfod faint o gapasiti sydd ei angen ar ein gwasanaeth angenrheidiol.
2. Amcangyfrif Gallu
Ein nod yw creu platfform sy'n gallu trin llawer iawn o draffig. Cymryd yn ganiataol bod 10 biliwn SMS yn cael eu hanfon y dydd. Mae gennym:
- Bob dydd, anfonir 10 biliwn SMS gan biliwn o bobl.
- Ar y traffig brig (yr eiliad), roedd 700,000 o bobl yn actif (cyfartaledd 6X)
- Yn ystod defnydd brig, trosglwyddir 40 miliwn o negeseuon yr eiliad.
- Hyd cyfartalog neges yw 160 nod: 10B * 160 = 1.6TB o ddata yn cael ei gynhyrchu bob dydd.
- Cymerwch ddeng mlynedd o wasanaeth fel enghraifft: 10 * 1.6B * 365 PB
- Bydd y cais cyfan yn cynnwys microwasanaethau, a bydd pob un ohonynt yn cyflawni tasg arbenigol. Cymerwch fod anfon neges yn cymryd 20 milieiliad a bod 100 o gysylltiadau cydamserol fesul gweinydd. O ganlyniad, y nifer a ragwelir o weinyddion sgwrsio gofynnol = (negeseuon sgwrsio yr eiliad Cudd)/ cysylltiadau cydamserol fesul gweinydd = 40M * 20ms / 100 = 8000 gweinydd.
3. Pensaernïaeth lefel uchel
Mae'r system hon wedi'i hadeiladu ar ddau wasanaeth craidd. Gwasanaeth sgwrsio a gwasanaeth dros dro, er enghraifft. Mae'r gwasanaeth sgwrsio yn delio â'r holl draffig a gynhyrchir gan negeseuon ar-lein defnyddwyr. Ar yr un pryd, mae'r gwasanaeth dros dro yn delio â thraffig pan fydd y defnyddiwr all-lein.
Os yw'r defnyddiwr ar-lein, y gwasanaeth sgwrsio sy'n gyfrifol am ddosbarthu negeseuon.
Bydd yn gwirio a yw derbynnydd y neges ar-lein ai peidio; os yw'r derbynnydd ar-lein, bydd y gwasanaeth hwn yn cyflwyno'r neges ar unwaith; os nad yw'r derbynnydd ar-lein, bydd y gwasanaeth dros dro yn anfon y neges ato pan fydd yn dychwelyd ar-lein.
Mae'r gwasanaeth dros dro yn cadw ardal storio ar wahân ar gyfer cadw data hygyrch dros dro nes bod y defnyddiwr all-lein yn ailgysylltu.
Dylunio APIs Lefel Uchel
Mae gan y gwasanaeth hwn ddau API gweithredol lefel uchel ar gyfer anfon a darllen negeseuon. Gellir gweithredu'r system gan ddefnyddio pensaernïaeth REST.
Paramedrau ar gyfer anfon negeseuon
Bydd yr API hwn yn cael ei ddefnyddio i drosglwyddo negeseuon rhwng dau ddefnyddiwr.
Paramedrau sgwrs
Defnyddir yr API hwn i arddangos sgyrsiau mewn edafedd. Ystyriwch mai dyma'r peth cyntaf a welwch pan fyddwch chi'n agor WhatsApp. Dim ond ychydig o negeseuon ar gyfer un defnyddiwr y byddem am eu cael mewn un ymholiad API. Er mwyn delio â hyn, mae angen y paramedrau gwrthbwyso a chyfrif negeseuon.
Beth yw swyddogaethau nodweddion fel y gwelwyd ddiwethaf, tic sengl, a thic dwbl?
Y rôl bwysig wrth ddefnyddio'r gwasanaethau hyn yw'r gwasanaeth cydnabod. Datblygwyd y nodweddion hyn gan fod y gwasanaeth hwn yn parhau i gynhyrchu a dilysu atebion cydnabod.
- Tic sengl: Pan fydd neges gan Ddefnyddiwr A yn cyrraedd Defnyddiwr B, mae'r gweinydd yn anfon tic unigol yn cydnabod bod y neges wedi'i throsglwyddo.
- Tic dwbl: Ar ôl i neges y gweinydd gael ei anfon at Ddefnyddiwr B trwy'r cysylltiad cywir, bydd Defnyddiwr B yn cydnabod derbyn y neges i'r gweinydd. Bydd y gweinydd wedyn yn rhoi cydnabyddiaeth arall i Ddefnyddiwr A. O ganlyniad, bydd tic dyblyg yn ymddangos.
- Tic glas: Bydd defnyddiwr B yn anfon cydnabyddiaeth arall i'r gweinydd ar ôl gwirio'r neges. Yna bydd y gweinydd yn anfon neges gydnabod ychwanegol at Ddefnyddiwr A. Bydd tic glas yn ymddangos ar sgrin Defnyddiwr A ar ôl hynny.
- Welwyd ddiwethaf: Mae mecanwaith curiad y galon yn gwbl gyfrifol am y nodwedd a welwyd ddiwethaf. Bob 5 eiliad, trosglwyddir curiad calon i'r gweinydd, sy'n cadw golwg ar statws pob defnyddiwr a welwyd ddiwethaf mewn tabl y gall unrhyw ddefnyddiwr arall ei gyrchu'n rhwydd.
4. Dylunio nodweddion allweddol
Rhyngweithio wedi'i bersonoli
Mae hyn yn rhan angenrheidiol o'r gwasanaeth Sgwrsio. Yn syml, gall defnyddiwr anfon negeseuon at ddefnyddiwr arall gan ddefnyddio'r gwasanaeth hwn. Gadewch i ni edrych ar sut mae hyn yn gweithio:
Cymerwch fod Jay eisiau cyfathrebu ag Aayush. Mae Jay wedi'i gysylltu â gweinydd sgwrsio y mae'n derbyn y neges ag ef. Mae Jay yn derbyn cadarnhad gan y gweinydd sgwrsio bod y neges wedi'i hanfon. Mae'r gweinydd sgwrsio nawr yn gofyn am wybodaeth o'r storfa ddata am y gweinydd sgwrsio y mae Aayush wedi'i gysylltu ag ef. Mae gweinydd sgwrsio Jay bellach yn trosglwyddo'r neges i weinydd sgwrsio Aayush, ac mae Aayush yn derbyn y neges trwy fecanwaith gwthio. Mae Aayush nawr yn anfon cydnabyddiaeth at weinydd sgwrsio Jay, sy'n hysbysu Jay bod y neges wedi'i danfon. Pe bai Aayush yn darllen y neges eto, rhoddwyd cydnabyddiaeth newydd i Jay fod y neges wedi'i darllen.
Statws Gweithgarwch Defnyddiwr
Mae'r tro diwethaf i berson fod yn egnïol yn nodwedd reolaidd o negeswyr gwib.
Mae system ar gyfer cynnal cysylltiad rhwng y cleient a'r gweinydd yn cael ei darlunio yn y diagram hwn. Defnyddiwyd socedi gwe i sefydlu cysylltiad deugyfeiriadol rhwng y gweinydd a'r cleient. Mae'r cysylltiadau hyn yn anfon curiadau calon, a ddefnyddir i fonitro statws gweithgaredd y defnyddiwr.
Preifatrwydd o'r dechrau i'r diwedd
Mae amgryptio o un pen i'r llall yn nodwedd allweddol sy'n sicrhau mai dim ond y defnyddwyr sy'n sgwrsio sy'n gallu darllen y cyfathrebiadau. Rhennir allwedd gyhoeddus ymhlith yr holl ddefnyddwyr sy'n ymwneud â'r cyfathrebu ac mae'n hanfodol i gynnal amgryptio o'r Dechrau i'r Diwedd. Tybiwch fod dau ddefnyddiwr ar y sianel, Jay, ac Aayush, sy'n cyfathrebu â'i gilydd.
Mae gan Jay allwedd gyhoeddus Aayush, ac mae gan Aayush allwedd gyhoeddus Jay yn ogystal â'i allwedd breifat nad yw'n cael ei rhannu. O ganlyniad, pan fydd Jay yn trosglwyddo'r neges, mae'n ei amgryptio gydag allwedd gyhoeddus Aayush, y gellir ei ddatgodio ag allwedd breifat Aayush yn unig.
Yn yr un modd, bydd Jay ond yn gallu dadgodio cyfathrebiad Aayush. O ganlyniad, dim ond Jay ac Aaysuh fydd yn gallu gweld cyfathrebiadau ei gilydd, a bydd y gweinydd yn gweithredu fel porth yn y broses gyfan yn unig.
5. tagfeydd
Mae pob system yn dueddol o gamweithio. Er mwyn rheoli cymaint o draffig, mae'n rhaid i'r gwasanaeth aros yn weithredol ac yn gallu goddef diffygion bob amser er mwyn osgoi tagfeydd. Oherwydd bod ein gwasanaeth yn gwbl ddibynnol ar weinyddion Chat a Transient, rhaid inni ddatrys yr holl faterion sy'n codi o'u gweithrediad.
Methiant y Gweinydd Sgwrsio: Dyma galon ein cyfundrefn. Pan fydd defnyddwyr ar-lein, mae'n gyfrifol am reoli a chyflwyno negeseuon. O ganlyniad, mae'r system hon yn cynnal cysylltiadau â'i defnyddwyr.
O ganlyniad, os bydd y gwasanaeth hwn yn methu, bydd y bensaernïaeth gyfan yn dioddef. Mae dau ddull o reoli methiant y gweinydd sgwrsio. Un dull yw symud cysylltiadau TCP i weinydd arall, tra bod un arall yn caniatáu i ddefnyddwyr ddechrau cysylltiadau yn awtomatig os bydd cysylltiad yn cael ei golli.
Methiant Storio Dros Dro: Cydran arall sy'n dueddol o fethu a allai niweidio'r gwasanaeth cyfan yn y pen draw yw storio dros dro. Mae negeseuon ar y ffordd i ddefnyddwyr all-lein yn cael eu colli os bydd y gwasanaeth hwn yn methu.
Gallwn atal colli neges trwy ddyblygu storfa dros dro pob defnyddiwr. O ganlyniad, gellir defnyddio'r replica i brosesu'r swyddogaethau pryd bynnag y bydd y defnyddiwr yn dychwelyd ar-lein. Os daw'r gweinydd gwreiddiol yn hygyrch, cyfunir yr enghreifftiau gwreiddiol a'r atgynhyrchiadau o storfa dros dro y defnyddiwr yn un storfa.
6. Technegau optimeiddio
latency: Er mwyn darparu profiad cleient di-dor a gwell, rhaid i'r gwasanaeth negesydd fod yn amser real. O ganlyniad, rhaid lleihau hwyrni trwy gadw rhan o'r data a gyrchir yn aml. Gallwn storio statws gweithgaredd defnyddwyr a sgyrsiau diweddar yn y cof gan ddefnyddio storfa ddosbarthedig fel Redis.
argaeledd: Mae angen i'n gwasanaeth fod ar gael y rhan fwyaf o'r amser. Rhaid i'n system fod yn oddefgar o fai, felly gallwn gadw sawl copi o negeseuon dros dro fel y gellir adennill unrhyw neges a gollir yn gyflym o'i dyblygu. O ganlyniad, ni ellir peryglu argaeledd y system.
Casgliad
Dim ond ychydig o alluoedd y mae ein system bellach yn eu cefnogi, ond gallwn ei ehangu'n hawdd i ychwanegu sgyrsiau grŵp i ddosbarthu negeseuon i sawl unigolyn. Gallwch hefyd ddarparu galluoedd fideo a galwadau ffôn. Gellir datblygu'r system hon hefyd fel bod defnyddwyr yn gallu cyhoeddi diweddariadau statws neu naratifau a darllen ei gilydd.
Gweithiais yn galed i roi trosolwg lefel uchel i chi o ddyluniad system WhatsApp. Gobeithio eich bod wedi ei fwynhau ac y byddwch yn gwneud defnydd da ohono.
Gadael ymateb