பிப்ரவரி 26 அன்று, நாங்கள் Apache Ignite GreenSource சந்திப்பை நடத்தினோம், அங்கு திறந்த மூல திட்டத்திற்கு பங்களிப்பாளர்கள் பேசினர். . இந்த சமூகத்தின் வாழ்க்கையில் ஒரு முக்கியமான நிகழ்வு கூறுகளின் மறுசீரமைப்பு ஆகும் , இது தனிப்பயன் மைக்ரோ சர்வீஸை நேரடியாக ஒரு இக்னைட் கிளஸ்டரில் வரிசைப்படுத்த உங்களை அனுமதிக்கிறது. இந்த கடினமான செயல்முறை குறித்து அவர் கூட்டத்தில் பேசினார் , மென்பொருள் பொறியாளர் மற்றும் இரண்டு ஆண்டுகளுக்கும் மேலாக Apache Ignite பங்களிப்பாளர்.

பொதுவாக அப்பாச்சி இக்னைட் என்றால் என்ன என்று ஆரம்பிக்கலாம். இது ஒரு தரவுத்தளமாகும், இது SQL, பரிவர்த்தனை மற்றும் தேக்ககத்திற்கான ஆதரவுடன் விநியோகிக்கப்பட்ட விசை/மதிப்பு சேமிப்பகமாகும். கூடுதலாக, இக்னைட் தனிப்பயன் சேவைகளை நேரடியாக இக்னைட் கிளஸ்டரில் பயன்படுத்த உங்களை அனுமதிக்கிறது. விநியோகிக்கப்பட்ட தரவு கட்டமைப்புகள், செய்தியிடல், ஸ்ட்ரீமிங், கம்ப்யூட் மற்றும் டேட்டா கிரிட் - இக்னைட் வழங்கும் அனைத்து கருவிகளுக்கும் டெவலப்பருக்கு அணுகல் உள்ளது. எடுத்துக்காட்டாக, டேட்டா கிரிட்டைப் பயன்படுத்தும் போது, தரவுச் சேமிப்பிற்கான தனி உள்கட்டமைப்பை நிர்வகிப்பதில் உள்ள சிக்கல் மற்றும் அதன் விளைவாக ஏற்படும் மேல்நிலைச் செலவுகள் மறைந்துவிடும்.

சர்வீஸ் கிரிட் API ஐப் பயன்படுத்தி, வரிசைப்படுத்தல் திட்டத்தைக் குறிப்பிடுவதன் மூலம் நீங்கள் ஒரு சேவையை வரிசைப்படுத்தலாம், அதன்படி, உள்ளமைவில் சேவையே இருக்கும்.
பொதுவாக, வரிசைப்படுத்தல் திட்டம் என்பது கிளஸ்டர் முனைகளில் பயன்படுத்தப்பட வேண்டிய நிகழ்வுகளின் எண்ணிக்கையைக் குறிக்கும். இரண்டு பொதுவான வரிசைப்படுத்தல் திட்டங்கள் உள்ளன. முதலாவது கிளஸ்டர் சிங்கிள்டன்: எந்த நேரத்திலும், பயனர் சேவையின் ஒரு நிகழ்வு கிளஸ்டரில் கிடைக்கும் என்பது உறுதி. இரண்டாவது நோட் சிங்கிள்டன்: சேவையின் ஒரு நிகழ்வு ஒவ்வொரு கிளஸ்டர் முனையிலும் பயன்படுத்தப்படுகிறது.

