పంపిణీ చేయబడిన అప్లికేషన్ల బిల్డింగ్ బ్లాక్స్. సున్నా ఉజ్జాయింపు

పంపిణీ చేయబడిన అప్లికేషన్ల బిల్డింగ్ బ్లాక్స్. సున్నా ఉజ్జాయింపు

ప్రపంచం నిలబడదు. పురోగతి కొత్త సాంకేతిక సవాళ్లను సృష్టిస్తుంది. మారుతున్న అవసరాలకు అనుగుణంగా, సమాచార వ్యవస్థల నిర్మాణం తప్పనిసరిగా అభివృద్ధి చెందాలి. ఈ రోజు మనం ఈవెంట్-ఆధారిత నిర్మాణం, సమ్మేళనం, సమ్మేళనం, అసమకాలికత మరియు మీరు ఎర్లాంగ్‌లో వీటన్నింటితో శాంతియుతంగా జీవించడం గురించి మాట్లాడుతాము.

పరిచయం

రూపొందించిన సిస్టమ్ యొక్క పరిమాణం మరియు దాని అవసరాలపై ఆధారపడి, మేము, డెవలపర్లు, సిస్టమ్‌లోని సమాచారాన్ని మార్పిడి చేసే పద్ధతిని ఎంచుకుంటాము. చాలా సందర్భాలలో, సేవల పరస్పర చర్యను నిర్వహించడానికి, పని చేసే ఎంపిక బ్రోకర్‌తో కూడిన పథకం కావచ్చు, ఉదాహరణకు, RabbitMQ లేదా kafka ఆధారంగా. కానీ కొన్నిసార్లు ఈవెంట్‌ల ప్రవాహం, SLA మరియు సిస్టమ్‌పై నియంత్రణ స్థాయి వంటివి రెడీమేడ్ మెసేజింగ్ మాకు తగినవి కావు. వాస్తవానికి, మీరు రవాణా పొర మరియు క్లస్టర్ ఏర్పాటుకు బాధ్యత వహించడం ద్వారా సిస్టమ్‌ను కొద్దిగా క్లిష్టతరం చేయవచ్చు, ఉదాహరణకు ZeroMQ లేదా nanomsgని ఉపయోగించడం. సిస్టమ్‌కు తగినంత నిర్గమాంశ మరియు ప్రామాణిక ఎర్లాంగ్ క్లస్టర్ సామర్థ్యాలు ఉంటే, అదనపు ఎంటిటీని పరిచయం చేసే సమస్యకు వివరణాత్మక అధ్యయనం మరియు ఆర్థిక సమర్థన అవసరం.

రియాక్టివ్ డిస్ట్రిబ్యూట్ అప్లికేషన్ల అంశం చాలా విస్తృతమైనది. కథనం యొక్క ఆకృతిలో ఉంచడానికి, నేటి చర్చ యొక్క అంశం ఎర్లాంగ్/ఎలిక్సర్‌పై నిర్మించిన సజాతీయ వాతావరణాలు మాత్రమే. Erlang/OTP పర్యావరణ వ్యవస్థ అతి తక్కువ శ్రమతో రియాక్టివ్ ఆర్కిటెక్చర్‌ను అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. అయితే, ఏదైనా సందర్భంలో, మనకు మెసేజింగ్ లేయర్ అవసరం.

సైద్ధాంతిక ఆధారం

డిజైన్ లక్ష్యాలు మరియు పరిమితులను నిర్వచించడంతో ప్రారంభమవుతుంది. ప్రధాన లక్ష్యం అభివృద్ధి కోసం అభివృద్ధి ప్రాంతంలో కాదు. మేము సురక్షితమైన మరియు స్కేలబుల్ సాధనాన్ని పొందాలి, దాని ఆధారంగా మనం సృష్టించగలము మరియు ముఖ్యంగా వివిధ స్థాయిల ఆధునిక అప్లికేషన్‌లను అభివృద్ధి చేయవచ్చు: సింగిల్-సర్వర్ అప్లికేషన్‌ల నుండి చిన్న ప్రేక్షకులకు సేవలు అందిస్తోంది, ఇది తరువాత 50 వరకు క్లస్టర్‌లుగా అభివృద్ధి చెందుతుంది. -60 నోడ్స్, క్లస్టర్ ఫెడరేషన్‌లతో ముగుస్తుంది. అందువల్ల, తుది వ్యవస్థ యొక్క అభివృద్ధి మరియు యాజమాన్యం యొక్క వ్యయాన్ని తగ్గించడం ద్వారా లాభాలను పెంచడం ప్రధాన లక్ష్యం.

