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

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

В கடந்த கட்டுரை தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மைக்காக RabbitMQ கிளஸ்டரிங்கைப் பார்த்தோம். இப்போது அப்பாச்சி காஃப்காவை ஆழமாக தோண்டுவோம்.

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 1. மூன்று தரகர்களிடையே நான்கு பிரிவுகள் விநியோகிக்கப்படுகின்றன

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

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

பகிர்வு தோல்வி

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

தரகர் 3 நெட்வொர்க்கை விட்டு வெளியேறுகிறார், மேலும் தரகர் 2 இல் பிரிவு 2 க்கு ஒரு புதிய தலைவர் தேர்ந்தெடுக்கப்படுகிறார்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 2. தரகர் 3 இறந்துவிடுகிறார் மற்றும் தரகர் 2 இல் அவரைப் பின்தொடர்பவர் பிரிவு 2 இன் புதிய தலைவராக தேர்ந்தெடுக்கப்பட்டார்

பின்னர் தரகர் 1 வெளியேறுகிறது மற்றும் பிரிவு 1 அதன் தலைவரை இழக்கிறது, அதன் பங்கு தரகர் 2 க்கு செல்கிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 3. இன்னும் ஒரு தரகர் இருக்கிறார். அனைத்து தலைவர்களும் பூஜ்ஜிய பணிநீக்கத்துடன் ஒரு தரகர் மீது உள்ளனர்

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

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

தரகர் 3 வரும்போது, ​​ஒரு பகிர்வுக்கு மூன்று பிரதிகளுக்குத் திரும்புவோம். ஆனால் அனைத்து தலைவர்களும் இன்னும் தரகர் 2 இல் உள்ளனர்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 5. தரகர்கள் 1 மற்றும் 3 ஐ மீட்டெடுத்த பிறகு தலைவர்களின் சமநிலையற்ற இடம்

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

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

இதை சரிசெய்ய, காஃப்கா இரண்டு விருப்பங்களை வழங்குகிறது:

  • விருப்பம் auto.leader.rebalance.enable=true கன்ட்ரோலர் முனை தானாகவே தலைவர்களை விருப்பமான பிரதிகளுக்கு மீண்டும் ஒதுக்கி அதன் மூலம் சீரான விநியோகத்தை மீட்டெடுக்க அனுமதிக்கிறது.
  • நிர்வாகி ஸ்கிரிப்டை இயக்க முடியும் kafka-preferred-replica-election.sh கைமுறையாக மாற்றுவதற்கு.

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

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

ஒத்திசைக்கப்பட்ட பிரதிகள் (ISR)

ISR என்பது "ஒத்திசைவு" (இன்-ஒத்திசைவு) என கருதப்படும் பகிர்வின் பிரதிகளின் தொகுப்பாகும். ஒரு தலைவர் இருக்கிறார், ஆனால் பின்பற்றுபவர்கள் இல்லை. ஒரு பின்தொடர்பவர் இடைவெளி காலாவதியாகும் முன், தலைவரின் அனைத்து செய்திகளின் சரியான நகல்களை எடுத்திருந்தால், அவர் ஒத்திசைக்கப்பட்டவராக கருதப்படுவார். replica.lag.time.max.ms.

பின்தொடர்பவர் ISR தொகுப்பிலிருந்து அகற்றப்பட்டால்:

  • இடைவெளிக்குத் தேர்ந்தெடுக்க கோரிக்கை வைக்கவில்லை replica.lag.time.max.ms (இறந்ததாகக் கருதப்படுகிறது)
  • இடைவெளியில் புதுப்பிக்க முடியவில்லை replica.lag.time.max.ms (மெதுவாகக் கருதப்படுகிறது)

பின்தொடர்பவர்கள் இடைவெளியில் மாதிரி கோரிக்கைகளை செய்கிறார்கள் replica.fetch.wait.max.ms, இது இயல்புநிலையாக 500ms ஆக இருக்கும்.

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

  • acks=0, உறுதிப்படுத்தல் அனுப்பப்படவில்லை
  • acks=1, தலைவர் தனது உள்ளூர் பதிவுக்கு ஒரு செய்தியை எழுதிய பிறகு உறுதிப்படுத்தல் அனுப்பப்படும்
  • acks=all, ISR இல் உள்ள அனைத்து பிரதிகளும் உள்ளூர் பதிவுகளுக்கு செய்தியை எழுதிய பிறகு உறுதிப்படுத்தல் அனுப்பப்படும்

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

