ప్రతి భారీ స్థాయి అనువర్తనం ఒకే రకమైన మౌలిక నిర్మాణ భాగాలు తో నిర్మించబడుతుంది. ఇంటర్వ్యూయర్లు మీరు కొత్త సాంకేతికత కనిపెట్టాలని ఆశించరు. ఇచ్చిన సమస్యకు సరైన భాగాలను ఎంచుకుని కలపగల సామర్థ్యం చూడాలనుకుంటారు. ఈ పాఠంలో ప్రతి డిజైన్ ఇంటర్వ్యూ కు అవసరమయ్యే సాధనాలను కవర్ చేస్తాము.
వెబ్ యొక్క మూల మోడల్ చాలా సరళం: క్లయింట్లు రిక్వెస్ట్లు పంపుతాయి, సర్వర్లు వాటిని ప్రాసెస్ చేస్తాయి, స్పందనలు తిరిగి వస్తాయి. కానీ ఆధునిక వ్యవస్థలు లో స్కేల్, నమ్మకత్వం, పనితీరు నిర్వహించడానికి ఈ రెండు చివరల మధ్య అనేక పొరలు ఉంటాయి.
ఒక సాధారణ రిక్వెస్ట్ ఈ మార్గం ద్వారా వెళ్తుంది: క్లయింట్ → CDN → లోడ్ బ్యాలెన్సర్ → API గేట్వే → అప్లికేషన్ సర్వర్ → క్యాష్ → డేటాబేస్. ప్రతి పొర ఒక స్పష్టమైన సమస్య పరిష్కరిస్తుంది, మరియు ఏ పొర ఎప్పుడు అవసరం అనేది అర్థం చేసుకోవడమే బలమైన అభ్యర్థులు ను సగటు వారి నుండి వేరు చేస్తుంది.
ఇంటర్వ్యూలు లో వివరాలు లోకి వెళ్ళే ముందు ఎప్పుడూ అధిక-స్థాయి క్లయింట్ సర్వర్ ప్రవాహం రూపురేఖ వేయండి. ఇది నిర్మిత ఆలోచన చూపిస్తుంది.
ఒక ఒకే సర్వర్ కి పరిమితమైన సామర్థ్యం ఉంటుంది. లోడ్ బ్యాలెన్సర్లు లోనికి వచ్చే రిక్వెస్ట్లు ను ఈ వ్యూహాలు ద్వారా అనేక సర్వర్లు కు విస్తరిస్తాయి:
లోడ్ బ్యాలెన్సర్లు ఆరోగ్యం తనిఖీలు కూడా చేస్తాయి, అనారోగ్య సర్వర్లు ను స్వయంచాలకంగా సమూహం నుండి తొలగిస్తాయి. క్లౌడ్ పరిసరాలు లో AWS ALB లేదా Azure Front Door వంటి సేవలు ఇది పారదర్శకంగా నిర్వహిస్తాయి.
ఒక సోషల్ మీడియా ఫీడ్ సేవ రైట్లు కంటే 10 రెట్లు ఎక్కువ రీడ్లు పొందుతుంది. వినియోగదారులు స్థిరంగా అదే సిద్ధ క్యాష్ ఉన్న సర్వర్ ను సంప్రదించడం అయ్యేలా ఏ లోడ్ బ్యాలెన్సింగ్ విధానం బాగా నిర్ధారిస్తుంది?
క్యాషింగ్ తరచుగా ప్రాప్తించే డేటా ను కన్స్యూమర్ కి దగ్గరగా నిల్వ చేస్తుంది. ఇది అనేక స్థాయులు లో ఉంటుంది:
| పొర | ఉదాహరణ | లేటెన్సీ | |-------|---------|---------| | బ్రౌజర్ క్యాష్ | స్థిర ఆస్తులు, API రెస్పాన్స్లు | ~0ms | | CDN | చిత్రాలు, CSS, JS ఫైళ్లు | ~10-50ms | | అప్లికేషన్ క్యాష్ | Redis, Memcached | ~1-5ms | | డేటాబేస్ క్యాష్ | క్వెరీ ఫలితం క్యాష్ | ~5-10ms |
సైన్ ఇన్ చేయండి చర్చలో పాల్గొనడానికి
క్యాష్ చెల్లుబాటు రద్దు కంప్యూటింగ్ లో అత్యంత కష్టమైన సమస్యలు లో ఒకటిగా ప్రసిద్ధి. సాధారణ వ్యూహాలు లో TTL (జీవనకాలం), రైట్-త్రూ (ప్రతి రాయడంతో క్యాష్ నవీకరించడం), మరియు క్యాష్-అసైడ్ (అప్లికేషన్ క్యాష్ ను స్పష్టంగా నిర్వహించడం) ఉన్నాయి.
Phil Karlton యొక్క ప్రసిద్ధ వ్యాఖ్య - "కంప్యూటర్ సైన్స్ లో రెండే కష్టమైన విషయాలు ఉన్నాయి: క్యాష్ చెల్లుబాటు రద్దు మరియు పేర్లు పెట్టడం" - ఇది ఎంత విస్తృతంగా ఉదహరించబడుతుంది అవుతుందంటే, సిస్టమ్ డిజైన్ ఇంటర్వ్యూలు లో ఇది ఒక ప్రవేశ సంస్కారం అయిపోయింది.
సరైన డేటాబేస్ ఎంచుకోవడం అత్యంత ప్రభావవంతమైన డిజైన్ నిర్ణయాలు లో ఒకటి:
SQL డేటాబేస్లు (PostgreSQL, MySQL) ACID లావాదేవీలు, బలమైన స్థిరత్వం మరియు నిర్మిత స్కీమాలు అందిస్తాయి. డేటా లో స్పష్టమైన సంబంధాలు ఉన్నప్పుడు మరియు జాయిన్లు తో క్లిష్టమైన క్వెరీలు అవసరమైనప్పుడు ఇవి బాగా పని చేస్తాయి.
NoSQL డేటాబేస్లు అనేక రకాలుగా వస్తాయి:
మీరు తరచుగా మారే, అర్థ నిర్మిత డేటా (ప్రతి వినియోగదారు రకం కు వేర్వేరు ఫీల్డ్లు) తో వినియోగదారు ప్రొఫైల్లు నిల్వ చేసే సిస్టమ్ డిజైన్ చేస్తున్నారు. ఏ డేటాబేస్ రకం అత్యంత బాగా సరిపోతాయి అవుతుంది?
ప్రతి కార్యాచరణ కు తక్షణ రెస్పాన్స్ అవసరం లేదు. సందేశం క్యూలు (RabbitMQ, Apache Kafka, AWS SQS) ఉత్పత్తిదారులు ను వినియోగదారులు నుండి విడదీస్తాయి, దీనివల్ల:
Kafka ప్రత్యేక ప్రస్తావనకు అర్హం: ఇది కేవలం క్యూ కాదు, ఒక విస్తరిత ఈవెంట్ లాగ్, ఇది ఈవెంట్-ఆధారిత ఆర్కిటెక్చర్లు సాధ్యం చేస్తుంది - ఇక్కడ అనేక వినియోగదారులు స్వతంత్రంగా అదే ఈవెంట్ల స్ట్రీమ్ ప్రాసెస్ చేయగలరు.
| అంశం | ఏకశిల వ్యవస్థ | సూక్ష్మసేవలు | |------|----------|---------------| | డిప్లాయ్మెంట్ | ఒకే యూనిట్ | స్వతంత్ర సేవలు | | స్కేలింగ్ | అంతా కలిసి స్కేల్ | వ్యక్తిగత సేవలు స్కేల్ | | క్లిష్టత | ప్రారంభించడం సులభం | నిర్వహణ భారం | | డేటా | పంచుకున్న డేటాబేస్ | డేటాబేస్ ప్రతి సేవ |
ఏకశిల వ్యవస్థ తో ప్రారంభించండి, అవసరమైనప్పుడు సూక్ష్మసేవలు వేరు చేయండి. చాలామంది ఇంటర్వ్యూయర్లు సూక్ష్మసేవలు విస్తరిత సిస్టమ్ క్లిష్టత (నెట్వర్క్ వైఫల్యాలు, డేటా స్థిరత్వం, డిప్లాయ్మెంట్ సమన్వయం) తీసుకొస్తాయని అంగీకరించే అభ్యర్థులు ను గమనిస్తారు - ఇవి ఎల్లప్పుడూ సరైన ఎంపిక కాదు.
Netflix అనేక సంవత్సరాలలో ఏకశిల వ్యవస్థ నుండి సూక్ష్మసేవలు కు వలస చేసింది. కానీ Shopify - బిలియన్లు లో లావాదేవీలు నిర్వహిస్తూ - ఇప్పటికీ మాడ్యులర్ ఏకశిల వ్యవస్థ ను నడుపుతుంది. ఒక కంపెనీ కి ఏ విధానం మెరుగు అనేది ఏ కారకాలు పై ఆధారపడవచ్చు?
CAP సిద్ధాంతం ప్రకారం ఒక విస్తరిత సిస్టమ్ ఏకకాలంలో మూడింటిలో రెండు లక్షణాలు మాత్రమే హామీ చేయగలదు:
విస్తరిత సిస్టమ్లు లో నెట్వర్క్ విభజనలు తప్పనిసరి కాబట్టి, నిజమైన ఎంపిక CP (స్థిరత్వం అందుబాటుపై) మరియు AP (అందుబాటు స్థిరత్వంపై) మధ్య ఉంటుంది.
మీరు ఒక బ్యాంకింగ్ లావాదేవీ సిస్టమ్ డిజైన్ చేస్తున్నారు, ఇక్కడ తప్పు నిల్వలు ఆర్థిక నష్టం కు కారణమవుతాయి. ఏ CAP రాజీ ఆఫ్ ప్రాధాన్యం ఇవ్వాలి?
సిస్టమ్ డిజైన్ ఇంటర్వ్యూ లో ఈ నిర్మాణం అనుసరించండి:
మీరు రోజువారీ వాడే సిస్టమ్ గురించి ఆలోచించండి - Instagram, Uber, లేదా Spotify. ఈ పాఠం లోని ఏ నిర్మాణ భాగాలు అది బహుశా వాడుతుందో గుర్తించగలరా? లోడ్ బ్యాలెన్సర్ ఎక్కడ ఉంటుంది? ఏమి క్యాష్ అవుతుంది? ఏ డేటాబేస్ రకం దాని డేటా మోడల్ కు సరిపోతుంది?
తదుపరి పాఠం: ఈ మూలాలు అమలు చేసి ఒక URL సంక్షిప్తీకరణ సేవ ను మొదటి నుంచి నుండి డిజైన్ చేద్దాం.