కోడ్‌జిమ్/జావా కోర్సు/మాడ్యూల్ 3/క్లయింట్-సర్వర్ ఆర్కిటెక్చర్

క్లయింట్-సర్వర్ ఆర్కిటెక్చర్

అందుబాటులో ఉంది

1.1 అప్లికేషన్ ఆర్కిటెక్చర్

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

పెద్ద సర్వర్ అప్లికేషన్‌ల కోసం ప్రసిద్ధ ఆర్కిటెక్చర్‌ల ఉదాహరణలు:

  • లేయర్డ్ ఆర్కిటెక్చర్ (లేయర్డ్ ఆర్కిటెక్చర్).
  • టైర్డ్ ఆర్కిటెక్చర్.
  • సర్వీస్ ఓరియెంటెడ్ ఆర్కిటెక్చర్ (SOA).
  • మైక్రోసర్వీస్ ఆర్కిటెక్చర్ (మైక్రోసర్వీస్ ఆర్కిటెక్చర్).

వాటిలో ప్రతి దాని లాభాలు మరియు నష్టాలు ఉన్నాయి. కానీ వాటిని అధ్యయనం చేయడం వల్ల మీకు ఏమీ లభించదు. ఆర్కిటెక్చర్ అనేది "సిస్టమ్‌లోని వేలాది వస్తువుల పరస్పర చర్యను ఎలా నిర్వహించాలి" అనే ప్రశ్నకు సమాధానం . మరియు మీరు సమస్య యొక్క పూర్తి సంక్లిష్టతను అనుభవించే వరకు, మీరు పరిష్కారం యొక్క పూర్తి పాండిత్యాన్ని అర్థం చేసుకోలేరు.

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

“అవసరమైన చోట మార్పులు చేయండి” అంటే ఏమిటి? మీరు మార్పులు చేయాల్సిన అవసరం లేని స్థలాలు ఉన్నాయా? సరిగ్గా.

ప్రత్యేకంగా చెప్పాలంటే, మీరు మీడియం బ్యాకెండ్ ప్రాజెక్ట్‌లో పని చేస్తున్నారని అనుకుందాం . దీన్ని 20 మంది బృందంతో 5 సంవత్సరాలుగా రాశారు. ప్రాజెక్ట్ 100 మానవ-సంవత్సరాలు పట్టింది మరియు సుమారు 100 వేల లైన్ల కోడ్‌ను కలిగి ఉంది. మొత్తంగా, ఇది రెండు వేల తరగతులను కలిగి ఉంటుంది, ఇవి వివిధ పరిమాణాల 10 మాడ్యూల్స్గా విభజించబడ్డాయి.

మరియు కఠినమైన వాస్తవికతను జోడించండి. కొన్ని పనుల యొక్క తర్కం అనేక మాడ్యూళ్లలో విస్తరించి ఉంటుంది. అలాగే, వ్యాపార తర్కం ఫ్రంటెండ్‌లో (జావాస్క్రిప్ట్‌లో వ్రాయబడింది) మరియు / లేదా నేరుగా డేటాబేస్‌లో నిల్వ చేయబడిన విధానంగా వ్రాయబడుతుంది. సరిగ్గా ఎక్కడ మార్పులు చేయాలో మీరు వెంటనే గుర్తించగలరని మీరు ఇప్పటికీ ఖచ్చితంగా అనుకుంటున్నారా ?

ఇది నిన్ను భయపెట్టడానికి నేను చేసిన పీడకల కాదు. ఇది ఒక సాధారణ ప్రాజెక్ట్. ఇది మరింత దారుణంగా జరుగుతుంది. ఇలా ఎందుకు జరుగుతోంది? ఏవైనా కారణాలు ఉండవచ్చు, కానీ దాదాపు ఎల్లప్పుడూ అలాంటివి ఉన్నాయి:

  • ప్రాజెక్ట్‌లో చాలా మంది వ్యక్తులు పని చేస్తున్నారు - ప్రతి ఒక్కరూ దానిని కొద్దిగా భిన్నంగా చూస్తారు.
  • 5 సంవత్సరాలుగా, ప్రాజెక్ట్‌లో 10 మంది మారారు, కొత్తవారికి పెద్దగా అర్థం కాలేదు.
  • సాఫ్ట్‌వేర్‌ను సృష్టించడం అనేది నిరంతరం ప్రతిదీ మార్చే మార్పులను నిరంతరం చేయడం.
  • ఐదు సంవత్సరాల క్రితం, మేము నిర్మాణాన్ని నిర్ణయించినప్పుడు, ప్రాజెక్ట్ యొక్క ఆలోచన కొంత భిన్నంగా ఉంది.

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

1.2 క్లయింట్-సర్వర్ పరస్పర చర్య యొక్క భావన

ఇప్పుడు మేము క్లయింట్-సర్వర్ ఆర్కిటెక్చర్‌కు ఆధారమైన భావనను అర్థం చేసుకుంటాము మరియు ఇంటర్నెట్‌లో మిలియన్ల కొద్దీ ప్రోగ్రామ్‌ల పరస్పర చర్య ఎలా నిర్వహించబడుతుందో బాగా అర్థం చేసుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది.

పేరు సూచించినట్లుగా, ఈ భావన రెండు పార్టీలను కలిగి ఉంటుంది: క్లయింట్ మరియు సర్వర్ . ఇక్కడ ప్రతిదీ జీవితంలో లాగా ఉంటుంది: క్లయింట్ ఈ లేదా ఆ సేవ యొక్క కస్టమర్, మరియు సర్వర్ సర్వీస్ ప్రొవైడర్. క్లయింట్ మరియు సర్వర్ భౌతికంగా ప్రోగ్రామ్‌లు , ఉదాహరణకు ఒక సాధారణ క్లయింట్ బ్రౌజర్ .

కింది ఉదాహరణలను సర్వర్‌గా ఇవ్వవచ్చు:

  • టామ్‌క్యాట్ వంటి వెబ్ సర్వర్లు.
  • MySQL వంటి డేటాబేస్ సర్వర్లు.
  • గీత వంటి చెల్లింపు గేట్‌వేలు.

క్లయింట్ మరియు సర్వర్ సాధారణంగా ఇంటర్నెట్ ద్వారా కమ్యూనికేట్ చేస్తాయి (అయితే అవి ఒకే లోకల్ ఏరియా నెట్‌వర్క్‌లో మరియు సాధారణంగా ఏదైనా ఇతర రకాల నెట్‌వర్క్‌లలో పని చేయగలవు). HTTP, FTP వంటి ప్రామాణిక ప్రోటోకాల్‌లు లేదా TCP లేదా UDP వంటి దిగువ-స్థాయి ప్రోటోకాల్‌ల ద్వారా కమ్యూనికేషన్ జరుగుతుంది.

ప్రోటోకాల్ సాధారణంగా సర్వర్లు అందించే సేవ రకం ప్రకారం ఎంపిక చేయబడుతుంది. ఉదాహరణకు, ఇది వీడియో కాల్ అయితే, UDP సాధారణంగా ఉపయోగించబడుతుంది.

టామ్‌క్యాట్ మరియు దాని సర్వ్‌లెట్‌లు ఎలా పని చేస్తాయో గుర్తుందా? సర్వర్ HTTP సందేశాన్ని అందుకుంటుంది, దానిని అన్‌ప్యాక్ చేస్తుంది, అక్కడ నుండి అవసరమైన మొత్తం సమాచారాన్ని సంగ్రహిస్తుంది మరియు ప్రాసెసింగ్ కోసం సర్వ్‌లెట్‌కు పంపుతుంది. అప్పుడు ప్రాసెసింగ్ ఫలితం HTTP-ప్రతిస్పందనలో తిరిగి ప్యాక్ చేయబడుతుంది మరియు క్లయింట్‌కు పంపబడుతుంది.

ఇది సాధారణ క్లయింట్-సర్వర్ పరస్పర చర్య. బ్రౌజర్ వెబ్ క్లయింట్ మరియు టామ్‌క్యాట్ వెబ్ సర్వర్. టామ్‌క్యాట్‌ను వెబ్ సర్వర్ అని కూడా పిలుస్తారు.

కానీ మీరు దాని గురించి ఆలోచిస్తే, ఇది ముఖ్యమైనది పేరు కాదు, కానీ సారాంశం - కార్యక్రమాల మధ్య పాత్రల పంపిణీ. HTML పేజీలో నడుస్తున్న మీ JS స్క్రిప్ట్‌ను క్లయింట్ అని మరియు మీ సర్వర్‌ని సర్వర్ అని పిలుస్తారు . అన్నింటికంటే, వారు క్లయింట్-సర్వర్ కాన్సెప్ట్ ఫ్రేమ్‌వర్క్‌లో జతగా పని చేస్తారు .

1.3 ఒక ముఖ్యమైన స్వల్పభేదాన్ని

క్లయింట్-సర్వర్ పరస్పర చర్య అటువంటి పరస్పర చర్య క్లయింట్ ద్వారా ప్రారంభించబడుతుందనే సూత్రంపై ఆధారపడి ఉంటుందని కూడా గమనించాలి .

క్లయింట్ భౌతికంగా ఎక్కడ ఉంది మరియు సర్వర్ ఎక్కడ ఉంది అనేది పట్టింపు లేదు. క్లయింట్ సాఫ్ట్‌వేర్ మరియు సర్వర్ సాఫ్ట్‌వేర్ సాధారణంగా వేర్వేరు మెషీన్‌లలో ఇన్‌స్టాల్ చేయబడతాయి, కానీ అవి ఒకే కంప్యూటర్‌లో కూడా అమలు చేయబడతాయి.

సంక్లిష్ట వ్యవస్థను సరళీకృతం చేయడానికి మొదటి దశగా ఈ భావన అభివృద్ధి చేయబడింది. ఆమెకు ఈ బలాలు ఉన్నాయి:

  • లాజిక్ సరళీకరణ : సర్వర్‌కి క్లయింట్ గురించి మరియు భవిష్యత్తులో అది తన డేటాను ఎలా ఉపయోగిస్తుంది అనే దాని గురించి ఏమీ తెలియదు.
  • బలహీనమైన క్లయింట్లు ఉండవచ్చు : అన్ని వనరుల-ఇంటెన్సివ్ టాస్క్‌లు సర్వర్‌కు బదిలీ చేయబడతాయి.
  • క్లయింట్ కోడ్ మరియు సర్వర్ కోడ్ యొక్క స్వతంత్ర అభివృద్ధి.
  • అనేక విభిన్న క్లయింట్లు, ఉదాహరణకు టామ్‌క్యాట్ మరియు విభిన్న బ్రౌజర్‌లు.

క్లయింట్ మరియు సర్వర్ మధ్య పరస్పర చర్య యొక్క అత్యంత ప్రాథమిక సంస్కరణ చిత్రంలో చూపబడింది:

క్లయింట్ సర్వర్

ఇక్కడ రెండు వివరాలను గమనించడం ముఖ్యం. మొదట, చాలా మంది క్లయింట్లు ఒక సర్వర్‌ని యాక్సెస్ చేయగలరని చిత్రం చూపిస్తుంది. రెండవది, వారు అదే సమయంలో యాక్సెస్ చేయవచ్చు. ఇది కూడా సర్వర్‌లో ముఖ్యమైన భాగం.

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

సర్వర్ వేలాది అభ్యర్థనలను సమాంతరంగా ప్రాసెస్ చేయడం కూడా ముఖ్యం. మరియు దీని అర్థం బ్యాకెండ్ కోడ్‌ను అభివృద్ధి చేస్తున్నప్పుడు, వనరులకు ఏకకాల ప్రాప్యత యొక్క పని గురించి మీరు నిరంతరం ఆలోచించవలసి ఉంటుంది. అలాగే, సర్వర్ కోడ్ జాతి పరిస్థితి (థ్రెడ్ రేస్), డెడ్‌లాక్ (థ్రెడ్‌లను పరస్పరం నిరోధించడం) యొక్క అధిక సంభావ్యతను కలిగి ఉంటుంది.

ముఖ్యమైన వస్తువుల జీవిత చక్రం తప్పనిసరిగా పర్యవేక్షించబడాలి:

మీరు ద్వారా సర్వర్‌లో కొత్త థ్రెడ్‌ని ప్రారంభించలేరు new Thread().start(). బదులుగా, మీరు అన్ని సర్వీస్ థ్రెడ్‌ల మధ్య భాగస్వామ్యం చేసే థ్రెడ్‌పూల్‌ని కలిగి ఉండాలి.

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

ఫైల్‌లు మరియు డైరెక్టరీలతో అన్ని పనులు తప్పనిసరిగా వనరులతో ప్రయత్నించండి. ఒక సాధారణ అప్లికేషన్‌లో మీరు స్ట్రీమ్ లేదా ఫైల్‌ను మూసివేయడం మర్చిపోయి ఉంటే, అది సమస్యా? మీరు ప్రోగ్రామ్ నుండి నిష్క్రమించినప్పుడు అది స్వయంగా మూసివేయబడుతుంది. కానీ మీరు ఎక్కడో కోడ్‌లో ఉన్న సర్వర్‌లోని ఫైల్‌ను మూసివేయడం మర్చిపోయి, మరియు మీ సర్వర్ నెలల తరబడి రన్ అవుతూ ఉంటే ... త్వరలో, వేలాది అటువంటి అన్‌క్లోజ్డ్ ఫైల్‌లు పేరుకుపోతాయి మరియు OS చదవడం కోసం కొత్త ఫైల్‌లను తెరవడం ఆపివేస్తుంది (ఫైళ్లతో పని చేయండి OS ద్వారా నియంత్రించబడుతుంది). టీమ్‌లీడ్ మిమ్మల్ని తలపై కొట్టదు...

1.4 క్లయింట్-సర్వర్ ఆర్కిటెక్చర్

మరొక ముఖ్యమైన అంశం. క్లయింట్-సర్వర్ ఆర్కిటెక్చర్ కంప్యూటర్ల మధ్య పరస్పర చర్య యొక్క సాధారణ సూత్రాలను మాత్రమే నిర్వచిస్తుంది , పరస్పర చర్య యొక్క వివరాలు వివిధ ప్రోటోకాల్‌ల ద్వారా నిర్ణయించబడతాయి.

ఈ కాన్సెప్ట్ (క్లయింట్-సర్వర్) మనం నెట్‌వర్క్‌లోని మెషీన్‌లను క్లయింట్ మెషీన్‌లుగా విభజించాల్సిన అవసరం ఉందని చెబుతుంది, అవి ఎల్లప్పుడూ ఏదో అవసరం, మరియు సర్వర్ మెషీన్‌లు, వాటికి అవసరమైనవి ఇస్తాయి. ఈ సందర్భంలో, క్లయింట్ ఎల్లప్పుడూ పరస్పర చర్యను ప్రారంభిస్తుంది మరియు పరస్పర చర్య జరిగే నియమాలు ప్రోటోకాల్ ద్వారా వివరించబడతాయి.

క్లయింట్-సర్వర్ ఇంటరాక్షన్ ఆర్కిటెక్చర్‌లో రెండు రకాలు ఉన్నాయి: మొదటిది టూ-టైర్ క్లయింట్-సర్వర్ ఆర్కిటెక్చర్ అని పిలుస్తారు, రెండవది మల్టీ-టైర్ క్లయింట్-సర్వర్ ఆర్కిటెక్చర్ (కొన్నిసార్లు త్రీ-టైర్ ఆర్కిటెక్చర్ లేదా త్రీ-టైర్ ఆర్కిటెక్చర్ అని పిలుస్తారు, కానీ ఇది ఒక ప్రత్యేక సందర్భం).

క్లయింట్-సర్వర్ పరస్పర చర్య యొక్క రెండు-స్థాయి ఆర్కిటెక్చర్ యొక్క ఆపరేషన్ సూత్రం ఏమిటంటే, ఈ ప్రాసెసింగ్ ప్రక్రియలో ఇతర సర్వర్‌లను సూచించకుండా ఒక సర్వర్‌లో అభ్యర్థన యొక్క ప్రాసెసింగ్ జరుగుతుంది.

రెండు-స్థాయి క్లయింట్-సర్వర్ ఇంటరాక్షన్ మోడల్‌ను సాధారణ రేఖాచిత్రంగా గీయవచ్చు.

రెండు-స్థాయి క్లయింట్-సర్వర్ ఆర్కిటెక్చర్

క్లయింట్‌కి సంబంధించిన ప్రతిదీ మొదటి స్థాయి అని మరియు రెండవ స్థాయి సర్వర్‌కు సంబంధించిన ప్రతిదీ అని ఇక్కడ మీరు చూడవచ్చు.

వ్యాఖ్యలు
  • జనాదరణ పొందినది
  • కొత్తది
  • పాతది
వ్యాఖ్యానించడానికి మీరు తప్పనిసరిగా సైన్ ఇన్ చేసి ఉండాలి
ఈ పేజీకి ఇంకా ఎలాంటి వ్యాఖ్యలు లేవు