RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை

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

தவறு சகிப்புத்தன்மை, நிலைத்தன்மை மற்றும் உயர் கிடைக்கும் (HA) உத்திகள் மற்றும் ஒவ்வொரு மூலோபாயமும் செய்யும் பரிமாற்றங்கள் ஆகியவற்றைப் பார்ப்போம். RabbitMQ முனைகளின் தொகுப்பில் இயங்க முடியும் - பின்னர் விநியோகிக்கப்பட்ட அமைப்பாக வகைப்படுத்தப்படுகிறது. விநியோகிக்கப்பட்ட அமைப்புகளுக்கு வரும்போது, ​​நாம் அடிக்கடி நிலைத்தன்மை மற்றும் கிடைக்கும் தன்மை பற்றி பேசுகிறோம்.

இந்த கருத்துக்கள் ஒரு அமைப்பு தோல்வியடையும் போது எவ்வாறு செயல்படுகிறது என்பதை விவரிக்கிறது. நெட்வொர்க் இணைப்பு தோல்வி, சர்வர் செயலிழப்பு, ஹார்ட் டிரைவ் செயலிழப்பு, குப்பை சேகரிப்பு, பாக்கெட் இழப்பு அல்லது நெட்வொர்க் இணைப்பு மந்தநிலை காரணமாக சர்வர் தற்காலிகமாக கிடைக்கவில்லை. இவை அனைத்தும் தரவு இழப்பு அல்லது மோதல்களுக்கு வழிவகுக்கும். அனைத்து தோல்வி சூழ்நிலைகளுக்கும் முற்றிலும் சீரான (தரவு இழப்பு, தரவு வேறுபாடு இல்லை) மற்றும் கிடைக்கக்கூடிய (வாசிப்புகள் மற்றும் எழுதுதல்களை ஏற்கும்) ஒரு அமைப்பை அமைப்பது கிட்டத்தட்ட சாத்தியமற்றது என்று மாறிவிடும்.

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

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

ஒற்றை முனை மீள்தன்மை முதன்மையானவை

நெகிழ்வான வரிசை/வழித்தடத்தல்

RabbitMQ இல் இரண்டு வகையான வரிசைகள் உள்ளன: நீடித்தது மற்றும் நீடித்தது. அனைத்து வரிசைகளும் Mnesia தரவுத்தளத்தில் சேமிக்கப்படும். முனை தொடக்கத்தில் நீடித்த வரிசைகள் மீண்டும் விளம்பரப்படுத்தப்படுகின்றன, இதனால் மறுதொடக்கம், கணினி செயலிழப்புகள் அல்லது சர்வர் செயலிழப்புகள் (தரவு நிலைத்திருக்கும் வரை) உயிர்வாழும். இதன் பொருள் நீங்கள் ரூட்டிங் (பரிமாற்றம்) மற்றும் வரிசையை மீள்தன்மை கொண்டதாக அறிவிக்கும் வரை, வரிசைப்படுத்தல்/வழித்தடுதல் உள்கட்டமைப்பு மீண்டும் ஆன்லைனில் வரும்.

முனை மறுதொடக்கம் செய்யப்படும்போது, ​​நிலையற்ற வரிசைகள் மற்றும் ரூட்டிங் அகற்றப்படும்.

நிலையான செய்திகள்

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 1. நிலைத்தன்மை அணி

க்யூ மிரரிங் கொண்ட கிளஸ்டரிங்

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

வரிசை பிரதிபலிப்பு:

  • ஒரு முக்கிய வரிசை (மாஸ்டர்), இது அனைத்து எழுத மற்றும் படிக்க கட்டளைகளைப் பெறுகிறது
  • ஒன்று அல்லது அதற்கு மேற்பட்ட கண்ணாடிகள் அனைத்து செய்திகளையும் மெட்டாடேட்டாவையும் பிரதான வரிசையில் இருந்து பெறும். இந்த கண்ணாடிகள் அளவிடுதலுக்காக இல்லை, ஆனால் பணிநீக்கத்திற்காக மட்டுமே.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 2. வரிசை பிரதிபலிப்பு

பிரதிபலிப்பு பொருத்தமான கொள்கையால் அமைக்கப்பட்டுள்ளது. அதில் நீங்கள் பிரதி குணகம் மற்றும் வரிசை அமைந்திருக்க வேண்டிய முனைகளையும் கூட தேர்ந்தெடுக்கலாம். எடுத்துக்காட்டுகள்:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (ஒரு மாஸ்டர் மற்றும் ஒரு கண்ணாடி)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