తుది సిస్టమ్ కోసం 4 ప్రధాన అవసరాలను హైలైట్ చేద్దాం:

  • Сఈవెంట్-ఆధారిత.
    సంఘటనల ప్రవాహాన్ని దాటడానికి మరియు అవసరమైన చర్యలను నిర్వహించడానికి సిస్టమ్ ఎల్లప్పుడూ సిద్ధంగా ఉంటుంది;
  • Мస్కేలబిలిటీ.
    వ్యక్తిగత బ్లాక్‌లను నిలువుగా మరియు అడ్డంగా స్కేల్ చేయవచ్చు. మొత్తం వ్యవస్థ తప్పనిసరిగా అనంతమైన క్షితిజ సమాంతర వృద్ధిని కలిగి ఉండాలి;
  • Оతప్పు సహనం.
    అన్ని స్థాయిలు మరియు అన్ని సేవలు వైఫల్యాల నుండి స్వయంచాలకంగా కోలుకోగలగాలి;
  • Гహామీ ప్రతిస్పందన సమయం.
    సమయం విలువైనది మరియు వినియోగదారులు ఎక్కువసేపు వేచి ఉండకూడదు.

"ది లిటిల్ ఇంజిన్ దట్" గురించి పాత అద్భుత కథ గుర్తుందా? రూపొందించిన సిస్టమ్ ప్రోటోటైప్ దశ నుండి విజయవంతంగా నిష్క్రమించడానికి మరియు ప్రగతిశీలంగా ఉండటానికి, దాని పునాది తప్పనిసరిగా కనీస అవసరాలను తీర్చాలి పొగమంచు.

ఇన్‌ఫ్రాస్ట్రక్చర్ టూల్‌గా మెసేజింగ్‌కు మరో పాయింట్ జోడించబడింది మరియు అన్ని సేవలకు ఆధారం: ప్రోగ్రామర్‌లకు సులభంగా ఉపయోగించడం.

ఈవెంట్ ఓరియెంటెడ్

అప్లికేషన్ ఒకే సర్వర్ నుండి క్లస్టర్‌గా పెరగాలంటే, దాని నిర్మాణం తప్పనిసరిగా వదులుగా కలపడానికి మద్దతు ఇవ్వాలి. అసమకాలిక మోడల్ ఈ అవసరాన్ని తీరుస్తుంది. అందులో, పంపినవారు మరియు గ్రహీత సందేశం యొక్క సమాచార లోడ్ గురించి శ్రద్ధ వహిస్తారు మరియు సిస్టమ్‌లో ప్రసారం మరియు రూటింగ్ గురించి చింతించకండి.

స్కేలబిలిటీ

స్కేలబిలిటీ మరియు సిస్టమ్ సామర్థ్యం ఒకదానికొకటి పక్కన ఉన్నాయి. అప్లికేషన్ భాగాలు తప్పనిసరిగా అందుబాటులో ఉన్న అన్ని వనరులను ఉపయోగించగలగాలి. మనం ఎంత సమర్ధవంతంగా కెపాసిటీని ఉపయోగించుకోగలిగితే మరియు మన ప్రాసెసింగ్ పద్ధతులను ఎంత ఉత్తమంగా ఉపయోగించుకోగలమో, మనం పరికరాలపై తక్కువ డబ్బు ఖర్చు చేస్తాము.

ఒకే యంత్రం లోపల, ఎర్లాంగ్ అత్యంత పోటీ వాతావరణాన్ని సృష్టిస్తుంది. ఎర్లాంగ్ VMకి అందుబాటులో ఉన్న ఆపరేటింగ్ సిస్టమ్ థ్రెడ్‌ల సంఖ్య మరియు ఈ థ్రెడ్‌లను ఉపయోగించే షెడ్యూలర్‌ల సంఖ్యను ఎంచుకోవడం ద్వారా కాన్కరెన్సీ మరియు సమాంతరత మధ్య సమతుల్యతను సెట్ చేయవచ్చు.
ఎర్లాంగ్ ప్రక్రియలు స్థితిని పంచుకోవు మరియు నాన్-బ్లాకింగ్ మోడ్‌లో పనిచేస్తాయి. ఇది సాంప్రదాయ బ్లాకింగ్-ఆధారిత అప్లికేషన్‌ల కంటే తక్కువ జాప్యాన్ని మరియు అధిక నిర్గమాంశను అందిస్తుంది. Erlang యొక్క షెడ్యూలర్ CPU మరియు IO యొక్క సరసమైన కేటాయింపును నిర్ధారిస్తుంది మరియు నిరోధించడం లేకపోవడం వలన గరిష్ట లోడ్లు లేదా వైఫల్యాల సమయంలో కూడా ప్రతిస్పందించడానికి అప్లికేషన్‌ను అనుమతిస్తుంది.