Acks=1 மற்றும் ISR

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

இந்த எடுத்துக்காட்டில், உற்பத்தியாளருக்கு acks=1 மதிப்பு உள்ளது. பிரிவு மூன்று தரகர்களுக்கும் விநியோகிக்கப்படுகிறது. ப்ரோக்கர் 3 பின்னால் உள்ளது, இது எட்டு வினாடிகளுக்கு முன்பு லீடருடன் ஒத்திசைக்கப்பட்டது, இப்போது 7456 செய்திகள் பின்தங்கி உள்ளது. தரகர் 1 ஒரு வினாடி மட்டுமே பின்தங்கியிருந்தார். தலைவர் காத்திருக்காத மெதுவான அல்லது இறந்த பின்தொடர்பவர்களின் மேல்நிலை இல்லாமல், எங்கள் தயாரிப்பாளர் ஒரு செய்தியை அனுப்புகிறார் மற்றும் விரைவாக திரும்பப் பெறுகிறார்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 7. மூன்று பிரதிகள் கொண்ட ஐ.எஸ்.ஆர்

தரகர் 2 தோல்வியடைந்து, தயாரிப்பாளர் இணைப்புப் பிழையைப் பெறுகிறார். தலைமைத்துவம் தரகர் 1க்கு சென்ற பிறகு, 123 செய்திகளை இழக்கிறோம். தரகர் 1 இல் பின்தொடர்பவர் ISR இன் ஒரு பகுதியாக இருந்தார், ஆனால் அது வீழ்ச்சியடைந்தபோது தலைவருடன் முழுமையாக ஒத்திசைக்கப்படவில்லை.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 8. அது செயலிழக்கும்போது செய்திகள் தொலைந்துவிடும்

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 9. ஒரு சிறிய இடைவெளிக்குப் பிறகு செய்திகளை அனுப்புவது மீண்டும் தொடங்குகிறது

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

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

1 செய்திகளின் இழப்புடன் தரகர் 3 குறைந்து, தலைமைப் பொறுப்பு தரகர் 15286க்கு செல்கிறது! உற்பத்தியாளர் இணைப்பு பிழை செய்தியைப் பெறுகிறார். ISR க்கு வெளியே ஒரு தலைவராக மாறுவது அமைப்பால் மட்டுமே சாத்தியமானது unclean.leader.election.enable=true. இது நிறுவப்பட்டிருந்தால் தவறான, பின்னர் மாற்றம் ஏற்படாது மேலும் அனைத்து படிக்க மற்றும் எழுதும் கோரிக்கைகளும் நிராகரிக்கப்படும். இந்தச் சந்தர்ப்பத்தில், தரகர் 1 மீண்டும் தலைமைப் பொறுப்பை ஏற்கும் பிரதியில் அவரது அப்படியே தரவுகளுடன் திரும்புவதற்காக நாங்கள் காத்திருக்கிறோம்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 11. தரகர் 1 விழுகிறது. தோல்வி ஏற்பட்டால், அதிக எண்ணிக்கையிலான செய்திகள் இழக்கப்படும்

தயாரிப்பாளர் கடைசி தரகருடன் தொடர்பை ஏற்படுத்தி, அவர் இப்போது பிரிவின் தலைவராக இருப்பதைக் காண்கிறார். அவர் தரகர் 3 க்கு செய்திகளை அனுப்பத் தொடங்குகிறார்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 12. ஒரு சிறிய இடைவெளிக்குப் பிறகு, செய்திகள் பிரிவு 0 க்கு மீண்டும் அனுப்பப்படும்

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

அக்ஸ்=அனைத்து மற்றும் ஐ.எஸ்.ஆர்

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 13. மூன்று பிரதிகள் கொண்ட ஐ.எஸ்.ஆர். ஒன்று மெதுவாக இருப்பதால், பதிவு செய்வதில் தாமதம் ஏற்படுகிறது

