Kaundan[Itago][Ipakita]
Ang WhatsApp usa ka programa sa social messaging nga nagtugot sa mga tiggamit sa pagbayloay og mga mensahe sa usag usa.
Nakahunahuna ka na ba kung giunsa ang paglihok sa WhatsApp?
Unsa ang mga konsepto nga nagpaluyo sa paghimo ug operasyon niini?
Kini nga artikulo maghisgot sa mga sukaranan sa WhatsApp disenyo sa sistema.
Moagi usab kami sa kinatibuk-ang arkitektura sa WhatsApp, nga magamit sa paghimo sa bisan unsang klase sa software sa chat.
Mao nga, kung wala’y dugang nga ado, atong tan-awon ang disenyo sa sistema sa WhatsApp!
1. Pangunang mga Kinahanglanon
WhatsApp mao ang usa ka kaayo scalable teknolohiya nga gigamit sa daghang mga tawo sa tibuok kalibutan. Ingon usa ka sangputanan, kini kinahanglan nga maayong pagkadisenyo aron mahimong kanunay nga kasaligan ug molihok.
Ingon usa ka sangputanan, ang pagtino sa mga kritikal nga panginahanglanon sa sistema hinungdanon.
Kini ang mga minimum nga kinahanglanon alang sa WhatsApp messenger:
- Makahimo sa pagpadali sa usa-sa-usa nga interaksyon.
- Ang pag-ila sa mensahe ug katapusan nga nakita pareho nga posible (Gipadala, Gihatud, ug Gibasa).
- Tugoti ang end-to-end encryption ug suporta sa media (mga hulagway/video).
Atong hibal-an kung pila ka kapasidad ang gikinahanglan sa atong gikinahanglan nga serbisyo.
2. Pagbanabana sa Kapasidad
Ang among katuyoan mao ang paghimo og plataporma nga makahimo sa pagdumala sa daghang trapiko. Hunahunaa nga 10 bilyon nga SMS ang ipadala kada adlaw. Naa mi:
- Kada adlaw, 10 ka bilyong SMS ang ipadala sa usa ka bilyong tawo.
- Sa pinakataas nga trapiko (kada segundo), 700,000 ka tawo ang aktibo (6X average)
- Atol sa peak nga paggamit, 40 ka milyon nga mga mensahe ang gipasa kada segundo.
- Ang kasagarang gitas-on sa usa ka mensahe kay 160 ka karakter: 10B * 160 = 1.6TB sa datos ang mamugna kada adlaw.
- Gamita ang napulo ka tuig nga pagserbisyo isip usa ka pananglitan: 10 * 1.6B * 365 PB
- Ang tibuok nga aplikasyon himoong mga microservice, ang matag usa niini magpatuman sa usa ka espesyal nga buluhaton. Hunahunaa nga ang pagpadala og mensahe nagkinahanglan og 20 milliseconds ug adunay 100 ka dungan nga koneksyon kada server. Isip resulta, ang gipaabot nga gidaghanon sa mga chat server nga gikinahanglan = (chat messages kada segundo Latency)/ dungan nga koneksyon kada server = 40M * 20ms / 100 = 8000 server.
3. Hataas nga lebel nga arkitektura
Kini nga sistema gitukod sa duha ka kinauyokan nga serbisyo. Ang serbisyo sa chat ug serbisyo nga lumalabay, pananglitan. Ang serbisyo sa chat nagdumala sa tanan nga trapiko nga nahimo sa mga online nga mensahe sa mga tiggamit. Dungan, ang temporaryo nga serbisyo nagdumala sa trapiko kung offline ang gumagamit.
Kung online ang tiggamit, ang serbisyo sa chat ang nagdumala sa paghatud sa mga mensahe.
Kini magpamatuod kung ang nakadawat sa mensahe online o dili; kung ang nakadawat online, kini nga serbisyo maghatag dayon sa mensahe; kung ang nakadawat dili online, ang transisyonal nga serbisyo magpadala sa mensahe ngadto kanila kung sila mobalik online.
Ang lumalabay nga serbisyo nagtipig ug bulag nga storage area para sa pagpabiling temporaryo nga ma-access nga data hangtod nga ang offline nga user makonektar pag-usab.
Pagdesinyo sa mga High-Level API
Kini nga serbisyo adunay duha ka taas nga lebel nga naglihok nga mga API alang sa pagpadala ug pagbasa sa mga mensahe. Ang sistema mahimong ipatuman gamit ang REST nga arkitektura.
Parameter para sa pagpadala sa mga mensahe
Kini nga API gamiton sa pagpadala sa mga mensahe tali sa duha ka tiggamit.
Parameter sa panag-istoryahanay
Kini nga API gigamit sa pagpakita sa sinulid nga mga chat. Hunahunaa kini ang una nga butang nga imong makita kung imong giablihan ang WhatsApp. Gusto lang namo nga makakuha og pipila ka mga mensahe para sa usa ka user sa usa ka API query. Aron madumala kini, gikinahanglan ang mga parametro sa pag-offset ug pag-ihap sa mensahe.
Unsa ang mga gamit sa mga feature sama sa last seen, single tick, ug double tick?
Ang importante nga papel sa pagdeploy niini nga mga serbisyo mao ang serbisyo sa pag-ila. Kini nga mga bahin gihimo tungod kay kini nga serbisyo nagpadayon sa paghimo ug pag-verify sa mga tubag sa pag-ila.
- Nag-inusara nga tick: Kung ang usa ka mensahe gikan sa Gumagamit A makaabot sa Gumagamit B, ang server nagpadala usa ka marka nga nag-ila nga ang mensahe gipasa.
- Doble nga marka: Human mapadala ang mensahe sa server ngadto sa User B pinaagi sa hustong koneksyon, ang User B moila sa resibo sa mensahe ngadto sa server. Ang server unya maghatag sa Gumagamit A sa lain nga pag-ila. Ingon usa ka sangputanan, usa ka duplicate nga marka ang makita.
- bluetick: Ang User B magpadala ug laing pag-ila sa server human masusi ang mensahe. Ang server unya magpadala sa User A ug dugang nga mensahe sa pag-ila. Usa ka asul nga tsek ang makita sa screen sa User A pagkahuman niana.
- Last nakita: Ang mekanismo sa pagpitik sa kasingkasing hingpit nga responsable sa katapusan nga nakita nga bahin. Matag 5 segundos, usa ka heartbeat ang gipasa ngadto sa server, nga nagsubay sa katapusang nakita nga status sa matag user sa usa ka lamesa nga daling ma-access sa bisan kinsa nga user.
4. Pagdesinyo sa mahinungdanong mga bahin
Personal nga interaksyon
Kini usa ka kinahanglanon nga bahin sa serbisyo sa Chat. Ang usa ka user mahimo ra magpadala mga mensahe sa lain nga tiggamit gamit kini nga serbisyo. Atong tan-awon kung giunsa kini paglihok:
Hunahunaa nga gusto ni Jay nga makigsulti kang Aayush. Si Jay nalambigit sa usa ka chat server diin iyang nadawat ang mensahe. Si Jay nakadawat og kumpirmasyon gikan sa chat server nga ang mensahe gipadala. Ang chat server karon nangayo og impormasyon gikan sa data store mahitungod sa chat server diin ang Aayush konektado. Ang chat server ni Jay karon nagpadala sa mensahe ngadto sa chat server ni Aayush, ug nadawat ni Aayush ang mensahe pinaagi sa mekanismo sa pagduso. Nagpadala na karon si Aayush og pag-ila sa chat server ni Jay, nga nagpahibalo kang Jay nga nahatag na ang mensahe. Kung gibasa pag-usab ni Aayush ang mensahe, usa ka bag-ong pag-ila nga nabasa na ang mensahe gihatag kang Jay.
Status sa Kalihokan sa Gumagamit
Ang katapusang higayon nga aktibo ang usa ka tawo usa ka regular nga bahin sa mga instant messenger.
Ang usa ka sistema alang sa pagpadayon sa usa ka koneksyon tali sa kliyente ug sa server gihulagway sa kini nga diagram. Ang mga socket sa web gigamit aron magtukod usa ka bidirectional nga koneksyon tali sa server ug kliyente. Kini nga mga koneksyon nagpadala ug mga heartbeat, nga gigamit sa pagmonitor sa status sa kalihokan sa user.
Katapusan sa Katapusan nga Pagkapribado
Ang end-to-end encryption usa ka importanteng bahin nga nagsiguro nga ang nag-istoryahanay nga mga tiggamit lamang ang makabasa sa mga komunikasyon. Ang usa ka publiko nga yawe gipaambit sa tanan nga mga tiggamit nga nahilambigit sa komunikasyon ug hinungdanon aron mapadayon ang End-to-End encryption. Hunahunaa nga adunay duha ka tiggamit sa channel, si Jay, ug Aayush, nga nakigsulti sa usag usa.
Si Jay adunay pampubliko nga yawe ni Aayush, ug ang Aayush adunay publikong yawe ni Jay ingon man ang ilang dili gipaambit nga pribadong yawe. Ingon usa ka sangputanan, kung gipadala ni Jay ang mensahe, gi-encrypt niya kini sa publiko nga yawe ni Aayush, nga mahimo ra ma-decode gamit ang pribadong yawe ni Aayush.
Sa susama, ma-decode lang ni Jay ang komunikasyon ni Aayush. Ingon usa ka sangputanan, si Jay ug Aaysuh ra ang makakita sa komunikasyon sa usag usa, ug ang server molihok ra ingon usa ka ganghaan sa tibuuk nga proseso.
5. Mga bottleneck
Ang matag sistema mao ang prone sa malfunction. Aron madumala ang ingon ka dako nga gidaghanon sa trapiko, ang serbisyo kinahanglan nga magpabilin nga naglihok ug dili matugot sa sayup sa tanan nga oras aron malikayan ang mga bottleneck. Tungod kay ang among serbisyo hingpit nga nagsalig sa Chat ug Transient server, kinahanglan namon nga sulbaron ang tanan nga mga isyu nga motumaw sa ilang operasyon.
Pagkapakyas sa Chat Server: Kini ang kasingkasing sa atong sistema. Kung online ang mga tiggamit, responsable kini sa pagdumala ug paghatud sa mga mensahe. Ingon usa ka sangputanan, kini nga sistema nagpadayon sa mga link sa mga tiggamit niini.
Ingon usa ka sangputanan, kung kini nga serbisyo mapakyas, ang tibuuk nga arkitektura mag-antus. Adunay duha ka mga pamaagi sa pagdumala sa kapakyasan sa chat server. Ang usa ka paagi mao ang pagbalhin sa mga koneksyon sa TCP ngadto sa lain nga server, samtang ang usa mao ang pagtugot sa mga tiggamit sa pagsugod sa mga koneksyon nga awtomatiko kung adunay pagkawala sa koneksyon.
Pagkapakyas sa Lumalabay nga Pagtipig: Ang laing component nga prone sa kapakyasan nga sa ngadtongadto makadaot sa tibuok serbisyo mao ang lumalabay nga pagtipig. Ang mga mensahe padulong sa mga offline nga tiggamit mawala kung kini nga serbisyo mapakyas.
Atong mapugngan ang pagkawala sa mensahe pinaagi sa pagkopya sa temporaryo nga pagtipig sa matag user. Ingon usa ka sangputanan, ang replika mahimong magamit aron maproseso ang mga gimbuhaton kung ang tiggamit mobalik online. Kung ang orihinal nga server mahimong ma-access, ang orihinal ug replika nga mga higayon sa temporaryo nga pagtipig sa tiggamit gihiusa sa usa ka tindahan.
6. Mga teknik sa pag-optimize
Kalihokan: Aron mahatagan ang usa ka hapsay ug gipaayo nga kasinatian sa kliyente, ang serbisyo sa mensahero kinahanglan nga tinuod nga oras. Ingon usa ka sangputanan, ang latency kinahanglan nga mapakunhod pinaagi sa pag-cache sa bahin sa kanunay nga gi-access nga datos. Mahimo natong i-cache ang status sa kalihokan sa user ug ang bag-ong mga panag-istoryahanay sa memorya gamit ang usa ka gipang-apod-apod nga cache sama sa Redis.
Zimmerbelegungsplan: Kinahanglan namon ang among serbisyo nga magamit sa kadaghanan sa oras. Ang atong sistema kinahanglan nga matugoton sa sayop, sa ingon makatipig kita og daghang mga kopya sa lumalabay nga mga mensahe aron ang bisan unsang mensahe nga nawala dali nga mabawi gikan sa mga duplicate niini. Ingon usa ka sangputanan, ang pagkaanaa sa sistema dili mabutang sa peligro.
Panapos
Ang among sistema karon nagsuporta lamang sa pipila ka mga kapabilidad, apan dali namong mapalapad kini aron makadugang sa mga chat sa grupo aron sa pag-apod-apod sa mga mensahe ngadto sa daghang mga indibidwal. Makahatag ka usab og mga kapabilidad sa video ug tawag sa telepono. Kini nga sistema mahimo usab nga mapalambo aron ang mga tiggamit makamantala sa mga update sa status o mga asoy ug magbasa sa usag usa.
Nagtrabaho ako pag-ayo aron mahatagan ka usa ka taas nga lebel nga pagtan-aw sa disenyo sa sistema sa WhatsApp. Nanghinaut ko nga nalingaw ka niini ug magamit kini sa maayo.
Leave sa usa ka Reply