విషయ సూచిక[దాచు][చూపండి]
WhatsApp అనేది ఒక సోషల్ మెసేజింగ్ ప్రోగ్రామ్, ఇది వినియోగదారులు ఒకరితో ఒకరు సందేశాలను మార్పిడి చేసుకోవడానికి అనుమతిస్తుంది.
WhatsApp ఎలా పని చేస్తుందో మీరు ఎప్పుడైనా ఆలోచించారా?
దాని సృష్టి మరియు కార్యాచరణకు ఆధారమైన భావనలు ఏమిటి?
ఈ కథనం వాట్సాప్ యొక్క ప్రాథమిక విషయాలపై ఉంటుంది వ్యవస్థ రూపకల్పన.
మేము WhatsApp యొక్క సాధారణ నిర్మాణాన్ని కూడా పరిశీలిస్తాము, ఇది ఎలాంటి చాట్ సాఫ్ట్వేర్ను రూపొందించడానికి ఉపయోగించబడుతుంది.
కాబట్టి, మరింత ఆలస్యం లేకుండా, WhatsApp యొక్క సిస్టమ్ డిజైన్ను చూద్దాం!
1. కీలక అవసరాలు
WhatsApp అనేది ప్రపంచవ్యాప్తంగా చాలా మంది ఉపయోగించే అత్యంత కొలవగల సాంకేతికత. ఫలితంగా, ఇది వాస్తవంగా ఎల్లప్పుడూ ఆధారపడేలా మరియు పని చేసేలా బాగా డిజైన్ చేయబడాలి.
ఫలితంగా, సిస్టమ్ యొక్క క్లిష్టమైన అవసరాలను నిర్ణయించడం చాలా కీలకం.
వాట్సాప్ మెసెంజర్ కోసం ఇవి కనీస అవసరాలు:
- ఒకరితో ఒకరు పరస్పర చర్యలను సులభతరం చేయగల సామర్థ్యం.
- సందేశ రసీదు మరియు చివరిగా చూసినవి రెండూ సాధ్యమే (పంపినవి, బట్వాడా చేయబడినవి మరియు చదవబడినవి).
- ఎండ్-టు-ఎండ్ ఎన్క్రిప్షన్ మరియు మీడియా సపోర్ట్ను అనుమతించండి (చిత్రాలు/వీడియోలు).
మా అవసరమైన సేవకు ఎంత సామర్థ్యం అవసరమో తెలుసుకుందాం.
2. కెపాసిటీని అంచనా వేయడం
పెద్ద మొత్తంలో ట్రాఫిక్ను నిర్వహించగలిగే ప్లాట్ఫారమ్ను రూపొందించడం మా లక్ష్యం. రోజుకు 10 బిలియన్ SMSలు పంపబడుతున్నాయని ఊహించండి. మేము కలిగి ఉన్నాము:
- ప్రతి రోజు, 10 బిలియన్ల SMSలను ఒక బిలియన్ మంది ప్రజలు పంపుతున్నారు.
- పీక్ ట్రాఫిక్లో (సెకనుకు), 700,000 మంది వ్యక్తులు చురుకుగా ఉన్నారు (6X సగటు)
- అత్యధిక వినియోగం సమయంలో, సెకనుకు 40 మిలియన్ సందేశాలు ప్రసారం చేయబడతాయి.
- సందేశం యొక్క సగటు పొడవు 160 అక్షరాలు: 10B * 160 = 1.6TB డేటా ప్రతి రోజు ఉత్పత్తి చేయబడుతుంది.
- పదేళ్ల సేవను ఉదాహరణగా తీసుకోండి: 10 * 1.6B * 365 PB
- మొత్తం అప్లికేషన్ మైక్రోసర్వీస్తో రూపొందించబడుతుంది, వీటిలో ప్రతి ఒక్కటి ప్రత్యేకమైన పనిని అమలు చేస్తుంది. సందేశాన్ని పంపడానికి 20 మిల్లీసెకన్లు పడుతుందని మరియు ప్రతి సర్వర్కు 100 ఏకకాల కనెక్షన్లు ఉన్నాయని ఊహించండి. ఫలితంగా, చాట్ సర్వర్ల ఊహించిన సంఖ్య అవసరం = (సెకనుకు చాట్ సందేశాలు లేటెన్సీ)/ సర్వర్కు ఏకకాల కనెక్షన్లు = 40M * 20ms / 100 = 8000 సర్వర్లు.
3. ఉన్నత స్థాయి నిర్మాణం
ఈ వ్యవస్థ రెండు ప్రధాన సేవలపై నిర్మించబడింది. ఉదాహరణకు చాట్ సర్వీస్ మరియు ట్రాన్సిటరీ సర్వీస్. వినియోగదారుల ఆన్లైన్ సందేశాల ద్వారా ఉత్పన్నమయ్యే మొత్తం ట్రాఫిక్ను చాట్ సేవ నిర్వహిస్తుంది. అదే సమయంలో, వినియోగదారు ఆఫ్లైన్లో ఉన్నప్పుడు తాత్కాలిక సేవ ట్రాఫిక్ను నిర్వహిస్తుంది.
వినియోగదారు ఆన్లైన్లో ఉన్నట్లయితే, సందేశాలను బట్వాడా చేయడానికి చాట్ సేవ బాధ్యత వహిస్తుంది.
సందేశ గ్రహీత ఆన్లైన్లో ఉన్నారో లేదో ఇది ధృవీకరిస్తుంది; గ్రహీత ఆన్లైన్లో ఉంటే, ఈ సేవ వెంటనే సందేశాన్ని బట్వాడా చేస్తుంది; స్వీకర్త ఆన్లైన్లో లేకుంటే, వారు ఆన్లైన్లో తిరిగి వచ్చినప్పుడు ట్రాన్సిటరీ సర్వీస్ వారికి సందేశాన్ని పంపుతుంది.
ఆఫ్లైన్ వినియోగదారు మళ్లీ కనెక్ట్ అయ్యే వరకు తాత్కాలికంగా యాక్సెస్ చేయగల డేటాను ఉంచడానికి ట్రాన్సిటరీ సర్వీస్ ప్రత్యేక నిల్వ ప్రాంతాన్ని ఉంచుతుంది.
ఉన్నత-స్థాయి APIల రూపకల్పన
ఈ సేవ సందేశాలను పంపడం మరియు చదవడం కోసం రెండు ఉన్నత-స్థాయి పనితీరు APIలను కలిగి ఉంది. REST ఆర్కిటెక్చర్ ఉపయోగించి సిస్టమ్ను అమలు చేయవచ్చు.
సందేశాలను పంపడానికి పారామితులు
ఇద్దరు వినియోగదారుల మధ్య సందేశాలను ప్రసారం చేయడానికి ఈ API ఉపయోగించబడుతుంది.
సంభాషణ పారామితులు
థ్రెడ్ చేసిన చాట్లను ప్రదర్శించడానికి ఈ API ఉపయోగించబడుతుంది. మీరు WhatsApp తెరిచినప్పుడు మీరు చూసే మొదటి విషయం ఇదే. మేము ఒకే API ప్రశ్నలో ఒక వినియోగదారు కోసం కొన్ని సందేశాలను మాత్రమే పొందాలనుకుంటున్నాము. దీన్ని నిర్వహించడానికి, ఆఫ్సెట్ మరియు మెసేజ్ కౌంట్ పారామీటర్లు అవసరం.
చివరిగా చూసిన, సింగిల్ టిక్ మరియు డబుల్ టిక్ వంటి ఫీచర్ల విధులు ఏమిటి?
ఈ సేవల విస్తరణలో ముఖ్యమైన పాత్ర రసీదు సేవ. ఈ సేవ రసీదు సమాధానాలను రూపొందించడం మరియు ధృవీకరించడం కొనసాగిస్తున్నందున ఈ ఫీచర్లు అభివృద్ధి చేయబడ్డాయి.
- సింగిల్ టిక్: వినియోగదారు A నుండి ఒక సందేశం వినియోగదారు Bకి చేరినప్పుడు, సందేశం ప్రసారం చేయబడిందని అంగీకరిస్తూ సర్వర్ ఒకే టిక్ను పంపుతుంది.
- డబుల్ టిక్: సరియైన కనెక్షన్ ద్వారా సర్వర్ యొక్క సందేశం వినియోగదారు Bకి పంపబడిన తర్వాత, వినియోగదారు B సర్వర్కు సందేశం యొక్క రసీదును గుర్తిస్తారు. సర్వర్ వినియోగదారు Aకి మరొక రసీదుని అందిస్తుంది. ఫలితంగా, నకిలీ టిక్ కనిపిస్తుంది.
- బ్లూ టిక్: సందేశాన్ని తనిఖీ చేసిన తర్వాత వినియోగదారు B సర్వర్కు మరొక రసీదుని పంపుతారు. సర్వర్ వినియోగదారు Aకి అదనపు రసీదు సందేశాన్ని పంపుతుంది. ఆ తర్వాత యూజర్ A స్క్రీన్పై బ్లూ టిక్ కనిపిస్తుంది.
- ఆఖరి సారిగా చూచింది: చివరిగా చూసిన లక్షణానికి హృదయ స్పందన విధానం పూర్తిగా బాధ్యత వహిస్తుంది. ప్రతి 5 సెకన్లకు, హృదయ స్పందన సర్వర్కు ప్రసారం చేయబడుతుంది, ఇది ప్రతి వినియోగదారు చివరిగా చూసిన స్థితిని పట్టికలో ట్రాక్ చేస్తుంది, అది ఏ ఇతర వినియోగదారు అయినా సులభంగా యాక్సెస్ చేయవచ్చు.
4. ముఖ్య లక్షణాలను రూపకల్పన చేయడం
వ్యక్తిగతీకరించిన పరస్పర చర్య
ఇది చాట్ సేవలో అవసరమైన భాగం. ఒక వినియోగదారు ఈ సేవను ఉపయోగించి మరొక వినియోగదారుకు సందేశాలను పంపవచ్చు. ఇది ఎలా పని చేస్తుందో చూద్దాం:
జే ఆయుష్తో కమ్యూనికేట్ చేయాలనుకుంటున్నాడని అనుకోండి. జే సందేశాన్ని అందుకున్న చాట్ సర్వర్కి లింక్ చేయబడ్డాడు. సందేశం పంపబడిందని జే చాట్ సర్వర్ నుండి నిర్ధారణను అందుకున్నాడు. చాట్ సర్వర్ ఇప్పుడు ఆయుష్ కనెక్ట్ చేయబడిన చాట్ సర్వర్ గురించి డేటా స్టోర్ నుండి సమాచారాన్ని అభ్యర్థిస్తోంది. జై యొక్క చాట్ సర్వర్ ఇప్పుడు సందేశాన్ని ఆయుష్ చాట్ సర్వర్కు ప్రసారం చేస్తుంది మరియు ఆయుష్ పుష్ మెకానిజం ద్వారా సందేశాన్ని అందుకుంటుంది. ఆయుష్ ఇప్పుడు జే చాట్ సర్వర్కు రసీదుని పంపాడు, అది సందేశం డెలివరీ అయినట్లు జేకి తెలియజేస్తుంది. ఆయుష్ మెసేజ్ని మళ్లీ చదివితే, ఆ మెసేజ్ రీడ్ అయిందన్న తాజా అంగీకార పత్రం జైకి అందింది.
వినియోగదారు కార్యాచరణ స్థితి
ఒక వ్యక్తి చివరిసారి యాక్టివ్గా ఉండటం అనేది ఇన్స్టంట్ మెసెంజర్ల యొక్క సాధారణ లక్షణం.
క్లయింట్ మరియు సర్వర్ మధ్య కనెక్షన్ని నిర్వహించడానికి సిస్టమ్ ఈ రేఖాచిత్రంలో చిత్రీకరించబడింది. సర్వర్ మరియు క్లయింట్ మధ్య ద్విదిశాత్మక కనెక్షన్ని ఏర్పాటు చేయడానికి వెబ్ సాకెట్లు ఉపయోగించబడ్డాయి. ఈ కనెక్షన్లు హృదయ స్పందనలను పంపుతాయి, ఇవి వినియోగదారు కార్యాచరణ స్థితిని పర్యవేక్షించడానికి ఉపయోగించబడతాయి.
ఎండ్-టు-ఎండ్ గోప్యత
ఎండ్-టు-ఎండ్ ఎన్క్రిప్షన్ అనేది సంభాషించే వినియోగదారులు మాత్రమే కమ్యూనికేషన్లను చదవగలరని నిర్ధారిస్తుంది. కమ్యూనికేషన్లో పాల్గొన్న వినియోగదారులందరిలో పబ్లిక్ కీ భాగస్వామ్యం చేయబడుతుంది మరియు ఎండ్-టు-ఎండ్ ఎన్క్రిప్షన్ను కొనసాగించడంలో కీలకం. ఛానెల్లో ఒకరితో ఒకరు కమ్యూనికేట్ చేసుకునే ఇద్దరు వినియోగదారులు, జే మరియు ఆయుష్ ఉన్నారని భావించండి.
జై వద్ద ఆయుష్ పబ్లిక్ కీ ఉంది, మరియు ఆయుష్ వద్ద జై పబ్లిక్ కీ అలాగే వారి షేర్ చేయని ప్రైవేట్ కీ ఉన్నాయి. ఫలితంగా, జే సందేశాన్ని ప్రసారం చేసినప్పుడు, అతను దానిని ఆయుష్ యొక్క పబ్లిక్ కీతో గుప్తీకరిస్తాడు, ఇది ఆయుష్ ప్రైవేట్ కీతో మాత్రమే డీకోడ్ చేయబడుతుంది.
అదేవిధంగా, జే ఆయుష్ కమ్యూనికేషన్ను మాత్రమే డీకోడ్ చేయగలడు. ఫలితంగా, జే మరియు ఆయుష్ మాత్రమే ఒకరి కమ్యూనికేషన్లను చూడగలరు మరియు సర్వర్ మొత్తం ప్రక్రియలో గేట్వే వలె పని చేస్తుంది.
5. అడ్డంకులు
ప్రతి వ్యవస్థ పనిచేయకపోవడానికి అవకాశం ఉంది. అంత పెద్ద మొత్తంలో ట్రాఫిక్ను నిర్వహించడానికి, ప్రతిబంధకాలను నివారించడానికి సేవ ఎల్లప్పుడూ పని చేస్తూ ఉండాలి మరియు తప్పులను తట్టుకునేలా ఉండాలి. మా సేవ పూర్తిగా చాట్ మరియు ట్రాన్సియెంట్ సర్వర్లపై ఆధారపడి ఉన్నందున, వాటి ఆపరేషన్ నుండి ఉత్పన్నమయ్యే అన్ని సమస్యలను మేము తప్పక పరిష్కరించాలి.
చాట్ సర్వర్ వైఫల్యం: ఇది మన వ్యవస్థ యొక్క గుండె. వినియోగదారులు ఆన్లైన్లో ఉన్నప్పుడు, సందేశాలను నిర్వహించడం మరియు పంపిణీ చేయడం బాధ్యత. ఫలితంగా, ఈ సిస్టమ్ దాని వినియోగదారులతో లింక్లను నిర్వహిస్తుంది.
ఫలితంగా, ఈ సేవ విఫలమైతే, మొత్తం వాస్తుశిల్పం దెబ్బతింటుంది. చాట్ సర్వర్ వైఫల్యాన్ని నిర్వహించడానికి రెండు విధానాలు ఉన్నాయి. TCP కనెక్షన్లను మరొక సర్వర్కు మార్చడం ఒక పద్ధతి, అయితే కనెక్షన్ నష్టం జరిగినప్పుడు స్వయంచాలకంగా కనెక్షన్లను ప్రారంభించడానికి వినియోగదారులను అనుమతించడం మరొక పద్ధతి.
తాత్కాలిక నిల్వ వైఫల్యం: విఫలమయ్యే అవకాశం ఉన్న మరొక భాగం, చివరికి మొత్తం సేవను దెబ్బతీసే అవకాశం ఉంది తాత్కాలిక నిల్వ. ఈ సేవ విఫలమైతే ఆఫ్లైన్ వినియోగదారులకు వెళ్లే సందేశాలు పోతాయి.
మేము ప్రతి వినియోగదారు యొక్క తాత్కాలిక నిల్వను పునరావృతం చేయడం ద్వారా సందేశ నష్టాన్ని నిరోధించవచ్చు. ఫలితంగా, వినియోగదారు ఆన్లైన్కి తిరిగి వచ్చినప్పుడల్లా ఫంక్షన్లను ప్రాసెస్ చేయడానికి ప్రతిరూపాన్ని ఉపయోగించవచ్చు. ఒరిజినల్ సర్వర్ యాక్సెస్ చేయగలిగితే, యూజర్ యొక్క ట్రాన్సిటరీ స్టోరేజ్ యొక్క ఒరిజినల్ మరియు రెప్లికా ఇన్స్టాన్స్ రెండూ ఒకే స్టోర్గా మిళితం చేయబడతాయి.
6. ఆప్టిమైజేషన్ పద్ధతులు
అంతర్గతాన్ని: అతుకులు లేని మరియు మెరుగైన క్లయింట్ అనుభవాన్ని అందించడానికి, మెసెంజర్ సేవ తప్పనిసరిగా నిజ సమయంలో ఉండాలి. ఫలితంగా, తరచుగా యాక్సెస్ చేయబడిన డేటాలో కొంత భాగాన్ని కాష్ చేయడం ద్వారా జాప్యాన్ని తగ్గించాలి. మేము Redis వంటి పంపిణీ చేయబడిన కాష్ని ఉపయోగించి మెమరీలో వినియోగదారు కార్యాచరణ స్థితి మరియు ఇటీవలి సంభాషణలను కాష్ చేయవచ్చు.
లభ్యత: మా సేవ ఎక్కువ సమయం అందుబాటులో ఉండాలి. మా సిస్టమ్ తప్పక తప్పును తట్టుకునేలా ఉండాలి, తద్వారా మనం ట్రాన్సిటరీ సందేశాల యొక్క అనేక కాపీలను ఉంచుకోవచ్చు, తద్వారా పోగొట్టుకున్న ఏదైనా సందేశం దాని నకిలీల నుండి త్వరగా తిరిగి పొందవచ్చు. ఫలితంగా, సిస్టమ్ లభ్యత ప్రమాదంలో పడదు.
ముగింపు
మా సిస్టమ్ ఇప్పుడు కొన్ని సామర్థ్యాలకు మాత్రమే మద్దతిస్తుంది, అయితే అనేక మంది వ్యక్తులకు సందేశాలను పంపిణీ చేయడానికి సమూహ చాట్లను జోడించడానికి మేము దీన్ని సులభంగా విస్తరించవచ్చు. మీరు వీడియో మరియు ఫోన్ కాల్ సామర్థ్యాలను కూడా అందించవచ్చు. వినియోగదారులు స్థితి నవీకరణలు లేదా కథనాలను ప్రచురించవచ్చు మరియు ఒకరినొకరు చదవగలిగేలా ఈ వ్యవస్థను కూడా అభివృద్ధి చేయవచ్చు.
వాట్సాప్ సిస్టమ్ డిజైన్కి సంబంధించిన ఉన్నత-స్థాయి అవలోకనాన్ని మీకు అందించడానికి నేను చాలా కష్టపడ్డాను. మీరు దీన్ని ఆస్వాదించారని మరియు దానిని బాగా ఉపయోగించుకుంటారని నేను ఆశిస్తున్నాను.
సమాధానం ఇవ్వూ