பயனர் முழு கிளஸ்டரில் உள்ள சேவை நிகழ்வுகளின் எண்ணிக்கையையும் குறிப்பிடலாம் மற்றும் பொருத்தமான முனைகளை வடிகட்டுவதற்கான முன்னறிவிப்பை வரையறுக்கலாம். இந்தச் சூழ்நிலையில், சர்வீஸ் கிரிட் தானே சேவைகளைப் பயன்படுத்துவதற்கான உகந்த விநியோகத்தைக் கணக்கிடும்.
கூடுதலாக, இணைப்பு சேவை போன்ற ஒரு அம்சம் உள்ளது. அஃபினிட்டி என்பது பகிர்வுகளுக்கான விசைகளின் உறவையும், இடவியலில் முனைகளுக்கு பார்ட்டிகளின் உறவையும் வரையறுக்கும் ஒரு செயல்பாடு ஆகும். விசையைப் பயன்படுத்தி, தரவு சேமிக்கப்படும் முதன்மை முனையை நீங்கள் தீர்மானிக்கலாம். இந்த வழியில் நீங்கள் உங்கள் சொந்த சேவையை ஒரு முக்கிய மற்றும் தொடர்பு செயல்பாடு தற்காலிக சேமிப்புடன் இணைக்கலாம். தொடர்பு செயல்பாடு மாறினால், தானியங்கி மறுபகிர்வு ஏற்படும். இந்த வழியில், சேவையானது எப்போதும் கையாள வேண்டிய தரவுக்கு அருகில் அமைந்திருக்கும், அதன்படி, தகவலை அணுகுவதற்கான மேல்நிலையைக் குறைக்கும். இந்த திட்டத்தை ஒரு வகையான கூட்டு கணினி என்று அழைக்கலாம்.
சேவை கட்டத்தின் அழகு என்ன என்பதை இப்போது நாம் கண்டுபிடித்துள்ளோம், அதன் வளர்ச்சி வரலாற்றைப் பற்றி பேசலாம்.
முன்பு என்ன நடந்தது
சர்வீஸ் கிரிட்டின் முந்தைய செயல்படுத்தல் இக்னைட்டின் பரிவர்த்தனை பிரதி அமைப்பு தற்காலிக சேமிப்பை அடிப்படையாகக் கொண்டது. இக்னைட்டில் உள்ள "கேச்" என்ற சொல் சேமிப்பகத்தைக் குறிக்கிறது. அதாவது, நீங்கள் நினைப்பது போல் இது தற்காலிகமான ஒன்றல்ல. கேச் நகலெடுக்கப்பட்டாலும், ஒவ்வொரு முனையிலும் முழு தரவுத் தொகுப்பு இருந்தாலும், தற்காலிக சேமிப்பிற்குள் அது பிரிக்கப்பட்ட பிரதிநிதித்துவத்தைக் கொண்டுள்ளது. இது சேமிப்பக உகப்பாக்கம் காரணமாகும்.