క్లస్టర్ స్థాయిలో, పారవేయడంలో సమస్య కూడా ఉంది. క్లస్టర్‌లోని అన్ని యంత్రాలు సమానంగా లోడ్ చేయబడటం మరియు నెట్‌వర్క్ ఓవర్‌లోడ్ కాకపోవడం ముఖ్యం. ఒక పరిస్థితిని ఊహించుకుందాం: వినియోగదారు ట్రాఫిక్ ఇన్‌కమింగ్ బ్యాలెన్సర్‌లపైకి వస్తుంది (హాప్రాక్సీ, ఎన్‌జిఎన్‌ఎక్స్, మొదలైనవి), వారు ప్రాసెసింగ్ అభ్యర్థనలను అందుబాటులో ఉన్న బ్యాకెండ్‌ల మధ్య సమానంగా పంపిణీ చేస్తారు. అప్లికేషన్ ఇన్‌ఫ్రాస్ట్రక్చర్‌లో, అవసరమైన ఇంటర్‌ఫేస్‌ను అమలు చేసే సేవ చివరి మైలు మాత్రమే మరియు ప్రారంభ అభ్యర్థనకు ప్రతిస్పందించడానికి అనేక ఇతర సేవలను అభ్యర్థించాల్సి ఉంటుంది. అంతర్గత అభ్యర్థనలకు రూటింగ్ మరియు బ్యాలెన్సింగ్ కూడా అవసరం.
డేటా ప్రవాహాలను సమర్థవంతంగా నిర్వహించడానికి, రౌటింగ్ మరియు లోడ్ బ్యాలెన్సింగ్‌ను నిర్వహించడానికి మెసేజింగ్ డెవలపర్‌లకు ఇంటర్‌ఫేస్‌ను అందించాలి. దీనికి ధన్యవాదాలు, డెవలపర్‌లు మైక్రోసర్వీస్ ప్యాటర్న్‌లను (అగ్రిగేటర్, ప్రాక్సీ, చైన్, బ్రాంచ్, మొదలైనవి) ఉపయోగించి ప్రామాణిక సమస్యలను మరియు అరుదుగా తలెత్తే సమస్యలను పరిష్కరించగలుగుతారు.

వ్యాపార దృక్కోణం నుండి, రిస్క్ మేనేజ్‌మెంట్ సాధనాల్లో స్కేలబిలిటీ ఒకటి. పరికరాలను ఉత్తమంగా ఉపయోగించడం ద్వారా కస్టమర్ అభ్యర్థనలను సంతృప్తి పరచడం ప్రధాన విషయం:

  • పురోగతి ఫలితంగా పరికరాల శక్తి పెరిగినప్పుడు. అసంపూర్ణ సాఫ్ట్‌వేర్ కారణంగా ఇది నిష్క్రియంగా ఉండదు. Erlang నిలువుగా బాగా స్కేల్ చేస్తుంది మరియు ఎల్లప్పుడూ అన్ని CPU కోర్లను మరియు అందుబాటులో ఉన్న మెమరీని ఉపయోగించుకోగలుగుతుంది;
  • క్లౌడ్ పరిసరాలలో, మేము ప్రస్తుత లేదా ఊహించిన లోడ్‌ను బట్టి పరికరాల మొత్తాన్ని నిర్వహించవచ్చు మరియు SLAకి హామీ ఇవ్వవచ్చు.

తప్పు సహనం

రెండు సిద్ధాంతాలను పరిశీలిద్దాం: "వైఫల్యాలు ఆమోదయోగ్యం కాదు" మరియు "ఎప్పుడూ వైఫల్యాలు ఉంటాయి." వ్యాపారం కోసం, సాఫ్ట్‌వేర్ వైఫల్యం అంటే డబ్బు నష్టం, మరియు అధ్వాన్నంగా, కీర్తిని కోల్పోవడం. సాధ్యమయ్యే నష్టాలు మరియు తప్పు-తట్టుకునే సాఫ్ట్‌వేర్‌ను అభివృద్ధి చేయడానికి అయ్యే ఖర్చుల మధ్య సమతుల్యం, రాజీని తరచుగా కనుగొనవచ్చు.