வெளியீட்டாளர் உறுதிப்படுத்தல்

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

தோல்வி வரிசை

ஒரு தரகர் வெளியேறும்போது அல்லது செயலிழக்கும்போது, ​​அந்த முனையிலுள்ள அனைத்து வரிசை தலைவர்களும் (மாஸ்டர்கள்) அதனுடன் சேர்ந்து செயலிழக்கிறார்கள். கிளஸ்டர் ஒவ்வொரு மாஸ்டரின் பழமையான கண்ணாடியைத் தேர்ந்தெடுத்து அதை புதிய மாஸ்டராக விளம்பரப்படுத்துகிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 3. பல பிரதிபலிப்பு வரிசைகள் மற்றும் அவற்றின் கொள்கைகள்

தரகர் 3 குறைகிறது. ப்ரோக்கர் 2 இல் உள்ள க்யூ சி மிரர் முதன்மையாக உயர்த்தப்படுகிறது என்பதைக் கவனத்தில் கொள்ளவும். தரகர் 1 இல் வரிசை C க்காக ஒரு புதிய கண்ணாடி உருவாக்கப்பட்டது என்பதையும் கவனத்தில் கொள்ளவும். RabbitMQ எப்போதும் உங்கள் கொள்கைகளில் குறிப்பிடப்பட்டுள்ள நகலெடுக்கும் காரணியை பராமரிக்க முயற்சிக்கும்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 4. தரகர் 3 தோல்வியடைகிறது, இதனால் வரிசை C தோல்வியடைகிறது

அடுத்த தரகர் 1 விழுகிறது! எங்களிடம் ஒரே ஒரு தரகர் மட்டுமே இருக்கிறார். வரிசை B கண்ணாடி மாஸ்டராக உயர்த்தப்படுகிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
படம். 5

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

இந்த வழக்கில், தரகர் 1 இன் இழப்பு முடிந்தது, தரவு இருந்தது, அதனால் பிரதிபலிக்கப்படாத வரிசை B முற்றிலும் இழக்கப்பட்டது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 6. தரகர் 1 சேவைக்குத் திரும்புகிறார்

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 7. தரகர் 3 சேவைக்குத் திரும்புகிறது. அனைத்து முக்கிய வரிசைகளும் ஒரே முனையில்!

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

ஒத்திசைவு

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

இந்த ஒத்திசைவு தானாகவோ அல்லது கைமுறையாகவோ செய்யப்படுகிறது மற்றும் வரிசைக் கொள்கையைப் பயன்படுத்தி நிர்வகிக்கப்படுகிறது. ஒரு உதாரணத்தைப் பார்ப்போம்.

எங்களிடம் இரண்டு பிரதிபலிப்பு வரிசைகள் உள்ளன. வரிசை A தானாக ஒத்திசைக்கப்படுகிறது, மற்றும் வரிசை B கைமுறையாக ஒத்திசைக்கப்படுகிறது. இரண்டு வரிசைகளிலும் பத்து செய்திகள் உள்ளன.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 8. வெவ்வேறு ஒத்திசைவு முறைகளுடன் இரண்டு வரிசைகள்

இப்போது நாம் தரகர் 3 ஐ இழக்கிறோம்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 9. தரகர் 3 வீழ்ந்தது

தரகர் 3 சேவைக்குத் திரும்புகிறார். புதிய முனையில் உள்ள ஒவ்வொரு வரிசைக்கும் ஒரு கண்ணாடியை கிளஸ்டர் உருவாக்குகிறது மற்றும் புதிய வரிசை A ஐ மாஸ்டருடன் தானாகவே ஒத்திசைக்கிறது. இருப்பினும், புதிய வரிசை B இன் கண்ணாடி காலியாக உள்ளது. இந்த வழியில் வரிசை A இல் முழு பணிநீக்கம் மற்றும் ஏற்கனவே உள்ள வரிசை B செய்திகளுக்கு ஒரே ஒரு கண்ணாடி மட்டுமே உள்ளது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 10. வரிசை A இன் புதிய கண்ணாடி ஏற்கனவே உள்ள அனைத்து செய்திகளையும் பெறுகிறது, ஆனால் வரிசை B இன் புதிய கண்ணாடி பெறாது.