பயனர் சேவையைப் பயன்படுத்த விரும்பியபோது என்ன நடந்தது?
- உள்ளமைக்கப்பட்ட தொடர்ச்சியான வினவல் பொறிமுறையைப் பயன்படுத்தி சேமிப்பகத்தில் தரவைப் புதுப்பிக்க கிளஸ்டரில் உள்ள அனைத்து முனைகளும் குழுசேர்ந்தன.
- துவக்க முனை, படிக்க-உறுதிப்படுத்தப்பட்ட பரிவர்த்தனையின் கீழ், வரிசைப்படுத்தப்பட்ட நிகழ்வு உட்பட சேவை உள்ளமைவைக் கொண்ட தரவுத்தளத்தில் ஒரு பதிவை உருவாக்கியது.
- ஒரு புதிய நுழைவு அறிவிக்கப்படும்போது, ஒருங்கிணைப்பாளர் உள்ளமைவின் அடிப்படையில் விநியோகத்தைக் கணக்கிட்டார். இதன் விளைவாக பொருள் தரவுத்தளத்தில் மீண்டும் எழுதப்பட்டது.
- ஒரு முனை விநியோகத்தின் ஒரு பகுதியாக இருந்தால், ஒருங்கிணைப்பாளர் அதை வரிசைப்படுத்த வேண்டும்.
எது நமக்குப் பொருந்தவில்லை
ஒரு கட்டத்தில் நாங்கள் முடிவுக்கு வந்தோம்: இது சேவைகளுடன் பணிபுரியும் வழி அல்ல. பல காரணங்கள் இருந்தன.
வரிசைப்படுத்தலின் போது ஏதேனும் பிழை ஏற்பட்டால், எல்லாம் நடந்த முனையின் பதிவுகளிலிருந்து மட்டுமே அதைக் கண்டறிய முடியும். ஒத்திசைவற்ற வரிசைப்படுத்தல் மட்டுமே இருந்தது, எனவே வரிசைப்படுத்தல் முறையிலிருந்து பயனருக்கு கட்டுப்பாட்டைத் திரும்பப் பெற்ற பிறகு, சேவையைத் தொடங்க சில கூடுதல் நேரம் தேவைப்பட்டது - மேலும் இந்த நேரத்தில் பயனரால் எதையும் கட்டுப்படுத்த முடியவில்லை. சேவை கட்டத்தை மேலும் மேம்படுத்த, புதிய அம்சங்களை உருவாக்க, புதிய பயனர்களை ஈர்க்க மற்றும் அனைவரின் வாழ்க்கையையும் எளிதாக்க, ஏதாவது மாற்ற வேண்டும்.
புதிய சேவை கட்டத்தை வடிவமைக்கும் போது, நாங்கள் முதலில் ஒத்திசைவான வரிசைப்படுத்துதலுக்கான உத்தரவாதத்தை வழங்க விரும்பினோம்: பயனர் API இலிருந்து கட்டுப்பாட்டை திரும்பியவுடன், அவர் உடனடியாக சேவைகளைப் பயன்படுத்தலாம். வரிசைப்படுத்தல் பிழைகளைக் கையாளும் திறனை துவக்கியவருக்கு வழங்கவும் விரும்பினேன்.
கூடுதலாக, நான் செயல்படுத்துவதை எளிதாக்க விரும்பினேன், அதாவது, பரிவர்த்தனைகளில் இருந்து விலகி, மறு சமநிலைப்படுத்துதல். கேச் நகலெடுக்கப்பட்டாலும், சமநிலை இல்லை என்ற போதிலும், பல முனைகளுடன் ஒரு பெரிய வரிசைப்படுத்தலின் போது சிக்கல்கள் எழுந்தன. இடவியல் மாறும்போது, கணுக்கள் தகவலைப் பரிமாறிக்கொள்ள வேண்டும், மேலும் ஒரு பெரிய வரிசைப்படுத்தலுடன், இந்தத் தரவு நிறைய எடையுள்ளதாக இருக்கும்.
இடவியல் நிலையற்றதாக இருந்தபோது, ஒருங்கிணைப்பாளர் சேவைகளின் விநியோகத்தை மீண்டும் கணக்கிட வேண்டும். பொதுவாக, நீங்கள் ஒரு நிலையற்ற இடவியலில் பரிவர்த்தனைகளுடன் பணிபுரிய வேண்டியிருக்கும் போது, இது கடினமான-கணிப்பு பிழைகளுக்கு வழிவகுக்கும்.
பிரச்சினைகள்
சிக்கல்கள் இல்லாமல் உலகளாவிய மாற்றங்கள் என்ன? இவற்றில் முதலாவது இடவியலில் ஏற்பட்ட மாற்றம். எந்த நேரத்திலும், சேவை வரிசைப்படுத்தலின் தருணத்தில் கூட, ஒரு முனை கிளஸ்டருக்குள் நுழையலாம் அல்லது வெளியேறலாம் என்பதை நீங்கள் புரிந்து கொள்ள வேண்டும். மேலும், வரிசைப்படுத்தும் நேரத்தில் முனை கிளஸ்டருடன் இணைந்தால், சேவைகள் பற்றிய அனைத்து தகவல்களையும் புதிய முனைக்கு மாற்றுவது அவசியம். நாங்கள் ஏற்கனவே பயன்படுத்தப்பட்டதைப் பற்றி மட்டுமல்ல, தற்போதைய மற்றும் எதிர்கால வரிசைப்படுத்தல்களைப் பற்றியும் பேசுகிறோம்.
இது ஒரு தனி பட்டியலில் சேகரிக்கக்கூடிய சிக்கல்களில் ஒன்றாகும்:
- கணு தொடக்கத்தில் நிலையாக உள்ளமைக்கப்பட்ட சேவைகளை எவ்வாறு பயன்படுத்துவது?
- கிளஸ்டரிலிருந்து ஒரு முனையை விட்டு வெளியேறுதல் - முனை சேவைகளை வழங்கினால் என்ன செய்வது?
- ஒருங்கிணைப்பாளர் மாறியிருந்தால் என்ன செய்வது?
- கிளையண்ட் மீண்டும் கிளஸ்டருடன் இணைந்தால் என்ன செய்வது?
- செயல்படுத்தல்/முடக்க கோரிக்கைகள் செயலாக்கப்பட வேண்டுமா மற்றும் எப்படி?
- அவர்கள் தற்காலிக சேமிப்பை அழிப்பதற்காக அழைத்தால் என்ன செய்வது, அதனுடன் தொடர்புடைய சேவைகள் எங்களிடம் இருந்தால் என்ன செய்வது?
அதுமட்டுமல்ல.
முடிவு
ஒரு இலக்காக, செய்திகளைப் பயன்படுத்தி செயல்முறைத் தொடர்பைச் செயல்படுத்தும் நிகழ்வு உந்துதல் அணுகுமுறையைத் தேர்ந்தெடுத்தோம். இக்னிட் ஏற்கனவே இரண்டு கூறுகளை செயல்படுத்துகிறது, இது முனைகள் தங்களுக்குள் செய்திகளை அனுப்ப அனுமதிக்கிறது - தொடர்பு-ஸ்பை மற்றும் கண்டுபிடிப்பு-ஸ்பை.