நான்கு வினாடிகள் கூடுதல் தாமதத்திற்குப் பிறகு, தரகர் 2 ஒரு பேக்கை அனுப்புகிறார். அனைத்து பிரதிகளும் இப்போது முழுமையாக புதுப்பிக்கப்பட்டுள்ளன.

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

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

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

பின்னர் தரகர் 2 விழுகிறது மற்றும் தலைமை செய்திகளை இழக்காமல் தரகர் 1 க்கு செல்கிறது.

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

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

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

பின்னர் தரகர் 1 செயலிழந்து, முன்னணி தரகர் 3 க்கு 14238 செய்திகளை இழக்கிறது!

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 18. தரகர் 1 இறக்கும் மற்றும் தூய்மையற்ற அமைப்புடன் தலைமை மாற்றம் விரிவான தரவு இழப்பை ஏற்படுத்துகிறது

எங்களால் விருப்பத்தை நிறுவ முடியவில்லை தூய்மையற்ற.தலைவர்.தேர்தல்.இயக்கு அர்த்தத்தில் உண்மை. இயல்பாக, இது சமம் தவறான. அமைப்புகள் acks=அனைத்தும் с unclean.leader.election.enable=true சில கூடுதல் தரவு பாதுகாப்புடன் அணுகலை வழங்குகிறது. ஆனால் நீங்கள் பார்ப்பது போல், நாங்கள் இன்னும் செய்திகளை இழக்க நேரிடும்.

ஆனால் தரவு பாதுகாப்பை அதிகரிக்க விரும்பினால் என்ன செய்வது? நீங்கள் வைக்கலாம் unclean.leader.election.enable = பொய், ஆனால் இது தரவு இழப்பிலிருந்து நம்மைப் பாதுகாக்காது. தலைவர் கடுமையாக விழுந்து அதனுடன் தரவை எடுத்துக் கொண்டால், செய்திகள் இன்னும் தொலைந்துவிட்டன, மேலும் நிர்வாகி நிலைமையை மீட்டெடுக்கும் வரை கிடைக்கும் தன்மை இழக்கப்படும்.

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

Acks=all, min.insync.replicas மற்றும் ISR

தலைப்பு உள்ளமைவுடன் min.insync.replicas நாங்கள் தரவு பாதுகாப்பின் அளவை அதிகரிக்கிறோம். முந்தைய காட்சியின் கடைசி பகுதியை மீண்டும் பார்ப்போம், ஆனால் இந்த முறை min.insync.replicas=2.

எனவே தரகர் 2 க்கு ஒரு பிரதி தலைவர் இருக்கிறார் மற்றும் தரகர் 3 இல் பின்தொடர்பவர் ISR இலிருந்து அகற்றப்படுகிறார்.

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

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 20. ISRகளின் எண்ணிக்கை min.insync.replicas இல் குறிப்பிட்டதை விட ஒன்று குறைவாக உள்ளது

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

தரவு பாதுகாப்பிற்கு அணுகல் அவசியம் தேவைப்படும் போது

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

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

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

ISR இன் பொருள்

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

அர்த்தத்தை நாமே தேர்வு செய்கிறோம் replica.lag.time.max.ms உங்கள் தேவைகளுக்கு ஏற்ப. அடிப்படையில், இந்த அளவுரு என்பது எவ்வளவு தாமதத்தை நாம் எப்போது ஏற்கத் தயாராக இருக்கிறோம் என்பதைக் குறிக்கிறது acks=அனைத்தும். இயல்புநிலை மதிப்பு பத்து வினாடிகள். இது உங்களுக்கு நீண்டதாக இருந்தால், நீங்கள் அதைக் குறைக்கலாம். பின்தொடர்பவர்கள் அகற்றப்பட்டு அடிக்கடி சேர்க்கப்படுவதால், ஐஎஸ்ஆர் மாற்றங்களின் அதிர்வெண் அதிகரிக்கும்.

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

வாடிக்கையாளர் இணைப்பு உத்தரவாதம்

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

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

காஃப்கா ஒருமித்த கட்டிடக்கலை

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

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

விலங்கியல் காப்பாளர் கிளஸ்டரின் நிலையைச் சேமிக்கிறார்:

  • தலைப்புகளின் பட்டியல், பிரிவுகள், உள்ளமைவு, தற்போதைய தலைவர் பிரதிகள், விருப்பமான பிரதிகள்.
  • கிளஸ்டர் உறுப்பினர்கள். ஒவ்வொரு தரகரும் Zookeeper கிளஸ்டரை பிங் செய்கிறார்கள். குறிப்பிட்ட காலத்திற்குள் அது பிங்கைப் பெறவில்லை என்றால், தரகர் கிடைக்கவில்லை என Zookeeper பதிவு செய்கிறார்.
  • கட்டுப்படுத்திக்கான முக்கிய மற்றும் உதிரி முனைகளைத் தேர்ந்தெடுப்பது.

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

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

ஒவ்வொரு பிரிவு கட்டுப்படுத்திக்கும்:

  • ISR மற்றும் தலைவர் பற்றிய Zookeeper இல் தகவலைப் புதுப்பிக்கிறது;
  • இந்த பகிர்வின் பிரதியை வழங்கும் ஒவ்வொரு தரகருக்கும் ஒரு LeaderAndISRcommand ஐ அனுப்புகிறது, ISR மற்றும் தலைவர் பற்றி தரகர்களுக்கு தெரிவிக்கிறது.

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

ஒவ்வொரு தலைவரும் ISR களை ஆட்சேர்ப்பு செய்வதற்கு பொறுப்பு. அமைப்புகள் replica.lag.time.max.ms அங்கு யார் நுழைவார்கள் என்பதை தீர்மானிக்கிறது. ISR மாறும்போது, ​​தலைவர் புதிய தகவலை Zookeeper க்கு அனுப்புகிறார்.

ஜூகீப்பருக்கு ஏதேனும் மாற்றங்கள் ஏற்பட்டால், அது தோல்வியுற்றால், நிர்வாகமானது ஒரு புதிய தலைவருக்கு சீராக மாறுகிறது.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 21. காஃப்கா ஒருமித்த கருத்து

பிரதி நெறிமுறை

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

மாதிரி வினவல்கள், லாக் எண்ட் ஆஃப்செட் (LEO) மற்றும் ஹைவாட்டர் மார்க் (HW)

பின்தொடர்பவர்கள் அவ்வப்போது தலைவருக்குப் பெறுவதற்கான கோரிக்கைகளை அனுப்புவதாக நாங்கள் கருதுகிறோம். இயல்புநிலை இடைவெளி 500ms ஆகும். இது RabbitMQ இலிருந்து வேறுபடுகிறது, இதில் RabbitMQ பிரதிபலிப்பு வரிசை கண்ணாடியால் தொடங்கப்படுவதில்லை மாறாக மாஸ்டரால் தொடங்கப்படுகிறது. மாஸ்டர் கண்ணாடிகளுக்கு மாற்றங்களைத் தள்ளுகிறார்.

தலைவரும் பின்தொடர்பவர்களும் லாக் எண்ட் ஆஃப்செட் (LEO) மற்றும் Highwater (HW) லேபிளைச் சேமிக்கிறார்கள். LEO குறியானது உள்ளூர் பிரதியில் கடைசி செய்தியின் ஆஃப்செட்டைச் சேமிக்கிறது, மேலும் HW ஆனது கடைசி உறுதிப்பாட்டின் ஆஃப்செட்டைக் கொண்டுள்ளது. உறுதி நிலைக்கு, அனைத்து ISR பிரதிகளிலும் செய்தி தொடர்ந்து இருக்க வேண்டும் என்பதை நினைவில் கொள்ளுங்கள். இதன் பொருள் LEO பொதுவாக HW ஐ விட சற்று முன்னால் உள்ளது.

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

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

தலைவர் தோல்வி

ஒரு தலைவர் விழும்போது, ​​Zookeeper கட்டுப்படுத்திக்குத் தெரிவிக்கிறார், மேலும் அது ஒரு புதிய தலைவர் பிரதியைத் தேர்ந்தெடுக்கிறது. புதிய தலைவர் தனது LEO இன் படி புதிய HW குறியை அமைக்கிறார். பின்தொடர்பவர்கள் புதிய தலைவரைப் பற்றிய தகவலைப் பெறுவார்கள். காஃப்காவின் பதிப்பைப் பொறுத்து, பின்தொடர்பவர் இரண்டு காட்சிகளில் ஒன்றைத் தேர்ந்தெடுப்பார்:

  1. இது உள்ளூர் பதிவை அறியப்பட்ட HW க்கு துண்டித்து, இந்த குறிக்குப் பிறகு செய்திகளுக்கான கோரிக்கையை புதிய தலைவருக்கு அனுப்பும்.
  2. அவர் தலைவராக தேர்ந்தெடுக்கப்பட்ட நேரத்தில் HW ஐக் கண்டறியுமாறு தலைவருக்கு ஒரு கோரிக்கையை அனுப்புவார், பின்னர் இந்த ஆஃப்செட்டில் பதிவை துண்டிப்பார். இந்த ஆஃப்செட்டில் தொடங்கி அவ்வப்போது பெறுதல் கோரிக்கைகளை அது தொடங்கும்.

பின்தொடர்பவர் பின்வரும் காரணங்களுக்காக பதிவை துண்டிக்க வேண்டியிருக்கலாம்:

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

கிளஸ்டருடன் மீண்டும் இணைதல்

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

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

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

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

RabbitMQ ஐ விட காஃப்காவில் அதிகமான கூறுகள் உள்ளன, எனவே கிளஸ்டர் துண்டிக்கப்படும் போது அது மிகவும் சிக்கலான நடத்தைகளைக் கொண்டுள்ளது. ஆனால் காஃப்கா முதலில் க்ளஸ்டர்களுக்காக வடிவமைக்கப்பட்டது, எனவே தீர்வுகள் நன்கு சிந்திக்கப்படுகின்றன.

கீழே பல இணைப்பு தோல்வி சூழ்நிலைகள் உள்ளன:

  • காட்சி 1: பின்தொடர்பவர் தலைவரைப் பார்க்கவில்லை, ஆனால் உயிரியல் பூங்கா பராமரிப்பாளரைப் பார்க்கிறார்.
  • காட்சி 2: தலைவர் பின்தொடர்பவர்களைக் காணவில்லை, ஆனால் உயிரியல் பூங்காக் காப்பாளரைப் பார்க்கிறார்.
  • காட்சி 3: பின்தொடர்பவர் தலைவரைப் பார்க்கிறார், ஆனால் உயிரியல் பூங்கா பராமரிப்பாளரைப் பார்க்கவில்லை.
  • காட்சி 4: தலைவர் பின்தொடர்பவர்களைப் பார்க்கிறார், ஆனால் மிருகக்காட்சிசாலைக்காரரைப் பார்க்கவில்லை.
  • காட்சி 5: பின்தொடர்பவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பர் இரண்டிலிருந்தும் முற்றிலும் வேறுபட்டவர்.
  • காட்சி 6: தலைவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பர் இரண்டிலிருந்தும் முற்றிலும் வேறுபட்டவர்.
  • காட்சி 7: காஃப்கா கன்ட்ரோலர் நோட் மற்றொரு காஃப்கா முனையைப் பார்க்க முடியாது.
  • காட்சி 8: காஃப்கா கன்ட்ரோலர் ஜூகீப்பரைப் பார்க்கவில்லை.

ஒவ்வொரு காட்சிக்கும் அதன் சொந்த நடத்தை உள்ளது.

காட்சி 1: பின்தொடர்பவர் தலைவரைப் பார்க்கவில்லை, ஆனால் ஜூகீப்பரைப் பார்க்கிறார்

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 22. காட்சி 1: மூன்று பிரதிகளின் ISR