இரண்டு வரிசைகளிலும் இன்னும் பத்து செய்திகள் வருகின்றன. தரகர் 2 பின்னர் செயலிழந்து, வரிசை A ஆனது, ப்ரோக்கர் 1 இல் உள்ள பழைய கண்ணாடியில் மீண்டும் உருளும். அது தோல்வியடையும் போது தரவு இழப்பு ஏற்படாது. வரிசை B இல், மாஸ்டரில் இருபது செய்திகளும் கண்ணாடியில் பத்து மட்டுமே உள்ளன, ஏனெனில் இந்த வரிசை அசல் பத்து செய்திகளைப் பிரதிபலிக்கவில்லை.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 11. வரிசை A ஆனது செய்திகளை இழக்காமல் தரகர் 1 க்கு திரும்பும்

இரண்டு வரிசைகளிலும் இன்னும் பத்து செய்திகள் வருகின்றன. இப்போது ப்ரோக்கர் 1 செயலிழக்கிறது. வரிசை A செய்திகளை இழக்காமல் கண்ணாடிக்கு எளிதாக மாறுகிறது. இருப்பினும், பி வரிசையில் சிக்கல் உள்ளது. இந்த கட்டத்தில் நாம் கிடைக்கும் அல்லது நிலைத்தன்மையை மேம்படுத்தலாம்.

அணுகலை மேம்படுத்த விரும்பினால், கொள்கை ha-promote-on-failure இல் நிறுவப்பட வேண்டும் எப்போதும். இது இயல்புநிலை மதிப்பு, எனவே நீங்கள் கொள்கையை குறிப்பிடவே முடியாது. இந்த விஷயத்தில், ஒத்திசைக்கப்படாத கண்ணாடிகளில் தோல்விகளை நாங்கள் அனுமதிக்கிறோம். இது செய்திகளை இழக்கச் செய்யும், ஆனால் வரிசை படிக்கக்கூடியதாகவும் எழுதக்கூடியதாகவும் இருக்கும்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 12. வரிசை A ஆனது செய்திகளை இழக்காமல் ப்ரோக்கர் 3க்கு மாற்றப்பட்டது. வரிசை B ஆனது, பத்து செய்திகள் தொலைந்துவிட்ட நிலையில், தரகர் 3க்கு திரும்பும்

நாமும் நிறுவலாம் ha-promote-on-failure அர்த்தத்தில் when-synced. இந்த நிலையில், கண்ணாடியில் திரும்புவதற்குப் பதிலாக, தரகர் 1 அதன் தரவுகளுடன் ஆன்லைன் பயன்முறைக்குத் திரும்பும் வரை வரிசை காத்திருக்கும். அது திரும்பிய பிறகு, முக்கிய வரிசை தரவு இழப்பு இல்லாமல் தரகர் 1 இல் திரும்பும். தரவு பாதுகாப்பிற்காக கிடைக்கும் தன்மை தியாகம் செய்யப்படுகிறது. ஆனால் இது ஒரு அபாயகரமான பயன்முறையாகும், இது முழுமையான தரவு இழப்புக்கு கூட வழிவகுக்கும், இதை நாம் விரைவில் பார்ப்போம்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 13. தரகர் 1 ஐ இழந்த பிறகு வரிசை B கிடைக்காது

“தானியங்கி ஒத்திசைவை ஒருபோதும் பயன்படுத்தாமல் இருப்பது சிறந்ததா?” என்று நீங்கள் கேட்கலாம். பதில், ஒத்திசைவு என்பது ஒரு தடுப்பு நடவடிக்கையாகும். ஒத்திசைவின் போது, ​​முக்கிய வரிசை எந்த வாசிப்பு அல்லது எழுதும் செயல்பாடுகளைச் செய்ய முடியாது!

ஒரு உதாரணத்தைப் பார்ப்போம். இப்போது மிக நீண்ட வரிசைகள் உள்ளன. அவர்கள் எப்படி இவ்வளவு அளவுக்கு வளர முடியும்? பல காரணங்களுக்காக:

  • வரிசைகள் செயலில் பயன்படுத்தப்படவில்லை
  • இவை அதிவேக வரிசைகள், இப்போது நுகர்வோர் மெதுவாக உள்ளனர்
  • இது அதிவேக வரிசைகள், ஒரு தடுமாற்றம் மற்றும் நுகர்வோர் பிடிக்கிறார்கள்

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 14. வெவ்வேறு ஒத்திசைவு முறைகளுடன் இரண்டு பெரிய வரிசைகள்

இப்போது தரகர் 3 விழுகிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 15. ப்ரோக்கர் 3 விழுகிறது, ஒவ்வொரு வரிசையிலும் ஒரு மாஸ்டரையும் கண்ணாடியையும் விட்டுவிட்டு

தரகர் 3 மீண்டும் ஆன்லைனில் வருகிறது மற்றும் புதிய கண்ணாடிகள் உருவாக்கப்படுகின்றன. முதன்மை வரிசை A, ஏற்கனவே உள்ள செய்திகளை புதிய கண்ணாடியில் பிரதிபலிக்கத் தொடங்குகிறது, இந்த நேரத்தில் வரிசை கிடைக்காது. தரவைப் பிரதிபலிக்க இரண்டு மணிநேரம் ஆகும், இதன் விளைவாக இந்த வரிசையில் இரண்டு மணிநேரம் வேலையில்லா நேரமாகிறது!

இருப்பினும், வரிசை B முழு நேரத்திலும் கிடைக்கும். அணுகலுக்காக சில பணிநீக்கங்களை அவள் தியாகம் செய்தாள்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 16. ஒத்திசைவின் போது வரிசை கிடைக்காது

இரண்டு மணிநேரத்திற்குப் பிறகு, A வரிசையும் கிடைக்கும், மேலும் வாசிப்பு மற்றும் எழுதுதல்களை மீண்டும் ஏற்கத் தொடங்கலாம்.

புதுப்பித்தல்

ஒத்திசைவின் போது இந்த தடுப்பு நடத்தை, மிகப் பெரிய வரிசைகள் கொண்ட கிளஸ்டர்களைப் புதுப்பிப்பதை கடினமாக்குகிறது. ஒரு கட்டத்தில், முதன்மை முனை மறுதொடக்கம் செய்யப்பட வேண்டும், அதாவது ஒரு கண்ணாடிக்கு மாறுதல் அல்லது சேவையகம் மேம்படுத்தப்படும் போது வரிசையை முடக்குதல். மாற்றத்தைத் தேர்வுசெய்தால், கண்ணாடிகள் ஒத்திசைக்கப்படாவிட்டால், செய்திகளை இழப்போம். இயல்பாக, ஒரு தரகர் செயலிழப்பின் போது, ​​ஒத்திசைக்கப்படாத கண்ணாடியில் ஒரு செயலிழப்பு செய்யப்படாது. இதன் பொருள், தரகர் திரும்பியவுடன், நாங்கள் எந்த செய்திகளையும் இழக்க மாட்டோம், ஒரே சேதம் ஒரு எளிய வரிசையில் இருந்தது. ஒரு தரகர் துண்டிக்கப்படும் போது நடத்தை விதிகள் கொள்கையால் அமைக்கப்படுகின்றன ha-promote-on-shutdown. நீங்கள் இரண்டு மதிப்புகளில் ஒன்றை அமைக்கலாம்:

  • always= ஒத்திசைக்கப்படாத கண்ணாடிகளுக்கு மாறுதல் இயக்கப்பட்டது
  • when-synced= ஒத்திசைக்கப்பட்ட கண்ணாடிக்கு மட்டும் மாறுதல், இல்லையெனில் வரிசை படிக்க முடியாததாகவும் எழுத முடியாததாகவும் மாறும். தரகர் திரும்பியவுடன் வரிசை சேவைக்குத் திரும்புகிறது

ஒரு வழி அல்லது வேறு, பெரிய வரிசைகளில் நீங்கள் தரவு இழப்பு மற்றும் கிடைக்காதது ஆகியவற்றுக்கு இடையே தேர்வு செய்ய வேண்டும்.

கிடைக்கும் தன்மை தரவு பாதுகாப்பை மேம்படுத்தும் போது

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

இங்கே நீங்கள் பின்வருவனவற்றைக் கருத்தில் கொள்ள வேண்டும்:

  • வெளியீட்டாளர் ஒரு பிழையைத் திருப்பி, அப்ஸ்ட்ரீம் சேவை அல்லது பயனரை மீண்டும் முயற்சிக்க முடியுமா?
  • வெளியீட்டாளர் செய்தியை உள்நாட்டிலோ அல்லது தரவுத்தளத்திலோ சேமிக்க முடியுமா?

வெளியீட்டாளர் செய்தியை மட்டுமே நிராகரிக்க முடியும் என்றால், உண்மையில், அணுகலை மேம்படுத்துவது தரவு பாதுகாப்பையும் மேம்படுத்துகிறது.

எனவே, ஒரு சமநிலையைத் தேட வேண்டும், மேலும் தீர்வு குறிப்பிட்ட சூழ்நிலையைப் பொறுத்தது.