స్వల్పకాలంలో, తప్పు సహనాన్ని కలిగి ఉన్న ఆర్కిటెక్చర్ ఆఫ్-ది-షెల్ఫ్ క్లస్టరింగ్ సొల్యూషన్‌లను కొనుగోలు చేయడం ద్వారా డబ్బును ఆదా చేస్తుంది. అవి ఖరీదైనవి మరియు వాటికి దోషాలు కూడా ఉన్నాయి.
దీర్ఘకాలికంగా, తప్పు-తట్టుకునే నిర్మాణం అభివృద్ధి యొక్క అన్ని దశలలో చాలా రెట్లు చెల్లిస్తుంది.
కోడ్ బేస్‌లో సందేశం పంపడం అభివృద్ధి దశలో సిస్టమ్‌లోని భాగాల పరస్పర చర్యను వివరంగా పని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది వైఫల్యాలను ప్రతిస్పందించడం మరియు నిర్వహించడం యొక్క పనిని సులభతరం చేస్తుంది, ఎందుకంటే అన్ని క్లిష్టమైన భాగాలు వైఫల్యాలను నిర్వహిస్తాయి మరియు డిజైన్ ద్వారా వైఫల్యం తర్వాత స్వయంచాలకంగా సాధారణ స్థితికి ఎలా తిరిగి రావాలో ఫలితంగా సిస్టమ్‌కు తెలుసు.

జవాబుదారీతనం

వైఫల్యాలతో సంబంధం లేకుండా, అప్లికేషన్ తప్పనిసరిగా అభ్యర్థనలకు ప్రతిస్పందించాలి మరియు SLAని కలుసుకోవాలి. వాస్తవికత ఏమిటంటే ప్రజలు వేచి ఉండకూడదనుకుంటున్నారు, కాబట్టి వ్యాపారాలు తదనుగుణంగా స్వీకరించాలి. మరిన్ని అప్లికేషన్లు అత్యంత ప్రతిస్పందిస్తాయని భావిస్తున్నారు.
ప్రతిస్పందించే అప్లికేషన్లు సమీప నిజ సమయంలో పనిచేస్తాయి. ఎర్లాంగ్ VM సాఫ్ట్ రియల్ టైమ్ మోడ్‌లో పనిచేస్తుంది. స్టాక్ ట్రేడింగ్, ఔషధం మరియు పారిశ్రామిక పరికరాల నియంత్రణ వంటి కొన్ని ప్రాంతాలకు హార్డ్ రియల్ టైమ్ మోడ్ ముఖ్యమైనది.
ప్రతిస్పందించే సిస్టమ్‌లు UXని మెరుగుపరుస్తాయి మరియు వ్యాపారానికి ప్రయోజనం చేకూరుస్తాయి.

ప్రాథమిక సారాంశం

ఈ కథనాన్ని ప్లాన్ చేస్తున్నప్పుడు, మెసేజింగ్ బ్రోకర్‌ని సృష్టించడం మరియు దాని ఆధారంగా సంక్లిష్ట వ్యవస్థలను నిర్మించడం వంటి నా అనుభవాన్ని పంచుకోవాలనుకున్నాను. కానీ సైద్ధాంతిక మరియు ప్రేరణాత్మక భాగం చాలా విస్తృతమైనది.
వ్యాసం యొక్క రెండవ భాగంలో, నేను ఎక్స్ఛేంజ్ పాయింట్లు, మెసేజింగ్ నమూనాలు మరియు వాటి అప్లికేషన్ను అమలు చేసే సూక్ష్మ నైపుణ్యాల గురించి మాట్లాడతాను.
మూడవ భాగంలో మేము సేవలను నిర్వహించడం, రూటింగ్ మరియు బ్యాలెన్సింగ్ యొక్క సాధారణ సమస్యలను పరిశీలిస్తాము. వ్యవస్థల స్కేలబిలిటీ మరియు తప్పు సహనం యొక్క ఆచరణాత్మక వైపు గురించి మాట్లాడుదాం.

మొదటి భాగం ముగింపు.

ఫోటో @లుకాబ్రావో.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి