ఫిబ్రవరి 26న, మేము Apache Ignite GreenSource సమావేశాన్ని నిర్వహించాము, అక్కడ ఓపెన్ సోర్స్ ప్రాజెక్ట్కు సహకరించినవారు మాట్లాడారు
సాధారణంగా అపాచీ ఇగ్నైట్ అంటే ఏమిటో ప్రారంభిద్దాం. ఇది SQL, లావాదేవీలు మరియు కాషింగ్కు మద్దతుతో పంపిణీ చేయబడిన కీ/విలువ నిల్వ అయిన డేటాబేస్. అదనంగా, ఇగ్నైట్ కస్టమ్ సేవలను నేరుగా ఇగ్నైట్ క్లస్టర్లో అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. డెవలపర్కి ఇగ్నైట్ అందించే అన్ని సాధనాలకు యాక్సెస్ ఉంది - పంపిణీ చేయబడిన డేటా స్ట్రక్చర్లు, మెసేజింగ్, స్ట్రీమింగ్, కంప్యూట్ మరియు డేటా గ్రిడ్. ఉదాహరణకు, డేటా గ్రిడ్ని ఉపయోగిస్తున్నప్పుడు, డేటా నిల్వ కోసం ప్రత్యేక మౌలిక సదుపాయాలను నిర్వహించడంలో సమస్య ఏర్పడుతుంది మరియు ఫలితంగా వచ్చే ఓవర్హెడ్ ఖర్చులు అదృశ్యమవుతాయి.
సర్వీస్ గ్రిడ్ APIని ఉపయోగించి, మీరు డిప్లాయ్మెంట్ స్కీమ్ను పేర్కొనడం ద్వారా సేవను అమలు చేయవచ్చు మరియు తదనుగుణంగా, కాన్ఫిగరేషన్లోనే సేవను అందించవచ్చు.
సాధారణంగా, విస్తరణ పథకం అనేది క్లస్టర్ నోడ్లపై అమలు చేయవలసిన సందర్భాల సంఖ్యకు సూచన. రెండు సాధారణ విస్తరణ పథకాలు ఉన్నాయి. మొదటిది క్లస్టర్ సింగిల్టన్: ఏ సమయంలోనైనా, క్లస్టర్లో ఒక వినియోగదారు సేవ అందుబాటులో ఉంటుందని హామీ ఇవ్వబడుతుంది. రెండవది నోడ్ సింగిల్టన్: ప్రతి క్లస్టర్ నోడ్లో సేవ యొక్క ఒక ఉదాహరణ అమలు చేయబడుతుంది.
వినియోగదారు మొత్తం క్లస్టర్లోని సేవా సందర్భాల సంఖ్యను కూడా పేర్కొనవచ్చు మరియు తగిన నోడ్లను ఫిల్టర్ చేయడానికి సూచనను నిర్వచించవచ్చు. ఈ దృష్టాంతంలో, సర్వీస్ గ్రిడ్ స్వయంగా సేవలను అమలు చేయడానికి సరైన పంపిణీని గణిస్తుంది.
అదనంగా, అఫినిటీ సర్వీస్ వంటి ఫీచర్ కూడా ఉంది. అఫినిటీ అనేది టోపోలాజీలో విభజనలకు కీల సంబంధాన్ని మరియు నోడ్లకు పార్టీల సంబంధాన్ని నిర్వచించే ఒక ఫంక్షన్. కీని ఉపయోగించి, మీరు డేటా నిల్వ చేయబడే ప్రాథమిక నోడ్ని నిర్ణయించవచ్చు. ఈ విధంగా మీరు మీ స్వంత సేవను కీ మరియు అఫినిటీ ఫంక్షన్ కాష్తో అనుబంధించవచ్చు. అఫినిటీ ఫంక్షన్ మారితే, ఆటోమేటిక్ రీడెప్లాయ్మెంట్ జరుగుతుంది. ఈ విధంగా, సేవ ఎల్లప్పుడూ తారుమారు చేయడానికి అవసరమైన డేటాకు దగ్గరగా ఉంటుంది మరియు తదనుగుణంగా, సమాచారాన్ని యాక్సెస్ చేసే ఓవర్హెడ్ను తగ్గిస్తుంది. ఈ పథకాన్ని ఒక రకమైన కొలోకేటెడ్ కంప్యూటింగ్ అని పిలుస్తారు.
సర్వీస్ గ్రిడ్ యొక్క అందం ఏమిటో ఇప్పుడు మేము కనుగొన్నాము, దాని అభివృద్ధి చరిత్ర గురించి మాట్లాడుదాం.
ఇంతకు ముందు ఏం జరిగింది
సర్వీస్ గ్రిడ్ యొక్క మునుపటి అమలు ఇగ్నైట్ యొక్క లావాదేవీ ప్రతిరూప సిస్టమ్ కాష్పై ఆధారపడింది. ఇగ్నైట్లోని "కాష్" అనే పదం నిల్వను సూచిస్తుంది. అంటే, మీరు అనుకున్నట్లుగా ఇది తాత్కాలికమైనది కాదు. కాష్ ప్రతిరూపం మరియు ప్రతి నోడ్ మొత్తం డేటా సెట్ను కలిగి ఉన్నప్పటికీ, కాష్ లోపల అది విభజించబడిన ప్రాతినిధ్యాన్ని కలిగి ఉంటుంది. ఇది నిల్వ ఆప్టిమైజేషన్ కారణంగా ఉంది.
వినియోగదారు సేవను అమలు చేయాలనుకున్నప్పుడు ఏమి జరిగింది?
- క్లస్టర్లోని అన్ని నోడ్లు అంతర్నిర్మిత నిరంతర ప్రశ్న మెకానిజంను ఉపయోగించి నిల్వలో డేటాను నవీకరించడానికి సభ్యత్వాన్ని పొందాయి.
- ఇనిషియేటింగ్ నోడ్, రీడ్-కమిటెడ్ ట్రాన్సాక్షన్ కింద, సీరియల్ ఇన్స్టాన్స్తో సహా సర్వీస్ కాన్ఫిగరేషన్ను కలిగి ఉన్న డేటాబేస్లో రికార్డ్ చేసింది.
- కొత్త ఎంట్రీ గురించి తెలియజేయబడినప్పుడు, సమన్వయకర్త కాన్ఫిగరేషన్ ఆధారంగా పంపిణీని లెక్కించారు. ఫలిత వస్తువు డేటాబేస్కు తిరిగి వ్రాయబడింది.
- నోడ్ పంపిణీలో భాగమైతే, కోఆర్డినేటర్ దానిని అమలు చేయాల్సి ఉంటుంది.
మాకు ఏది సరిపోలేదు
ఏదో ఒక సమయంలో మేము నిర్ధారణకు వచ్చాము: ఇది సేవలతో పని చేసే మార్గం కాదు. అనేక కారణాలున్నాయి.
విస్తరణ సమయంలో ఏదైనా లోపం సంభవించినట్లయితే, ప్రతిదీ జరిగిన నోడ్ యొక్క లాగ్ల నుండి మాత్రమే అది కనుగొనబడుతుంది. అసమకాలిక విస్తరణ మాత్రమే ఉంది, కాబట్టి విస్తరణ పద్ధతి నుండి వినియోగదారుకు నియంత్రణను తిరిగి అందించిన తర్వాత, సేవను ప్రారంభించడానికి కొంత అదనపు సమయం అవసరం - మరియు ఈ సమయంలో వినియోగదారు దేనినీ నియంత్రించలేరు. సర్వీస్ గ్రిడ్ను మరింత అభివృద్ధి చేయడానికి, కొత్త ఫీచర్లను రూపొందించడానికి, కొత్త వినియోగదారులను ఆకర్షించడానికి మరియు ప్రతి ఒక్కరి జీవితాన్ని సులభతరం చేయడానికి, ఏదో ఒక మార్పు అవసరం.
కొత్త సర్వీస్ గ్రిడ్ని డిజైన్ చేస్తున్నప్పుడు, మేము ముందుగా సింక్రోనస్ డిప్లాయ్మెంట్ యొక్క హామీని అందించాలనుకుంటున్నాము: వినియోగదారు API నుండి నియంత్రణను తిరిగి పొందిన వెంటనే, అతను వెంటనే సేవలను ఉపయోగించవచ్చు. డిప్లాయ్మెంట్ ఎర్రర్లను హ్యాండిల్ చేసే సామర్థ్యాన్ని కూడా ఇనిషియేటర్కి ఇవ్వాలని నేను కోరుకున్నాను.
అదనంగా, నేను అమలును సులభతరం చేయాలనుకుంటున్నాను, అంటే, లావాదేవీల నుండి దూరంగా మరియు రీబ్యాలెన్సింగ్. కాష్ ప్రతిరూపం మరియు బ్యాలెన్సింగ్ లేనప్పటికీ, అనేక నోడ్లతో పెద్ద విస్తరణ సమయంలో సమస్యలు తలెత్తాయి. టోపోలాజీ మారినప్పుడు, నోడ్లు సమాచారాన్ని మార్పిడి చేసుకోవాలి మరియు పెద్ద విస్తరణతో, ఈ డేటా చాలా బరువు ఉంటుంది.
టోపోలాజీ అస్థిరంగా ఉన్నప్పుడు, కోఆర్డినేటర్ సేవల పంపిణీని మళ్లీ లెక్కించాల్సి ఉంటుంది. మరియు సాధారణంగా, మీరు అస్థిర టోపోలాజీపై లావాదేవీలతో పని చేయవలసి వచ్చినప్పుడు, ఇది కష్టమైన-అంచనా-లోపాలకు దారి తీస్తుంది.
సమస్యలు
సమస్యలు లేకుండా ప్రపంచ మార్పులు ఏమిటి? వీటిలో మొదటిది టోపోలాజీలో మార్పు. మీరు ఏ క్షణంలోనైనా, సేవా విస్తరణ సమయంలో కూడా, ఒక నోడ్ క్లస్టర్లోకి ప్రవేశించవచ్చు లేదా వదిలివేయవచ్చని మీరు అర్థం చేసుకోవాలి. అంతేకాకుండా, విస్తరణ సమయంలో నోడ్ క్లస్టర్లో చేరినట్లయితే, సేవల గురించిన మొత్తం సమాచారాన్ని స్థిరంగా కొత్త నోడ్కి బదిలీ చేయడం అవసరం. మరియు మేము ఇప్పటికే అమలు చేయబడిన వాటి గురించి మాత్రమే కాకుండా, ప్రస్తుత మరియు భవిష్యత్తు విస్తరణల గురించి కూడా మాట్లాడుతున్నాము.
ప్రత్యేక జాబితాలో సేకరించగలిగే సమస్యలలో ఇది ఒకటి:
- నోడ్ స్టార్టప్లో స్థిరంగా కాన్ఫిగర్ చేయబడిన సేవలను ఎలా అమలు చేయాలి?
- క్లస్టర్ నుండి నోడ్ను వదిలివేయడం - నోడ్ సేవలను హోస్ట్ చేస్తే ఏమి చేయాలి?
- సమన్వయకర్త మారినట్లయితే ఏమి చేయాలి?
- క్లయింట్ క్లస్టర్కి మళ్లీ కనెక్ట్ అయినట్లయితే ఏమి చేయాలి?
- యాక్టివేషన్/డీయాక్టివేషన్ రిక్వెస్ట్లను ప్రాసెస్ చేయాలి మరియు ఎలా?
- వారు కాష్ విధ్వంసం కోసం పిలిచినట్లయితే మరియు మేము దానితో అనుబంధిత సేవలను కలిగి ఉన్నట్లయితే?
అంతే కాదు.
నిర్ణయం
లక్ష్యంగా, మేము సందేశాలను ఉపయోగించి ప్రాసెస్ కమ్యూనికేషన్ అమలుతో ఈవెంట్ ఆధారిత విధానాన్ని ఎంచుకున్నాము. కమ్యూనికేషన్-స్పై మరియు డిస్కవరీ-స్పై - ఇగ్నైట్ ఇప్పటికే రెండు భాగాలను అమలు చేస్తోంది.
కమ్యూనికేషన్-స్పై నోడ్లను నేరుగా కమ్యూనికేట్ చేయడానికి మరియు సందేశాలను ఫార్వార్డ్ చేయడానికి అనుమతిస్తుంది. పెద్ద మొత్తంలో డేటాను పంపడానికి ఇది బాగా సరిపోతుంది. డిస్కవరీ-స్పి క్లస్టర్లోని అన్ని నోడ్లకు సందేశాన్ని పంపడానికి మిమ్మల్ని అనుమతిస్తుంది. ప్రామాణిక అమలులో, ఇది రింగ్ టోపోలాజీని ఉపయోగించి చేయబడుతుంది. జూకీపర్తో ఏకీకరణ కూడా ఉంది, ఈ సందర్భంలో స్టార్ టోపోలాజీ ఉపయోగించబడుతుంది. గమనించదగ్గ మరో ముఖ్యమైన విషయం ఏమిటంటే, డిస్కవరీ-స్పై సందేశం ఖచ్చితంగా అన్ని నోడ్లకు సరైన క్రమంలో పంపిణీ చేయబడుతుందని హామీ ఇస్తుంది.
విస్తరణ ప్రోటోకాల్ను చూద్దాం. విస్తరణ మరియు అన్ప్లాయ్మెంట్ కోసం అన్ని వినియోగదారు అభ్యర్థనలు Discovery-spi ద్వారా పంపబడతాయి. ఇది క్రింది వాటిని ఇస్తుంది హామీలు:
- క్లస్టర్లోని అన్ని నోడ్ల ద్వారా అభ్యర్థన స్వీకరించబడుతుంది. కోఆర్డినేటర్ మారినప్పుడు అభ్యర్థనను ప్రాసెస్ చేయడం కొనసాగించడానికి ఇది అనుమతిస్తుంది. ఒక సందేశంలో, ప్రతి నోడ్లో సర్వీస్ కాన్ఫిగరేషన్ మరియు దాని సీరియల్ ఇన్స్టాన్స్ వంటి అవసరమైన అన్ని మెటాడేటా ఉంటుంది.
- మెసేజ్ డెలివరీ యొక్క ఖచ్చితమైన క్రమం కాన్ఫిగరేషన్ వైరుధ్యాలు మరియు పోటీ అభ్యర్థనలను పరిష్కరించడంలో సహాయపడుతుంది.
- టోపోలాజీలోకి నోడ్ ప్రవేశం డిస్కవరీ-స్పై ద్వారా కూడా ప్రాసెస్ చేయబడినందున, కొత్త నోడ్ సేవలతో పని చేయడానికి అవసరమైన మొత్తం డేటాను స్వీకరిస్తుంది.
అభ్యర్థనను స్వీకరించినప్పుడు, క్లస్టర్లోని నోడ్లు దానిని ధృవీకరిస్తాయి మరియు ప్రాసెసింగ్ టాస్క్లను సృష్టిస్తాయి. ఈ టాస్క్లు క్యూలో ఉంచబడతాయి మరియు ప్రత్యేక వర్కర్ ద్వారా మరొక థ్రెడ్లో ప్రాసెస్ చేయబడతాయి. ఇది ఈ విధంగా అమలు చేయబడుతుంది ఎందుకంటే విస్తరణకు గణనీయమైన సమయం పడుతుంది మరియు ఖరీదైన ఆవిష్కరణ ప్రవాహాన్ని సహించలేనంత ఆలస్యం చేస్తుంది.
క్యూ నుండి అన్ని అభ్యర్థనలు విస్తరణ మేనేజర్ ద్వారా ప్రాసెస్ చేయబడతాయి. ఇది ఒక ప్రత్యేక కార్యకర్తను కలిగి ఉంది, అది ఈ క్యూ నుండి ఒక పనిని లాగి, విస్తరణను ప్రారంభించడానికి దాన్ని ప్రారంభిస్తుంది. దీని తరువాత, క్రింది చర్యలు జరుగుతాయి:
- ప్రతి నోడ్ స్వతంత్రంగా కొత్త నిర్ణయాత్మక అసైన్మెంట్ ఫంక్షన్కు ధన్యవాదాలు పంపిణీని గణిస్తుంది.
- నోడ్లు విస్తరణ ఫలితాలతో సందేశాన్ని రూపొందించి, దానిని సమన్వయకర్తకు పంపుతాయి.
- కోఆర్డినేటర్ అన్ని సందేశాలను సమగ్రం చేస్తుంది మరియు మొత్తం విస్తరణ ప్రక్రియ యొక్క ఫలితాన్ని రూపొందిస్తుంది, ఇది డిస్కవరీ-స్పై ద్వారా క్లస్టర్లోని అన్ని నోడ్లకు పంపబడుతుంది.
- ఫలితం వచ్చినప్పుడు, విస్తరణ ప్రక్రియ ముగుస్తుంది, ఆ తర్వాత పని క్యూ నుండి తీసివేయబడుతుంది.
కొత్త ఈవెంట్-ఆధారిత డిజైన్: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java
విస్తరణ సమయంలో లోపం సంభవించినట్లయితే, నోడ్ వెంటనే కోఆర్డినేటర్కు పంపే సందేశంలో ఈ లోపాన్ని కలిగి ఉంటుంది. సందేశం అగ్రిగేషన్ తర్వాత, సమన్వయకర్త విస్తరణ సమయంలో అన్ని లోపాల గురించి సమాచారాన్ని కలిగి ఉంటారు మరియు ఈ సందేశాన్ని Discovery-spi ద్వారా పంపుతారు. క్లస్టర్లోని ఏదైనా నోడ్లో ఎర్రర్ సమాచారం అందుబాటులో ఉంటుంది.
సర్వీస్ గ్రిడ్లోని అన్ని ముఖ్యమైన ఈవెంట్లు ఈ ఆపరేటింగ్ అల్గారిథమ్ని ఉపయోగించి ప్రాసెస్ చేయబడతాయి. ఉదాహరణకు, టోపోలాజీని మార్చడం కూడా డిస్కవరీ-స్పి ద్వారా సందేశం. మరియు సాధారణంగా, ముందు ఉన్నదానితో పోల్చినప్పుడు, ప్రోటోకాల్ చాలా తేలికైనది మరియు నమ్మదగినదిగా మారింది. విస్తరణ సమయంలో ఏదైనా పరిస్థితిని నిర్వహించడానికి సరిపోతుంది.
తరువాత ఏమి జరుగుతుంది
ఇప్పుడు ప్రణాళికల గురించి. ఇగ్నైట్ ప్రాజెక్ట్లో ఏదైనా పెద్ద మార్పు ఐఇపి అని పిలువబడే ఇగ్నైట్ ఇంప్రూవ్మెంట్ ఇనిషియేటివ్గా పూర్తవుతుంది. సర్వీస్ గ్రిడ్ రీడిజైన్లో IEP కూడా ఉంది -
మేము IEPలోని పనులను 2 దశలుగా విభజించాము. మొదటిది ఒక ప్రధాన దశ, ఇది విస్తరణ ప్రోటోకాల్ను మళ్లీ పని చేయడం. ఇది ఇప్పటికే మాస్టర్లో చేర్చబడింది, మీరు కొత్త సర్వీస్ గ్రిడ్ను ప్రయత్నించవచ్చు, ఇది వెర్షన్ 2.8లో కనిపిస్తుంది. రెండవ దశ అనేక ఇతర పనులను కలిగి ఉంటుంది:
- హాట్ రీడెప్లాయ్
- సేవా సంస్కరణ
- పెరిగిన తప్పు సహనం
- సన్నని క్లయింట్
- వివిధ కొలమానాలను పర్యవేక్షించడం మరియు గణించడం కోసం సాధనాలు
చివరగా, లోపాలను తట్టుకునే, అధిక-లభ్యత వ్యవస్థలను నిర్మించడం కోసం మేము సర్వీస్ గ్రిడ్పై మీకు సలహా ఇస్తాము. మమ్మల్ని సందర్శించడానికి కూడా మేము మిమ్మల్ని ఆహ్వానిస్తున్నాము
మూలం: www.habr.com