ha-promote-on-failure=when-synced உடன் சிக்கல்கள்

யோசனை ha-promote-on-failure= போது-ஒத்திசைவு ஒத்திசைக்கப்படாத கண்ணாடிக்கு மாறுவதைத் தடுக்கிறோம், அதன் மூலம் தரவு இழப்பைத் தவிர்க்கிறோம். வரிசை படிக்க முடியாத அல்லது எழுத முடியாததாக உள்ளது. அதற்குப் பதிலாக, செயலிழந்த தரகரை அதன் தரவை அப்படியே மீட்டெடுக்க முயற்சிக்கிறோம், இதனால் தரவு இழப்பு இல்லாமல் முதன்மையாக செயல்பட முடியும்.

ஆனால் (இது பெரியது ஆனால்) தரகர் தனது தரவை இழந்திருந்தால், எங்களுக்கு ஒரு பெரிய சிக்கல் உள்ளது: வரிசை தொலைந்து விட்டது! எல்லா தரவுகளும் போய்விட்டன! பிரதான வரிசையைப் பிடிக்கும் கண்ணாடிகள் உங்களிடம் இருந்தாலும், அந்தக் கண்ணாடிகளும் நிராகரிக்கப்படும்.

அதே பெயரில் ஒரு முனையை மீண்டும் சேர்க்க, இழந்த முனையை (கட்டளையுடன்) மறந்துவிடுமாறு கிளஸ்டரிடம் சொல்கிறோம் rabbitmqctl மறக்க_கிளஸ்டர்_நோட்) மற்றும் அதே ஹோஸ்ட்பெயருடன் புதிய தரகரைத் தொடங்கவும். கிளஸ்டர் தொலைந்த முனையை நினைவில் வைத்திருக்கும் போது, ​​அது பழைய வரிசை மற்றும் ஒத்திசைக்கப்படாத கண்ணாடிகளை நினைவில் கொள்கிறது. ஒரு அனாதை முனையை மறக்கச் சொன்னால், அந்த வரிசையும் மறந்துவிடும். இப்போது நாம் அதை மீண்டும் அறிவிக்க வேண்டும். எங்களிடம் ஒரு பகுதி தரவுத் தொகுப்பைக் கொண்ட கண்ணாடிகள் இருந்தாலும், எல்லா தரவையும் இழந்துவிட்டோம். ஒத்திசைக்கப்படாத கண்ணாடிக்கு மாறுவது நல்லது!

எனவே, கையேடு ஒத்திசைவு (மற்றும் ஒத்திசைக்க தோல்வி) இணைந்து ha-promote-on-failure=when-synced, என் கருத்துப்படி, மிகவும் ஆபத்தானது. தரவு பாதுகாப்பிற்காக இந்த விருப்பம் இருப்பதாக ஆவணங்கள் கூறுகின்றன, ஆனால் இது இரட்டை முனைகள் கொண்ட கத்தி.

மாஸ்டர் மறுசீரமைப்பு

வாக்குறுதியளித்தபடி, ஒன்று அல்லது பல முனைகளில் அனைத்து எஜமானர்களின் திரட்சியின் சிக்கலுக்கு நாங்கள் திரும்புகிறோம். ரோலிங் கிளஸ்டர் புதுப்பித்தலின் விளைவாக கூட இது நிகழலாம். மூன்று முனை கிளஸ்டரில், அனைத்து முதன்மை வரிசைகளும் ஒன்று அல்லது இரண்டு முனைகளில் குவியும்.

மாஸ்டர்களை மறுசீரமைப்பது இரண்டு காரணங்களுக்காக சிக்கலாக இருக்கலாம்:

  • மறுசீரமைப்பைச் செய்ய நல்ல கருவிகள் எதுவும் இல்லை
  • வரிசை ஒத்திசைவு

மறுசீரமைப்பிற்கு மூன்றாம் தரப்பு உள்ளது நீட்சி, இது அதிகாரப்பூர்வமாக ஆதரிக்கப்படவில்லை. RabbitMQ கையேட்டில் மூன்றாம் தரப்பு செருகுநிரல்களைப் பற்றி கூறினார்: “சொருகி சில கூடுதல் கட்டமைப்பு மற்றும் அறிக்கையிடல் கருவிகளை வழங்குகிறது, ஆனால் RabbitMQ குழுவால் ஆதரிக்கப்படவில்லை அல்லது சரிபார்க்கப்படவில்லை. உங்கள் சொந்த ஆபத்தில் பயன்படுத்தவும்."

HA கொள்கைகள் மூலம் முக்கிய வரிசையை நகர்த்த மற்றொரு தந்திரம் உள்ளது. கையேட்டில் குறிப்பிடப்பட்டுள்ளது ஸ்கிரிப்ட் இதற்காக. இது இப்படி வேலை செய்கிறது:

  • தற்போதுள்ள HA கொள்கையை விட அதிக முன்னுரிமை கொண்ட தற்காலிக கொள்கையைப் பயன்படுத்தி அனைத்து கண்ணாடிகளையும் அகற்றும்.
  • முனை பயன்முறையைப் பயன்படுத்த HA தற்காலிகக் கொள்கையை மாற்றுகிறது, முதன்மை வரிசை மாற்றப்பட வேண்டிய முனையைக் குறிப்பிடுகிறது.
  • புஷ் இடம்பெயர்வுக்கான வரிசையை ஒத்திசைக்கிறது.
  • இடம்பெயர்வு முடிந்ததும், தற்காலிகக் கொள்கையை நீக்குகிறது. ஆரம்ப HA கொள்கை நடைமுறைக்கு வந்து தேவையான எண்ணிக்கையிலான கண்ணாடிகள் உருவாக்கப்படும்.

உங்களுக்கு பெரிய வரிசைகள் அல்லது கடுமையான பணிநீக்கத் தேவைகள் இருந்தால் இந்த அணுகுமுறை வேலை செய்யாமல் போகலாம்.

இப்போது RabbitMQ கிளஸ்டர்கள் நெட்வொர்க் பகிர்வுகளுடன் எவ்வாறு செயல்படுகின்றன என்பதைப் பார்ப்போம்.

இணைப்பு இழப்பு

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

RabbitMQ உடன் எங்களுக்கு இரண்டு முக்கிய விருப்பங்கள் உள்ளன:

  • தருக்கப் பிரிவை அனுமதிக்கவும் (பிளவு-மூளை). இது கிடைப்பதை உறுதி செய்கிறது, ஆனால் தரவு இழப்பை ஏற்படுத்தலாம்.
  • தருக்க பிரிவை முடக்கு. கிளையண்ட்கள் கிளஸ்டருடன் எவ்வாறு இணைகிறார்கள் என்பதைப் பொறுத்து குறுகிய கால இடைவெளியில் கிடைக்கும் இழப்பு ஏற்படலாம். இரண்டு முனை க்ளஸ்டரில் முழுமையாக கிடைக்காமல் போகலாம்.

ஆனால் தர்க்கரீதியான பிரிப்பு என்றால் என்ன? நெட்வொர்க் இணைப்புகளை இழப்பதால் ஒரு கிளஸ்டர் இரண்டாகப் பிரியும் போது இது நடக்கும். ஒவ்வொரு பக்கத்திலும், கண்ணாடிகள் ஒரு மாஸ்டராக உயர்த்தப்படுகின்றன, இதனால் இறுதியில் ஒரு முறைக்கு பல மாஸ்டர்கள் உள்ளனர்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 17. பிரதான வரிசை மற்றும் இரண்டு கண்ணாடிகள், ஒவ்வொன்றும் தனித்தனி முனையில். பின்னர் ஒரு பிணைய தோல்வி ஏற்படுகிறது மற்றும் ஒரு கண்ணாடி பிரிக்கப்பட்டது. பிரிக்கப்பட்ட கணு மற்ற இரண்டும் விழுந்துவிட்டதைக் கண்டு அதன் கண்ணாடியை எஜமானருக்கு ஊக்குவிக்கிறது. இப்போது எங்களிடம் இரண்டு முக்கிய வரிசைகள் உள்ளன, அவை எழுதக்கூடியவை மற்றும் படிக்கக்கூடியவை.

வெளியீட்டாளர்கள் இரு மாஸ்டர்களுக்கும் தரவை அனுப்பினால், வரிசையின் இரண்டு மாறுபட்ட நகல்களுடன் முடிவடையும்.

RabbitMQ இன் வெவ்வேறு முறைகள் கிடைக்கும் அல்லது நிலைத்தன்மையை வழங்குகின்றன.

புறக்கணிப்பு பயன்முறை (இயல்புநிலை)

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 18. மூன்று வெளியீட்டாளர்கள் மூன்று தரகர்களுடன் தொடர்புடையவர்கள். உள்நாட்டில், கிளஸ்டர் அனைத்து கோரிக்கைகளையும் ப்ரோக்கர் 2 இல் உள்ள முக்கிய வரிசைக்கு அனுப்புகிறது.

இப்போது நாம் தரகர் 3 ஐ இழக்கிறோம். மற்ற தரகர்கள் வீழ்ச்சியடைந்திருப்பதைக் கண்டு அவர் தனது கண்ணாடியை மாஸ்டரிடம் விளம்பரப்படுத்துகிறார். தர்க்கரீதியான பிரிப்பு இப்படித்தான் நிகழ்கிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 19. தருக்க பிரிவு (பிளவு-மூளை). பதிவுகள் இரண்டு முக்கிய வரிசைகளில் செல்கின்றன, மேலும் இரண்டு பிரதிகள் வேறுபடுகின்றன.

இணைப்பு மீட்டமைக்கப்பட்டது, ஆனால் தர்க்கரீதியான பிரிப்பு உள்ளது. நிர்வாகி இழக்கும் பக்கத்தை கைமுறையாக தேர்ந்தெடுக்க வேண்டும். கீழே உள்ள வழக்கில், நிர்வாகி தரகர் 3ஐ மறுதொடக்கம் செய்கிறார். அவரால் அனுப்ப முடியாத அனைத்து செய்திகளும் தொலைந்துவிட்டன.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 20. நிர்வாகி தரகர் 3 ஐ முடக்குகிறார்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 21. நிர்வாகி ப்ரோக்கர் 3 ஐத் தொடங்குகிறார், அது கிளஸ்டரில் இணைகிறது, அங்கு விடப்பட்ட அனைத்து செய்திகளையும் இழக்கிறது.

இணைப்பு இழப்பின் போது மற்றும் அதன் மறுசீரமைப்புக்குப் பிறகு, கிளஸ்டரும் இந்த வரிசையும் படிக்கவும் எழுதவும் கிடைக்கின்றன.

ஆட்டோஹீல் பயன்முறை

புறக்கணிப்பு பயன்முறையைப் போலவே செயல்படுகிறது, தவிர, இணைப்பைப் பிரித்து மீட்டமைத்த பிறகு கிளஸ்டர் தானாகவே இழக்கும் பக்கத்தைத் தேர்ந்தெடுக்கும். இழந்த பக்கம் காலியாகத் திரும்புகிறது, மேலும் அந்த பக்கம் மட்டும் அனுப்பப்பட்ட அனைத்து செய்திகளையும் வரிசை இழக்கிறது.

சிறுபான்மை பயன்முறையை இடைநிறுத்தவும்

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 22. மூன்று வெளியீட்டாளர்கள் மூன்று தரகர்களுடன் தொடர்புடையவர்கள். உள்நாட்டில், கிளஸ்டர் அனைத்து கோரிக்கைகளையும் ப்ரோக்கர் 2 இல் உள்ள முக்கிய வரிசைக்கு அனுப்புகிறது.

தரகர்கள் 1 மற்றும் 2 பின்னர் தரகர் 3 இலிருந்து பிரிந்தனர். அவர்களின் கண்ணாடியை முதன்மையாக உயர்த்துவதற்கு பதிலாக, தரகர் 3 இடைநிறுத்தப்பட்டு கிடைக்காது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 23. தரகர் 3 இடைநிறுத்தப்பட்டு, அனைத்து வாடிக்கையாளர்களையும் துண்டித்து, இணைப்பு கோரிக்கைகளை நிராகரிக்கிறார்.

இணைப்பு மீட்டமைக்கப்பட்டவுடன், அது கிளஸ்டருக்குத் திரும்பும்.

ப்ரோக்கர் 3 இல் முக்கிய வரிசை இருக்கும் மற்றொரு உதாரணத்தைப் பார்ப்போம்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 24. தரகர் 3 இல் முதன்மை வரிசை.

பின்னர் அதே இணைப்பு இழப்பு ஏற்படுகிறது. சிறிய பக்கத்தில் இருப்பதால் தரகர் 3 இடைநிறுத்தப்படுகிறது. மறுபுறம், ப்ரோக்கர் 3 விழுந்துவிட்டதை நோட்கள் பார்க்கின்றன, எனவே ப்ரோக்கர்ஸ் 1 மற்றும் 2ல் இருந்து பழைய கண்ணாடி மாஸ்டராக உயர்த்தப்படுகிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 25. தரகர் 2 கிடைக்கவில்லை என்றால், தரகர் 3 க்கு மாற்றம்.

இணைப்பு மீட்டமைக்கப்படும் போது, ​​தரகர் 3 கிளஸ்டரில் சேரும்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் கிளஸ்டர்களில் அதிக கிடைக்கும் தன்மை
அரிசி. 26. கிளஸ்டர் இயல்பான செயல்பாட்டிற்கு திரும்பியுள்ளது.

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

கிடைப்பதை உறுதிசெய்ய, வாடிக்கையாளர்கள் வெற்றிகரமாக ஹோஸ்டுடன் இணைந்திருப்பதை உறுதி செய்வது முக்கியம். எங்கள் விருப்பங்களைப் பார்ப்போம்.

வாடிக்கையாளர் இணைப்பை உறுதி செய்தல்

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

எங்கள் விருப்பங்கள்:

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

கண்டுபிடிப்புகள்

RabbitMQ கிளஸ்டரிங் அதன் நன்மைகள் மற்றும் தீமைகள் உள்ளன. மிகவும் கடுமையான குறைபாடுகள் பின்வருமாறு:

  • ஒரு கிளஸ்டரில் சேரும்போது, ​​கணுக்கள் அவற்றின் தரவை நிராகரிக்கின்றன;
  • ஒத்திசைவைத் தடுப்பதால் வரிசை கிடைக்காமல் போகும்.

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

  • நம்பமுடியாத நெட்வொர்க்.
  • நம்பமுடியாத சேமிப்பு.
  • மிக நீண்ட வரிசைகள்.

அதிக கிடைக்கும் அமைப்புகளுக்கு வரும்போது, ​​பின்வருவனவற்றைக் கவனியுங்கள்:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (அல்லது autoheal)
  • நிலையான செய்திகள்
  • சில முனை தோல்வியடையும் போது கிளையன்ட்கள் செயலில் உள்ள முனையுடன் இணைக்கப்படுவதை உறுதிசெய்க

நிலைத்தன்மைக்கு (தரவு பாதுகாப்பு), பின்வரும் அமைப்புகளைக் கவனியுங்கள்:

  • நுகர்வோர் தரப்பில் வெளியீட்டாளர் உறுதிப்படுத்தல் மற்றும் கைமுறை ஒப்புதல்கள்
  • ha-promote-on-failure=when-synced, வெளியீட்டாளர்கள் பின்னர் மீண்டும் முயற்சிக்கலாம் மற்றும் உங்களிடம் மிகவும் நம்பகமான சேமிப்பகம் இருந்தால்! இல்லையென்றால் போடுங்கள் =always.
  • ha-sync-mode=automatic (ஆனால் பெரிய செயலற்ற வரிசைகளுக்கு, கையேடு பயன்முறை தேவைப்படலாம்; மேலும், கிடைக்காததால் செய்திகள் இழக்கப்படுமா என்பதைக் கருத்தில் கொள்ளவும்)
  • சிறுபான்மை பயன்முறையை இடைநிறுத்தவும்
  • நிலையான செய்திகள்

தவறு சகிப்புத்தன்மை மற்றும் அதிக அளவில் கிடைக்கும் அனைத்து சிக்கல்களையும் நாங்கள் இன்னும் விவாதிக்கவில்லை; எடுத்துக்காட்டாக, நிர்வாக நடைமுறைகளை எவ்வாறு பாதுகாப்பாகச் செய்வது (ரோலிங் புதுப்பிப்புகள் போன்றவை). கூட்டமைப்பு மற்றும் மண்வெட்டி சொருகி பற்றியும் நாம் பேச வேண்டும்.

நான் வேறு எதையும் தவறவிட்டிருந்தால், தயவுசெய்து எனக்குத் தெரியப்படுத்தவும்.

என்னுடையதையும் பார்க்கவும் பதவியை, இந்தக் கட்டுரையில் விவரிக்கப்பட்டுள்ள சில செய்தி இழப்புக் காட்சிகளைச் சோதிக்க, டோக்கர் மற்றும் ப்ளாக்டேடைப் பயன்படுத்தி, RabbitMQ கிளஸ்டரில் நான் ஒரு அழிவைச் செய்கிறேன்.

தொடரின் முந்தைய கட்டுரைகள்:
எண். 1 - habr.com/ru/company/itsumma/blog/416629
எண். 2 - habr.com/ru/company/itsumma/blog/418389
எண். 3 - habr.com/ru/company/itsumma/blog/437446

ஆதாரம்: www.habr.com

கருத்தைச் சேர்