இணைப்பு தோல்வியானது தரகர் 3 ஐ தரகர்கள் 1 மற்றும் 2 இலிருந்து பிரிக்கிறது, ஆனால் ஜூகீப்பரிடமிருந்து அல்ல. தரகர் 3 இனி பெறுதல் கோரிக்கைகளை அனுப்ப முடியாது. காலம் கடந்த பிறகு replica.lag.time.max.ms இது ISR இலிருந்து அகற்றப்பட்டது மற்றும் செய்தி கமிட்களில் பங்கேற்காது. இணைப்பு மீட்டமைக்கப்பட்டவுடன், அது மீண்டும் கோரிக்கைகளைப் பெறத் தொடங்கும் மற்றும் தலைவரைப் பிடிக்கும்போது ISR இல் சேரும். மிருகக்காட்சிசாலை பராமரிப்பாளர் தொடர்ந்து பிங்ஸைப் பெறுவார் மற்றும் தரகர் உயிருடன் இருக்கிறார் என்று கருதுவார்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 23. காட்சி 1: replica.lag.time.max.ms இடைவெளியில் ISR இலிருந்து எந்தப் பெறுதல் கோரிக்கையும் வரவில்லை என்றால், தரகர் இலிருந்து அகற்றப்படுவார்

RabbitMQ இல் உள்ளது போல் பிளவு-மூளை அல்லது முனை இடைநீக்கம் இல்லை. மாறாக, பணிநீக்கம் குறைக்கப்படுகிறது.

காட்சி 2: தலைவர் பின்தொடர்பவர்களைப் பார்க்கவில்லை, ஆனால் ஜூகீப்பரைப் பார்க்கிறார்

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

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

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

காட்சி 3. பின்தொடர்பவர் தலைவரைப் பார்க்கிறார், ஆனால் உயிரியல் பூங்கா பராமரிப்பாளரைப் பார்க்கவில்லை

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

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

காட்சி 4. தலைவர் பின்தொடர்பவர்களைப் பார்க்கிறார், ஆனால் ஜூகீப்பரைப் பார்க்கவில்லை

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

தலைவர் ஜூகீப்பரிடமிருந்து பிரிக்கப்பட்டுள்ளார், ஆனால் பின்தொடர்பவர்களுடன் உள்ள தரகர்களிடமிருந்து அல்ல.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 28. காட்சி 4: ஜூகீப்பரிடமிருந்து தனிமைப்படுத்தப்பட்ட தலைவர்

சிறிது நேரத்திற்குப் பிறகு, Zookeeper ஒரு தரகர் தோல்வியைப் பதிவுசெய்து அதைக் கட்டுப்படுத்திக்கு அறிவிப்பார். அவர் தன்னை பின்பற்றுபவர்களில் ஒரு புதிய தலைவரை தேர்ந்தெடுப்பார். இருப்பினும், அசல் தலைவர் தான் தலைவர் என்று தொடர்ந்து நினைப்பார், மேலும் உள்ளீடுகளை தொடர்ந்து ஏற்றுக்கொள்வார் அக்குகள்=1. பின்தொடர்பவர்கள் இனி அவருக்குப் பெறுவதற்கான கோரிக்கைகளை அனுப்புவதில்லை, எனவே அவர் அவர்களை இறந்துவிட்டதாகக் கருதி, ISR ஐ தானே சுருக்கிக் கொள்ள முயற்சிப்பார். ஆனால் அதற்கு Zookeeper உடன் தொடர்பு இல்லாததால், அதைச் செய்ய முடியாது, மேலும் அந்த நேரத்தில் மேலும் உள்ளீடுகளை ஏற்க மறுக்கும்.

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

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 29. காட்சி 4. தரகர் 1 இல் உள்ள தலைவர் பிணையத்தை மீட்டெடுத்த பிறகு பின்தொடர்பவராக மாறுகிறார்

காட்சி 5: பின்தொடர்பவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பர் இரண்டிலிருந்தும் முற்றிலும் வேறுபட்டவர்

பின்தொடர்பவர் மற்ற காஃப்கா முனைகள் மற்றும் உயிரியல் பூங்காவில் இருந்து முற்றிலும் தனிமைப்படுத்தப்பட்டுள்ளார். பிணையத்தை மீட்டெடுக்கும் வரை அவர் ISR இலிருந்து தன்னை நீக்கிவிட்டு, பின்னர் மற்றவர்களுடன் தொடர்பு கொள்கிறார்.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 30. காட்சி 5: தனிமைப்படுத்தப்பட்ட பின்தொடர்பவர் ISR இலிருந்து அகற்றப்படுகிறார்

காட்சி 6: தலைவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பர் இரண்டிலிருந்தும் முற்றிலும் வேறுபட்டவர்

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

தலைவர் அவரைப் பின்பற்றுபவர்கள், கட்டுப்படுத்தி மற்றும் மிருகக்காட்சிசாலை பராமரிப்பாளரிடமிருந்து முற்றிலும் தனிமைப்படுத்தப்பட்டுள்ளார். ஒரு குறுகிய காலத்திற்கு அது உள்ளீடுகளை ஏற்றுக்கொள்வதைத் தொடரும் அக்குகள்=1.

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 32. காட்சி 6: மற்ற காஃப்கா மற்றும் ஜூகீப்பர் முனைகளிலிருந்து தலைவரை தனிமைப்படுத்துதல்

காலாவதியான பிறகு கோரிக்கைகள் வரவில்லை replica.lag.time.max.ms, அது ISRஐத் தானே சுருக்கிக்கொள்ள முயற்சிக்கும், ஆனால் Zookeeper உடன் தொடர்பு இல்லாததால் அவ்வாறு செய்ய முடியாது, பின்னர் அது எழுதுவதை ஏற்றுக்கொள்வதை நிறுத்திவிடும்.

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

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

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

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

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

RabbitMQ vs காஃப்கா: தவறு சகிப்புத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மை
அரிசி. 35. காட்சி 6: நெட்வொர்க் இணைப்பு மீட்டமைக்கப்பட்ட பிறகு அசல் தலைவர் பின்தொடர்பவராக மாறுகிறார்

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

நெட்வொர்க் பிரிவதற்கு சற்று முன்பு, பின்தொடர்பவர்கள் பின்வாங்கி, தலைவர் ISRஐ தனக்குத்தானே சுருக்கிக் கொண்டார். அதன்பின் இணைப்பு துண்டிக்கப்பட்டதால் தனிமைப்படுத்தப்படுகிறது. ஒரு புதிய தலைவர் தேர்ந்தெடுக்கப்பட்டார், ஆனால் அசல் தலைவர் தொடர்ந்து உள்ளீடுகளை ஏற்றுக்கொள்கிறார் acks=அனைத்தும், ஏனெனில் ISR இல் அவரைத் தவிர வேறு யாரும் இல்லை. நெட்வொர்க்கை மீட்டெடுத்தவுடன் இந்தப் பதிவுகள் இழக்கப்படும். இந்த விருப்பத்தைத் தவிர்ப்பதற்கான ஒரே வழி min.insync.replicas = 2.

காட்சி 7: காஃப்கா கன்ட்ரோலர் நோட் மற்றொரு காஃப்கா முனையைப் பார்க்க முடியாது

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

காட்சி 8: காஃப்கா கன்ட்ரோலர் ஜூகீப்பரைப் பார்க்கவில்லை

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

காட்சிகளில் இருந்து முடிவுகள்

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

தொடர்பை இழந்ததால், ஜூகீப்பரிடமிருந்து தலைவர் பிரிந்தால், இது செய்திகளை இழக்க நேரிடும் அக்குகள்=1. Zookeeper உடனான தொடர்பு இல்லாததால் இரு தலைவர்களுடன் ஒரு சுருக்கமான தர்க்கரீதியான பிளவு ஏற்படுகிறது. இந்த சிக்கல் அளவுருவால் தீர்க்கப்படுகிறது acks=அனைத்தும்.

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

தொலைந்த செய்திகளின் சுருக்கம்

காஃப்காவில் நீங்கள் தரவை இழக்கக்கூடிய அனைத்து வழிகளையும் பட்டியலிடலாம்:

  • செய்திகளைப் பயன்படுத்தி உறுதிப்படுத்தப்பட்டால் எந்தத் தலைவர் தோல்வியுற்றார் அக்குகள்=1
  • எந்தவொரு அசுத்தமான தலைமை மாற்றமும், அதாவது, ISR க்கு வெளியே ஒரு பின்பற்றுபவர், உடன் கூட acks=அனைத்தும்
  • செய்திகளைப் பயன்படுத்தி உறுதிசெய்யப்பட்டால், ஜூகீப்பரிடமிருந்து தலைவரைத் தனிமைப்படுத்துதல் அக்குகள்=1
  • ஏற்கனவே ஐஎஸ்ஆர் குழுவைச் சுருக்கிய தலைவரின் முழு தனிமைப்படுத்தல். எல்லா செய்திகளும் கூட இழக்கப்படும் acks=அனைத்தும். இருந்தால் மட்டுமே இது உண்மை min.insync.replicas=1.
  • அனைத்து பகிர்வு முனைகளின் ஒரே நேரத்தில் தோல்விகள். நினைவகத்திலிருந்து செய்திகள் அங்கீகரிக்கப்பட்டதால், சில இன்னும் வட்டில் எழுதப்படாமல் இருக்கலாம். சேவையகங்களை மறுதொடக்கம் செய்த பிறகு, சில செய்திகள் விடுபட்டிருக்கலாம்.

தூய்மையற்ற தலைமை மாற்றங்களை தடை செய்வதன் மூலம் அல்லது குறைந்தது இரண்டு பணிநீக்கங்களை உறுதி செய்வதன் மூலம் தவிர்க்கலாம். மிகவும் நீடித்த கட்டமைப்பு ஒரு கலவையாகும் acks=அனைத்தும் и min.insync.replicas 1 க்கு மேல்.

RabbitMQ மற்றும் காஃப்காவின் நம்பகத்தன்மையின் நேரடி ஒப்பீடு

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

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

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

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

காஃப்காவின் பந்தயம் என்னவென்றால், ஒரு செய்தி பல முனைகளில் சேமிக்கப்பட்டால், அது மெமரியைத் தாக்கியவுடன் செய்திகளை ஒப்புக்கொள்ளும். இதன் காரணமாக, எந்த வகையான செய்திகளையும் இழக்கும் அபாயம் உள்ளது (கூட acks=அனைத்தும், min.insync.replicas=2) ஒரே நேரத்தில் தோல்வி ஏற்பட்டால்.

ஒட்டுமொத்தமாக, காஃப்கா சிறந்த மென்பொருள் செயல்திறனை வெளிப்படுத்துகிறது மற்றும் கிளஸ்டர்களுக்காக தரையில் இருந்து வடிவமைக்கப்பட்டுள்ளது. நம்பகத்தன்மைக்கு தேவைப்பட்டால் பின்தொடர்பவர்களின் எண்ணிக்கையை 11 ஆக அதிகரிக்கலாம். பிரதி காரணி 5 மற்றும் ஒத்திசைவில் உள்ள பிரதிகளின் குறைந்தபட்ச எண்ணிக்கை min.insync.replicas=3 செய்தி இழப்பை மிகவும் அரிதான நிகழ்வாக மாற்றும். உங்கள் உள்கட்டமைப்பு இந்தப் பிரதி விகிதத்தையும் பணிநீக்கத்தின் அளவையும் ஆதரிக்க முடிந்தால், நீங்கள் இந்த விருப்பத்தைத் தேர்வுசெய்யலாம்.

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

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

இறுதியாக, RabbitMQ மற்றும் Kafka இரண்டின் கிளஸ்டரிங் மற்றும் ரெப்ளிகேஷன் பொறிமுறைகளில் உள்ள பல பிழைகள் பற்றி மறந்துவிடாதீர்கள். காலப்போக்கில், அமைப்புகள் மிகவும் முதிர்ச்சியடைந்து நிலையானதாகிவிட்டன, ஆனால் எந்த செய்தியும் இழப்பிலிருந்து 100% பாதுகாப்பாக இருக்காது! மேலும், டேட்டா சென்டர்களில் பெரிய அளவிலான விபத்துகளும் ஏற்படுகின்றன!

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

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

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

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

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

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