Communication-spi முனைகளை நேரடியாகவும், செய்திகளை அனுப்பவும் அனுமதிக்கிறது. பெரிய அளவிலான தரவுகளை அனுப்புவதற்கு இது மிகவும் பொருத்தமானது. டிஸ்கவரி-ஸ்பை கிளஸ்டரில் உள்ள அனைத்து முனைகளுக்கும் செய்தியை அனுப்ப உங்களை அனுமதிக்கிறது. நிலையான செயலாக்கத்தில், இது ரிங் டோபாலஜியைப் பயன்படுத்தி செய்யப்படுகிறது. Zookeeper உடன் ஒருங்கிணைப்பும் உள்ளது, இந்த விஷயத்தில் ஒரு நட்சத்திர இடவியல் பயன்படுத்தப்படுகிறது. கவனிக்க வேண்டிய மற்றொரு முக்கியமான விஷயம் என்னவென்றால், அனைத்து முனைகளிலும் செய்தி கண்டிப்பாக சரியான வரிசையில் வழங்கப்படும் என்பதற்கு டிஸ்கவரி-ஸ்பை உத்தரவாதம் அளிக்கிறது.
வரிசைப்படுத்தல் நெறிமுறையைப் பார்ப்போம். வரிசைப்படுத்தல் மற்றும் பணிநீக்கம் செய்வதற்கான அனைத்து பயனர் கோரிக்கைகளும் Discovery-spi வழியாக அனுப்பப்படுகின்றன. இது பின்வருவனவற்றை வழங்குகிறது உத்தரவாதம் அளிக்கிறது:
- கோரிக்கையானது கிளஸ்டரில் உள்ள அனைத்து முனைகளிலும் பெறப்படும். ஒருங்கிணைப்பாளர் மாறும்போது கோரிக்கை செயலாக்கத்தைத் தொடர இது அனுமதிக்கும். ஒரு செய்தியில், ஒவ்வொரு முனையும் சேவை உள்ளமைவு மற்றும் அதன் வரிசைப்படுத்தப்பட்ட நிகழ்வு போன்ற தேவையான அனைத்து மெட்டாடேட்டாவையும் கொண்டிருக்கும்.
- செய்தி விநியோகத்தின் கடுமையான வரிசைப்படுத்தல் உள்ளமைவு முரண்பாடுகள் மற்றும் போட்டியிடும் கோரிக்கைகளைத் தீர்க்க உதவுகிறது.
- டோபாலஜியில் முனையின் நுழைவு கண்டுபிடிப்பு-ஸ்பை வழியாகவும் செயலாக்கப்படுவதால், புதிய முனையானது சேவைகளுடன் பணிபுரிய தேவையான அனைத்து தரவையும் பெறும்.
கோரிக்கை பெறப்பட்டால், கிளஸ்டரில் உள்ள முனைகள் அதைச் சரிபார்த்து, செயலாக்கப் பணிகளை உருவாக்குகின்றன. இந்த பணிகள் வரிசைப்படுத்தப்பட்டு பின்னர் ஒரு தனி தொழிலாளி மூலம் மற்றொரு நூலில் செயலாக்கப்படும். வரிசைப்படுத்தல் கணிசமான அளவு நேரம் எடுக்கும் மற்றும் விலையுயர்ந்த கண்டுபிடிப்பு ஓட்டத்தை தாங்கமுடியாமல் தாமதப்படுத்தும் என்பதால் இது இவ்வாறு செயல்படுத்தப்படுகிறது.
வரிசையில் இருந்து அனைத்து கோரிக்கைகளும் வரிசைப்படுத்தல் மேலாளரால் செயலாக்கப்படும். இந்த வரிசையில் இருந்து ஒரு பணியை இழுத்து, வரிசைப்படுத்தலைத் தொடங்க அதைத் துவக்கும் சிறப்புத் தொழிலாளி உள்ளது. இதற்குப் பிறகு, பின்வரும் நடவடிக்கைகள் நிகழ்கின்றன:
- ஒவ்வொரு கணுவும் ஒரு புதிய நிர்ணயித்தல் ஒதுக்கீட்டுச் செயல்பாட்டின் காரணமாக விநியோகத்தை சுயாதீனமாகக் கணக்கிடுகிறது.
- முனைகள் வரிசைப்படுத்தலின் முடிவுகளுடன் ஒரு செய்தியை உருவாக்கி அதை ஒருங்கிணைப்பாளருக்கு அனுப்புகின்றன.
- ஒருங்கிணைப்பாளர் அனைத்து செய்திகளையும் ஒருங்கிணைத்து, முழு வரிசைப்படுத்தல் செயல்முறையின் முடிவையும் உருவாக்குகிறார், இது க்ளஸ்டரில் உள்ள அனைத்து முனைகளுக்கும் டிஸ்கவரி-ஸ்பை வழியாக அனுப்பப்படும்.
- முடிவு கிடைத்ததும், வரிசைப்படுத்தல் செயல்முறை முடிவடைகிறது, அதன் பிறகு பணி வரிசையில் இருந்து அகற்றப்படும்.

புதிய நிகழ்வு-உந்துதல் வடிவமைப்பு: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java
வரிசைப்படுத்தலின் போது பிழை ஏற்பட்டால், கணு உடனடியாக இந்த பிழையை ஒருங்கிணைப்பாளருக்கு அனுப்பும் செய்தியில் சேர்க்கிறது. செய்தி திரட்டலுக்குப் பிறகு, ஒருங்கிணைப்பாளரிடம் வரிசைப்படுத்தலின் போது ஏற்படும் அனைத்துப் பிழைகள் பற்றிய தகவல்களும் இருப்பதோடு, இந்தச் செய்தியை Discovery-spi வழியாக அனுப்பும். கிளஸ்டரில் உள்ள எந்த முனையிலும் பிழைத் தகவல் கிடைக்கும்.
சர்வீஸ் கிரிட்டில் உள்ள அனைத்து முக்கியமான நிகழ்வுகளும் இந்த இயக்க அல்காரிதத்தைப் பயன்படுத்தி செயலாக்கப்படும். எடுத்துக்காட்டாக, இடவியலை மாற்றுவது கண்டுபிடிப்பு-ஸ்பை வழியாக ஒரு செய்தியாகும். பொதுவாக, முன்பு இருந்ததை ஒப்பிடும்போது, நெறிமுறை மிகவும் இலகுரக மற்றும் நம்பகமானதாக மாறியது. வரிசைப்படுத்தலின் போது எந்த சூழ்நிலையையும் கையாள போதுமானது.
அடுத்து என்ன நடக்கும்
இப்போது திட்டங்களைப் பற்றி. இக்னைட் திட்டத்தில் எந்த பெரிய மாற்றமும் IEP எனப்படும் இக்னைட் மேம்பாட்டு முயற்சியாக முடிக்கப்படுகிறது. சேவை கட்டம் மறுவடிவமைப்பு ஒரு IEP ஐயும் கொண்டுள்ளது - "சேவைக் கட்டத்தில் எண்ணெய் மாற்றம்" என்ற கேலி தலைப்புடன். ஆனால் உண்மையில், நாங்கள் இயந்திர எண்ணெயை மாற்றவில்லை, ஆனால் முழு இயந்திரத்தையும் மாற்றினோம்.
IEP இல் உள்ள பணிகளை 2 கட்டங்களாகப் பிரித்தோம். முதலாவது ஒரு முக்கிய கட்டமாகும், இது வரிசைப்படுத்தல் நெறிமுறையை மறுவேலை செய்வதைக் கொண்டுள்ளது. இது ஏற்கனவே மாஸ்டரில் சேர்க்கப்பட்டுள்ளது, நீங்கள் புதிய சேவை கட்டத்தை முயற்சி செய்யலாம், இது பதிப்பு 2.8 இல் தோன்றும். இரண்டாவது கட்டத்தில் பல பணிகள் உள்ளன:
- சூடான மறுசீரமைப்பு
- சேவை பதிப்பு
- அதிகரித்த தவறு சகிப்புத்தன்மை
- மெல்லிய வாடிக்கையாளர்
- பல்வேறு அளவீடுகளைக் கண்காணித்து கணக்கிடுவதற்கான கருவிகள்
இறுதியாக, பிழை-சகிப்புத்தன்மை கொண்ட, அதிக கிடைக்கும் அமைப்புகளை உருவாக்குவதற்கான சேவை கட்டம் குறித்து நாங்கள் உங்களுக்கு ஆலோசனை கூறலாம். எங்களை சந்திக்கவும் உங்களை அழைக்கிறோம் и உங்கள் அனுபவத்தை பகிர்ந்து கொள்ளுங்கள். உங்கள் அனுபவம் சமூகத்திற்கு மிகவும் முக்கியமானது; அடுத்து எங்கு செல்ல வேண்டும், எதிர்காலத்தில் கூறுகளை எவ்வாறு உருவாக்குவது என்பதைப் புரிந்துகொள்ள இது உதவும்.
ஆதாரம்: www.habr.com
