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

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

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

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

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

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

படம். 5. தரகர்கள் 1 மற்றும் 3 மீட்டெடுப்பிற்குப் பிறகு சமநிலையற்ற தலைவர் இடம்.
தலைவர் மறு சமநிலைப்படுத்தலுக்கு, RabbitMQ-வை விட Kafka-விடம் மிகவும் திறமையான கருவி உள்ளது. அங்கு, இடம்பெயர்வின் போது பணிநீக்கத்தைக் குறைப்பதன் மூலம் முதன்மை முனை இடம்பெயர்வு கொள்கைகளை மாற்றியமைக்கும் மூன்றாம் தரப்பு செருகுநிரல் அல்லது ஸ்கிரிப்டைப் பயன்படுத்த வேண்டியிருந்தது. மேலும், பெரிய வரிசைகளுக்கு, ஒத்திசைவின் போது கிடைக்காததை நாங்கள் ஏற்றுக்கொள்ள வேண்டியிருந்தது.
தலைவர் பாத்திரத்திற்கு "விருப்பமான பிரதிகள்" என்ற கருத்தை காஃப்கா கொண்டுள்ளது. தலைப்புப் பகிர்வுகள் உருவாக்கப்படும்போது, காஃப்கா தலைவர்களை முனைகளுக்கு இடையில் சமமாக விநியோகிக்க முயற்சிக்கிறார் மற்றும் இந்த ஆரம்ப தலைவர்களை விருப்பமானவர்களாகக் குறிக்கிறார். காலப்போக்கில், சேவையக மறுதொடக்கங்கள், தோல்விகள் மற்றும் இணைப்பு இடையூறுகள் காரணமாக, மேலே விவரிக்கப்பட்ட தீவிர நிகழ்வைப் போல, தலைவர்கள் மற்ற முனைகளில் முடிவடையும்.
இதைச் சரிசெய்ய, காஃப்கா இரண்டு விருப்பங்களை வழங்குகிறது:
- விருப்பம் auto.leader.rebalance.enable=true (சரி) கட்டுப்படுத்தி முனை தானாகவே தலைவர்களை விருப்பமான பிரதிகளுக்கு மீண்டும் ஒதுக்க அனுமதிக்கிறது, இதன் மூலம் சீரான விநியோகத்தை மீட்டெடுக்கிறது.
- நிர்வாகி ஸ்கிரிப்டை இயக்க முடியும். காஃப்கா-விருப்பமான-பிரதி-தேர்வு.ஷ் கைமுறை மறு ஒதுக்கீட்டிற்கு.

படம். 6. மறு சமநிலைக்குப் பிறகு பிரதிகள்
இது தோல்வியின் எளிமைப்படுத்தப்பட்ட பதிப்பாகும், ஆனால் யதார்த்தம் மிகவும் சிக்கலானது, இருப்பினும் இங்கே எதுவும் மிகவும் சிக்கலானது அல்ல. இவை அனைத்தும் ஒத்திசைவான பிரதிகளுக்கு (ISRகள்) கீழே வருகின்றன.
ஒத்திசைக்கப்பட்ட பிரதிகள் (ISR)
ஒரு ISR என்பது "ஒத்திசைவில்" கருதப்படும் பகிர்வு பிரதிகளின் தொகுப்பாகும். ஒரு தலைவர் இருக்கிறார், ஆனால் பின்தொடர்பவர்கள் இல்லாமல் இருக்கலாம். இடைவெளி காலாவதியாகும் முன், ஒரு பின்தொடர்பவர் தலைவரின் அனைத்து செய்திகளின் சரியான நகல்களையும் செய்திருந்தால், அவர் ஒத்திசைவில் இருப்பதாகக் கருதப்படுவார். பிரதி.lag.time.max.ms.
பின்வருபவை இருந்தால், ஒரு பின்தொடர்பவர் ISR தொகுப்பிலிருந்து நீக்கப்படுவார்:
- இடைவெளிக்குள் மாதிரி எடுப்பதற்கான கோரிக்கையை வைக்கவில்லை. பிரதி.lag.time.max.ms (இறந்துவிட்டதாகக் கருதப்படுகிறது)
- இடைவேளையில் புதுப்பிக்க நேரம் இல்லை. பிரதி.lag.time.max.ms (மெதுவாகக் கருதப்படுகிறது)
பின்தொடர்பவர்கள் இடைவெளியில் தேர்வுக்கான கோரிக்கைகளைச் செய்கிறார்கள். replica.fetch.wait.max.ms, இது முன்னிருப்பாக 500 எம்எஸ் ஆகும்.
ISR-ன் நோக்கத்தை தெளிவாக விளக்க, தயாரிப்பாளர் உறுதிப்படுத்தல்களையும் சில தோல்வி சூழ்நிலைகளையும் நாம் பார்க்க வேண்டும். தரகர் உறுதிப்படுத்தலை எப்போது அனுப்ப வேண்டும் என்பதை தயாரிப்பாளர்கள் தேர்வு செய்யலாம்:
- acks=0, உறுதிப்படுத்தல் அனுப்பப்படவில்லை.
- acks=1, தலைவர் அதன் உள்ளூர் பதிவில் ஒரு செய்தியை எழுதிய பிறகு ஒரு ஒப்புதல் அனுப்பப்படும்.
- acks=all, ISR இல் உள்ள அனைத்து பிரதிகளும் தங்கள் உள்ளூர் பதிவுகளுக்கு செய்தியை எழுதிய பிறகு ஒப்புதல் அனுப்பப்படும்.
காஃப்கா சொற்களஞ்சியத்தில், ஒரு ISR ஒரு செய்தியைச் சேமித்திருந்தால், அது "உறுதியானது". Acks=all என்பது மிகவும் பாதுகாப்பான விருப்பமாகும், ஆனால் இது கூடுதல் தாமதத்தையும் அறிமுகப்படுத்துகிறது. இரண்டு தோல்வி எடுத்துக்காட்டுகளையும், வெவ்வேறு 'acks' விருப்பங்கள் ISR கருத்துடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதையும் பார்ப்போம்.
Acks=1 மற்றும் ISR
இந்த எடுத்துக்காட்டில், அனைத்து பின்தொடர்பவர்களிடமிருந்தும் ஒவ்வொரு செய்தியும் சேமிக்கப்படும் வரை தலைவர் காத்திருக்கவில்லை என்றால், தலைவர் தோல்வியுற்றால் தரவு இழப்பு சாத்தியமாகும் என்பதைக் காண்போம். ஒத்திசைக்கப்படாத பின்தொடர்பவருக்கு தோல்வியுற்றதை ஒரு அமைப்பால் இயக்கலாம் அல்லது முடக்கலாம். அசுத்தமான.தலைவர்.தேர்வு.செயல்படுத்தக்கூடிய.
இந்த எடுத்துக்காட்டில், தயாரிப்பாளரின் பெயர் acks=1 ஆகும். பகிர்வு மூன்று தரகர்களிடமும் விநியோகிக்கப்படுகிறது. தரகர் 3 பின்தங்கியுள்ளது; அது எட்டு வினாடிகளுக்கு முன்பு லீடருடன் ஒத்திசைக்கப்பட்டது, இப்போது 7456 செய்திகள் பின்தங்கியுள்ளன. தரகர் 1 ஒரு வினாடி மட்டுமே பின்தங்கியுள்ளது. எங்கள் தயாரிப்பாளர் ஒரு செய்தியை அனுப்புகிறார், மேலும் தலைவர் எதிர்பார்க்காத மெதுவான அல்லது இறந்த பின்தொடர்பவர்களிடமிருந்து எந்த மேல்நிலையும் இல்லாமல் விரைவாக ஒரு மறு அறிவிப்பைப் பெறுகிறார்.

படம். 7. மூன்று பிரதிகளுடன் கூடிய ஐ.எஸ்.ஆர்.
தரகர் 2 செயலிழந்து, தயாரிப்பாளருக்கு இணைப்புப் பிழை ஏற்படுகிறது. தலைமை தரகர் 1 க்கு மாறிய பிறகு, நாம் 123 செய்திகளை இழக்கிறோம். தரகர் 1 இல் ஒரு பின்தொடர்பவர் ISR இல் உள்நுழைந்திருந்தார், ஆனால் தலைவர் செயலிழந்தபோது தலைவருடன் முழுமையாக ஒத்திசைக்கப்படவில்லை.

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

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

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

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

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

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

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

படம் 15. தரகர் 3 இல் உள்ள பிரதி ISR இலிருந்து அகற்றப்பட்டது.
பின்னர் தரகர் 2 செயலிழந்து, தலைமை செய்திகளை இழக்காமல் தரகர் 1 க்கு செல்கிறது.

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

படம். 17. தரகர் 1 இன் பிரதி செய்திகளை இழக்காமல் தலைமைத்துவத்தை எடுத்துக்கொள்கிறது.
பின்னர் தரகர் 1 வீழ்ச்சியடைந்து, முன்னணி தரகர் 3 க்கு 14238 செய்திகளின் இழப்புடன் செல்கிறது!

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

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

படம் 20. min.insync.replicas இல் குறிப்பிடப்பட்டுள்ளதை விட ISRகளின் எண்ணிக்கை ஒன்று குறைவாக உள்ளது.
இந்த உள்ளமைவு நிலைத்தன்மைக்காக கிடைக்கும் தன்மையை தியாகம் செய்கிறது. ஒரு செய்தியை ஒப்புக்கொள்வதற்கு முன், அது குறைந்தது இரண்டு பிரதிகளுக்கு எழுதப்பட்டிருப்பதை நாங்கள் உறுதிசெய்கிறோம். இது தயாரிப்பாளருக்கு அதிக நம்பிக்கையை அளிக்கிறது. கூடுதல் பின்தொடர்பவருக்கு செய்தி நகலெடுக்கப்படுவதற்கு முன்பு குறுகிய காலத்திற்குள் இரண்டு பிரதிகள் ஒரே நேரத்தில் தோல்வியடைந்தால் மட்டுமே செய்தி இழப்பு சாத்தியமாகும், இது சாத்தியமில்லை. ஆனால் நீங்கள் மிகவும் சித்தப்பிரமை கொண்டவராக இருந்தால், நீங்கள் நகலெடுக்கும் காரணியை 5 ஆக அமைக்கலாம், மேலும் min.insync.replicas 3. பதிவை இழக்க மூன்று தரகர்கள் ஒரே நேரத்தில் செயலிழக்க வேண்டியிருக்கும்! நிச்சயமாக, இந்த நம்பகத்தன்மைக்கு கூடுதல் தாமதத்துடன் நீங்கள் பணம் செலுத்த வேண்டியிருக்கும்.
தரவு பாதுகாப்பிற்கு கிடைக்கும் தன்மை அவசியமாக இருக்கும்போது
உள்ளே சில நேரங்களில் தரவு பாதுகாப்பிற்கு அணுகல் அவசியம். நீங்கள் கருத்தில் கொள்ள வேண்டியது இங்கே:
- வெளியீட்டாளர் ஒரு பிழையைத் திருப்பி, அப்ஸ்ட்ரீம் சேவை அல்லது பயனரை பின்னர் மீண்டும் முயற்சிக்கச் சொல்ல முடியுமா?
- வெளியீட்டாளர் செய்தியை உள்நாட்டிலோ அல்லது தரவுத்தளத்திலோ சேமிக்க முடியுமா?
பதில் இல்லை என்றால், கிடைக்கும் தன்மையை மேம்படுத்துவது தரவு பாதுகாப்பை மேம்படுத்துகிறது. எழுதும் தோல்விக்கு பதிலாக கிடைக்கும் தன்மையை நீங்கள் தேர்வுசெய்தால் குறைவான தரவை இழப்பீர்கள். எனவே, இவை அனைத்தும் சமநிலையைக் கண்டறிவதில்தான் உள்ளது, மேலும் முடிவு குறிப்பிட்ட சூழ்நிலையைப் பொறுத்தது.
ஐ.எஸ்.ஆர் என்பதன் அர்த்தம்
தரவு பாதுகாப்புக்கும் தாமதத்திற்கும் இடையிலான உகந்த சமநிலையைத் தேர்வுசெய்ய ISR தொகுப்பு உங்களை அனுமதிக்கிறது. எடுத்துக்காட்டாக, பெரும்பாலான பிரதிகள் தோல்வியடைந்தாலும் கூட கிடைப்பதை உறுதிசெய்ய முடியும், அதே நேரத்தில் இறந்த அல்லது மெதுவான பிரதிகளின் தாமத தாக்கத்தைக் குறைக்கும்.
அர்த்தத்தை நாமே தேர்வு செய்கிறோம் பிரதி.lag.time.max.ms உங்கள் தேவைகளுக்கு ஏற்ப. அடிப்படையில், இந்த அளவுரு என்பது நாம் எவ்வளவு தாமதத்தை ஏற்கத் தயாராக இருக்கிறோம் என்பதைக் குறிக்கிறது. அக்ஸ்=எல்லாம்இயல்புநிலை மதிப்பு பத்து வினாடிகள். இது உங்களுக்கு மிக நீளமாக இருந்தால், நீங்கள் அதைக் குறைக்கலாம். இது ISR இல் ஏற்படும் மாற்றங்களின் அதிர்வெண்ணை அதிகரிக்கும், ஏனெனில் பின்தொடர்பவர்கள் அகற்றப்பட்டு அடிக்கடி சேர்க்கப்படுவார்கள்.
RabbitMQ வெறுமனே நகலெடுக்க வேண்டிய கண்ணாடிகளின் தொகுப்பைக் கொண்டுள்ளது. மெதுவான கண்ணாடிகள் கூடுதல் தாமதத்தை அறிமுகப்படுத்துகின்றன, மேலும் இறந்த கண்ணாடிகள் பதிலளிக்க ஒரு நெட்வொர்க் டிக் எடுக்கலாம். இந்த தாமத சிக்கல்களைத் தவிர்ப்பதற்கு ISR ஒரு சுவாரஸ்யமான வழியாகும். இருப்பினும், ISR ஐ லீடருக்கு மட்டுமே கத்தரிக்க முடியும் என்பதால், பணிநீக்கத்தை இழக்கும் அபாயம் உள்ளது. இந்த ஆபத்தைத் தவிர்க்க, பின்வரும் உள்ளமைவைப் பயன்படுத்தவும்: min.insync.replicas.
வாடிக்கையாளர் இணைப்பு உத்தரவாதம்
அமைப்புகளில் bootstrap.servers (பூட்ஸ்ட்ராப்.சர்வர்கள்) உற்பத்தியாளர்களும் நுகர்வோரும் கிளையன்ட் இணைப்புகளுக்கு பல தரகர்களைக் குறிப்பிடலாம். ஒரு முனை செயலிழந்தால், கிளையன்ட் இணைப்பைத் திறக்க பல உதிரி முனைகள் இருக்கும் என்பதே இதன் கருத்து. இவை அவசியம் பகிர்வுத் தலைவர்கள் அல்ல, ஆனால் பூட்ஸ்ட்ராப்பிங்கிற்கான ஒரு ஊக்கப் பலகை மட்டுமே. படிக்க/எழுத அணுகலுக்காக எந்த முனை பகிர்வுத் தலைவரை வழங்குகிறது என்பதை கிளையன்ட் அவர்களிடம் கேட்கலாம்.
RabbitMQ-வில், கிளையண்டுகள் எந்த முனையுடனும் இணைக்க முடியும், மேலும் உள் ரூட்டிங் ரூட்டுகள் பொருத்தமான முனைக்கு கோரிக்கை விடுக்கின்றன. இதன் பொருள் நீங்கள் RabbitMQ-க்கு முன்னால் ஒரு சுமை பேலன்சரை நிறுவலாம். காஃப்கா கிளையண்டுகள் தொடர்புடைய பகிர்வின் லீடரை வழங்கும் முனையுடன் இணைக்க வேண்டும் என்று கோருகிறது. இந்த சூழ்நிலையில், ஒரு சுமை பேலன்சர் சாத்தியமில்லை. பட்டியல் bootstrap.servers (பூட்ஸ்ட்ராப்.சர்வர்கள்) தோல்விக்குப் பிறகு வாடிக்கையாளர்கள் சரியான முனைகளை அணுகி கண்டுபிடிக்க முடியும் என்பதை உறுதி செய்வதற்கு இது மிகவும் முக்கியமானது.
காஃப்கா ஒருமித்த கட்டிடக்கலை
இதுவரை, கிளஸ்டர் ஒரு தரகர் தோல்வியை எவ்வாறு கண்டறிகிறது அல்லது ஒரு புதிய தலைவர் எவ்வாறு தேர்ந்தெடுக்கப்படுகிறார் என்பதை நாங்கள் உள்ளடக்கவில்லை. காஃப்கா நெட்வொர்க் பகிர்வுகளுடன் எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்து கொள்ள, முதலில் ஒருமித்த கட்டமைப்பைப் புரிந்து கொள்ள வேண்டும்.
ஒவ்வொரு காஃப்கா கிளஸ்டரும் ஒரு ஜூகீப்பர் கிளஸ்டருடன் இணைந்து பயன்படுத்தப்படுகிறது - இது ஒரு விநியோகிக்கப்பட்ட ஒருமித்த சேவையாகும், இது ஒரு குறிப்பிட்ட நிலையில் ஒருமித்த கருத்தை அடைய அமைப்பை அனுமதிக்கிறது, கிடைக்கும் தன்மையை விட நிலைத்தன்மைக்கு முன்னுரிமை அளிக்கிறது. படிக்க மற்றும் எழுதும் செயல்பாடுகளை அங்கீகரிக்க பெரும்பாலான ஜூகீப்பர் முனைகளின் ஒப்புதல் தேவை.
மிருகக்காட்சிசாலை பராமரிப்பாளர் கொத்து நிலையைச் சேமிக்கிறார்:
- தலைப்புகள், பிரிவுகள், உள்ளமைவு, தற்போதைய தலைவர் பிரதிகள், விருப்பமான பிரதிகள் ஆகியவற்றின் பட்டியல்.
- கிளஸ்டர் உறுப்பினர்கள். ஒவ்வொரு தரகரும் ஜூகீப்பர் கிளஸ்டருக்கு பிங் செய்கிறார்கள். குறிப்பிட்ட காலத்திற்குள் அது பிங்கைப் பெறவில்லை என்றால், ஜூகீப்பர் தரகரை கிடைக்கவில்லை எனக் குறிக்கும்.
- கட்டுப்படுத்திக்கான முதன்மை மற்றும் இரண்டாம் நிலை முனைகளைத் தேர்ந்தெடுப்பது.
பிரதித் தலைவர்களைத் தேர்ந்தெடுப்பதற்குப் பொறுப்பான காஃப்கா தரகர்களில் கட்டுப்படுத்தி முனையும் ஒன்றாகும். கிளஸ்டர் உறுப்பினர் மற்றும் தலைப்பு மாற்றங்கள் குறித்த அறிவிப்புகளை மிருகக்காட்சிசாலை பராமரிப்பாளர் கட்டுப்படுத்திக்கு அனுப்புகிறார், மேலும் கட்டுப்படுத்தி இந்த மாற்றங்களில் செயல்பட வேண்டும்.
எடுத்துக்காட்டாக, பத்து பகிர்வுகள் மற்றும் 3 இன் பிரதி காரணி கொண்ட ஒரு புதிய தலைப்பைக் கவனியுங்கள். கட்டுப்படுத்தி ஒவ்வொரு பகிர்வுக்கும் ஒரு தலைவரைத் தேர்ந்தெடுக்க வேண்டும், தரகர்களிடையே தலைவர்களை உகந்த முறையில் விநியோகிக்க முயற்சிக்க வேண்டும்.
ஒவ்வொரு பிரிவு கட்டுப்படுத்திக்கும்:
- ISR மற்றும் தலைவர் பற்றிய தகவல்களை ஜூகீப்பரில் புதுப்பிக்கிறது;
- இந்தப் பிரிவின் பிரதியை வழங்கும் ஒவ்வொரு தரகருக்கும் ஒரு LeaderAndISRCommand ஐ அனுப்புகிறது, இது தரகர்களுக்கு ISR மற்றும் தலைவர் பற்றித் தெரிவிக்கிறது.
ஒரு தலைவரைக் கொண்ட ஒரு தரகர் தோல்வியுற்றால், ஜூகீப்பர் கட்டுப்படுத்திக்கு ஒரு அறிவிப்பை அனுப்புகிறார், அது ஒரு புதிய தலைவரைத் தேர்ந்தெடுக்கிறது. மீண்டும், கட்டுப்படுத்தி முதலில் ஜூகீப்பரைப் புதுப்பித்து, பின்னர் ஒவ்வொரு தரகருக்கும் தலைமை மாற்றம் குறித்து அறிவிக்கும் கட்டளையை அனுப்புகிறது.
ஒவ்வொரு தலைவரும் ISR தொகுப்பிற்கு பொறுப்பாவார்கள். பிரதி.lag.time.max.ms யார் அதில் நுழைவார்கள் என்பதைத் தீர்மானிக்கிறது. ISR மாறும்போது, தலைவர் புதிய தகவலை மிருகக்காட்சிசாலை பராமரிப்பாளருக்கு அனுப்புகிறார்.
ஏதேனும் மாற்றங்கள் ஏற்பட்டால், நிர்வாகம் சுமூகமாக புதிய தலைவரை நியமிக்கும் வகையில், மிருகக்காட்சிசாலை பராமரிப்பாளருக்கு எப்போதும் தெரிவிக்கப்படும்.

படம். 21. காஃப்கா ஒருமித்த கருத்து
பிரதி நெறிமுறை
நகலெடுப்பின் விவரங்களைப் புரிந்துகொள்வது, சாத்தியமான தரவு இழப்பு சூழ்நிலைகளை நன்கு புரிந்துகொள்ள உதவுகிறது.
தேர்வு வினவல்கள், பதிவு முடிவு ஆஃப்செட் (LEO) மற்றும் ஹைவாட்டர் மார்க் (HW)
பின்தொடர்பவர்கள் அவ்வப்போது தலைவருக்கு ஃபெட்ச் கோரிக்கைகளை அனுப்புவதை நாம் பார்த்திருக்கிறோம். இயல்புநிலை இடைவெளி 500 எம்எஸ் ஆகும். இது RabbitMQ இலிருந்து வேறுபடுகிறது, ஏனெனில் RabbitMQ இல், பிரதியெடுப்பு வரிசை கண்ணாடியால் அல்ல, மாஸ்டரால் தொடங்கப்படுகிறது. மாஸ்டர் மாற்றங்களை கண்ணாடிகளுக்குத் தள்ளுகிறார்.
தலைவர் மற்றும் அனைத்து பின்தொடர்பவர்களும் ஒரு லாக் எண்ட் ஆஃப்செட் (LEO) மற்றும் ஒரு ஹைவாட்டர் மார்க் (HW) ஆகியவற்றைச் சேமிக்கிறார்கள். LEO கடைசி செய்தியின் ஆஃப்செட்டை உள்ளூர் பிரதியில் சேமிக்கிறது, மேலும் HW கடைசி கமிட்டின் ஆஃப்செட்டைச் சேமிக்கிறது. கமிட் நிலையை அடைய, செய்தி அனைத்து ISR பிரதிகளிலும் சேமிக்கப்பட வேண்டும் என்பதை நினைவில் கொள்ளுங்கள். இதன் பொருள் LEO பொதுவாக HW ஐ விட சற்று முன்னால் இருக்கும்.
தலைவர் ஒரு செய்தியைப் பெறும்போது, அது அதை உள்ளூரில் சேமிக்கிறது. ஒரு பின்தொடர்பவர் தனது LEO ஐ அனுப்புவதன் மூலம் ஒரு பெறுதல் கோரிக்கையை வைக்கிறார். பின்னர் தலைவர் இந்த LEO இலிருந்து தொடங்கி ஒரு தொகுதி செய்திகளை அனுப்புகிறார், மேலும் தற்போதைய HW ஐயும் அனுப்புகிறார். அனைத்து பிரதிகளும் கொடுக்கப்பட்ட ஆஃப்செட்டில் செய்தியைச் சேமித்துள்ளதாக தலைவர் தகவலைப் பெறும்போது, அது HW குறியை முன்னேற்றுகிறது. தலைவர் மட்டுமே HW ஐ முன்னேற்ற முடியும், இதனால் அனைத்து பின்தொடர்பவர்களும் தங்கள் கோரிக்கைகளுக்கான பதில்களில் தற்போதைய மதிப்பைக் கற்றுக்கொள்கிறார்கள். இதன் பொருள் பின்தொடர்பவர்கள் செய்திகளிலும் HW பற்றிய அறிவிலும் தலைவரை விட பின்தங்கியிருக்க முடியும். நுகர்வோர் தற்போதைய HW வரை மட்டுமே செய்திகளைப் பெறுகிறார்கள்.
"persisted" என்பது நினைவகத்தில் எழுதப்பட்டதைக் குறிக்கிறது, வட்டுக்கு அல்ல என்பதை நினைவில் கொள்ளவும். செயல்திறனுக்காக, காஃப்கா ஒரு குறிப்பிட்ட இடைவெளியில் வட்டுக்கு ஒத்திசைக்கிறது. RabbitMQ க்கும் இதே போன்ற இடைவெளி உள்ளது, ஆனால் அது மாஸ்டரும் அனைத்து கண்ணாடிகளும் செய்தியை வட்டுக்கு எழுதிய பின்னரே வெளியீட்டாளருக்கு ஒரு ஒப்புதலை அனுப்பும். செயல்திறன் காரணங்களுக்காக, காஃப்கா டெவலப்பர்கள் செய்தி நினைவகத்தில் எழுதப்பட்டவுடன் ஒரு ஒப்புதலை அனுப்ப முடிவு செய்தனர். பணிநீக்கம் நினைவகத்தில் மட்டுமே ஒப்புக்கொள்ளப்பட்ட செய்திகளின் குறுகிய கால சேமிப்பின் அபாயத்தை ஈடுசெய்யும் என்று காஃப்கா பந்தயம் கட்டுகிறது.
தலைமைத்துவ தோல்வி
ஒரு தலைவர் தோல்வியடையும் போது, மிருகக்காட்சிசாலை பராமரிப்பாளர் கட்டுப்படுத்திக்கு அறிவிப்பார், அது ஒரு புதிய தலைவர் பிரதியைத் தேர்ந்தெடுக்கும். புதிய தலைவர் அதன் LEO இன் அடிப்படையில் ஒரு புதிய HW குறியை அமைக்கிறார். பின்னர் பின்தொடர்பவர்கள் புதிய தலைவரைப் பற்றிய தகவல்களைப் பெறுவார்கள். காஃப்கா பதிப்பைப் பொறுத்து, பின்தொடர்பவர் இரண்டு சூழ்நிலைகளில் ஒன்றைத் தேர்ந்தெடுப்பார்:
- உள்ளூர் பதிவை அறியப்பட்ட HW க்கு வெட்டி, இந்தக் குறிக்கு பிறகு செய்திகளுக்கான கோரிக்கையை புதிய தலைவருக்கு அனுப்பவும்.
- தலைவராகத் தேர்ந்தெடுக்கப்பட்ட நேரத்தில் HW-ஐக் கண்டறிய தலைவருக்கு ஒரு வினவலை அனுப்பவும், பின்னர் இந்த ஆஃப்செட்டுக்கு பதிவை துண்டிக்கவும். பின்னர் அது இந்த ஆஃப்செட்டிலிருந்து தொடங்கி, அவ்வப்போது மாதிரி கோரிக்கைகளைச் செய்யத் தொடங்கும்.
பின்வரும் காரணங்களுக்காக ஒரு பின்தொடர்பவர் பதிவை வெட்ட வேண்டியிருக்கலாம்:
- ஒரு தலைவர் தோல்வியடையும் போது, Zookeeper இல் பதிவுசெய்யப்பட்ட ISR தொகுப்பில் முதல் பின்தொடர்பவர் தேர்தலில் வெற்றி பெற்று தலைவராகிறார். ISR இல் உள்ள அனைத்து பின்தொடர்பவர்களும், "ஒத்திசைக்கப்பட்டவர்கள்" என்று கருதப்பட்டாலும், முன்னாள் தலைவரிடமிருந்து அனைத்து செய்திகளின் நகல்களையும் பெற்றிருக்க மாட்டார்கள். தேர்ந்தெடுக்கப்பட்ட பின்தொடர்பவருக்கு மிகவும் புதுப்பித்த நகல் இல்லாமல் இருக்கலாம். பிரதிகளுக்கு இடையில் எந்த வேறுபாடும் இல்லை என்று காஃப்கா உத்தரவாதம் அளிக்கிறது. எனவே, வேறுபாட்டைத் தவிர்க்க, ஒவ்வொரு பின்தொடர்பவரும் அதன் தேர்தலின் போது புதிய தலைவரின் HW மதிப்புக்கு அதன் பதிவை துண்டிக்க வேண்டும். உள்ளமைவு ஏன் மற்றொரு காரணம் அக்ஸ்=எல்லாம் நிலைத்தன்மைக்கு மிகவும் முக்கியமானது.
- செய்திகள் அவ்வப்போது வட்டில் எழுதப்படும். அனைத்து கிளஸ்டர் முனைகளும் ஒரே நேரத்தில் தோல்வியடைந்தால், வெவ்வேறு ஆஃப்செட்களைக் கொண்ட பிரதிகள் வட்டில் சேமிக்கப்படும். தரகர்கள் மீண்டும் ஆன்லைனில் வரும்போது, தேர்ந்தெடுக்கப்பட்ட புதிய தலைவர் அதன் பின்தொடர்பவர்களுக்குப் பின்னால் இருப்பார், ஏனெனில் அது முதலில் வட்டில் எழுதப்பட்டது.
மீண்டும் கிளஸ்டரில் இணைதல்
கிளஸ்டரில் மீண்டும் இணையும்போது, பிரதிகள் தலைவர் தோல்வியின் போது செயல்படுவது போலவே செயல்படுகின்றன: அவை தலைவரின் பிரதியைச் சரிபார்த்து, அவற்றின் பதிவை அதன் HW க்கு (தேர்தல் நேரத்தில்) துண்டிக்கின்றன. ஒப்பிடுகையில், RabbitMQ மீண்டும் இணைக்கப்பட்ட முனைகளை முற்றிலும் புதியதாகக் கருதுகிறது. இரண்டு சந்தர்ப்பங்களிலும், தரகர் ஏற்கனவே உள்ள எந்த நிலையையும் நிராகரிக்கிறார். தானியங்கி ஒத்திசைவு பயன்படுத்தப்பட்டால், மாஸ்டர் "உலகம் காத்திருக்கட்டும்" அணுகுமுறையைப் பயன்படுத்தி புதிய கண்ணாடியில் அனைத்து தற்போதைய உள்ளடக்கத்தையும் நகலெடுக்க வேண்டும். இந்த செயல்பாட்டின் போது, மாஸ்டர் எந்த படிக்க அல்லது எழுதும் செயல்பாடுகளையும் ஏற்கவில்லை. இந்த அணுகுமுறை பெரிய வரிசைகளில் சிக்கல்களை உருவாக்குகிறது.
காஃப்கா என்பது ஒரு பரவலாக்கப்பட்ட பதிவு, மேலும் பொதுவாக RabbitMQ வரிசையை விட அதிகமான செய்திகளைச் சேமிக்கிறது, அங்கு தரவு படித்த பிறகு வரிசையில் இருந்து அகற்றப்படும். செயலில் உள்ள வரிசைகள் ஒப்பீட்டளவில் சிறியதாக இருக்க வேண்டும். இருப்பினும், காஃப்கா என்பது அதன் சொந்த தக்கவைப்புக் கொள்கையைக் கொண்ட ஒரு பதிவாகும், இது நாட்கள் அல்லது வாரங்களுக்கு அமைக்கப்படலாம். வரிசை பூட்டுதல் மற்றும் முழு ஒத்திசைவு அணுகுமுறை விநியோகிக்கப்பட்ட பதிவிற்கு முற்றிலும் ஏற்றுக்கொள்ள முடியாதது. அதற்கு பதிலாக, காஃப்கா பின்தொடர்பவர்கள் தங்கள் நகல் தலைவரை விட முன்னால் இருந்தால், தலைவரின் HW (அதன் தேர்வின் போது) க்கு தங்கள் பதிவை வெட்டுகிறார்கள். பின்தொடர்பவர் பின்னால் இருப்பதற்கான அதிக வாய்ப்புள்ள நிலையில், அது அதன் தற்போதைய LEO இலிருந்து தொடங்கும் பெறுதல் கோரிக்கைகளைச் செய்யத் தொடங்குகிறது.
புதிய அல்லது மீண்டும் இணைந்த பின்தொடர்பவர்கள் ISR-க்கு வெளியே தொடங்குகிறார்கள், மேலும் கமிட்களில் பங்கேற்க மாட்டார்கள். அவர்கள் குழுவுடன் இணைந்து செயல்படுகிறார்கள், தலைவரைப் பிடித்து ISR-க்குள் நுழையும் வரை செய்திகளை விரைவாகப் பெறுகிறார்கள். பூட்டுதல் இல்லை, உங்கள் எல்லா தரவையும் நிராகரிக்க வேண்டிய அவசியமில்லை.
இணைப்பு இழப்பு
காஃப்காவில் RabbitMQ-ஐ விட அதிகமான கூறுகள் உள்ளன, எனவே கிளஸ்டர் இணைப்பு சீர்குலைந்தால் அது மிகவும் சிக்கலான நடத்தைகளைக் கொண்டுள்ளது. இருப்பினும், காஃப்கா ஆரம்பத்திலிருந்தே கிளஸ்டர்களுக்காக வடிவமைக்கப்பட்டது, எனவே அதன் தீர்வுகள் மிகவும் நன்கு சிந்திக்கப்படுகின்றன.
இணைப்பு தோல்வியின் சில சூழ்நிலைகள் கீழே உள்ளன:
- காட்சி 1: பின்தொடர்பவர் தலைவரைப் பார்க்க முடியாது, ஆனால் இன்னும் மிருகக்காட்சிசாலையைப் பார்க்கிறார்.
- சூழ்நிலை 2: தலைவர் எந்த பின்தொடர்பவர்களையும் பார்க்கவில்லை, ஆனால் இன்னும் மிருகக்காட்சிசாலையைப் பார்க்கிறார்.
- காட்சி 3. பின்தொடர்பவர் தலைவரைப் பார்க்கிறார், ஆனால் மிருகக்காட்சிசாலையின் பராமரிப்பாளரைப் பார்க்கவில்லை.
- காட்சி 4. தலைவர் பின்தொடர்பவர்களைப் பார்க்கிறார், ஆனால் மிருகக்காட்சிசாலையின் பராமரிப்பாளரைப் பார்க்கவில்லை.
- காட்சி 5: பின்தொடர்பவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பரிடமிருந்து முற்றிலும் பிரிக்கப்பட்டுள்ளார்.
- காட்சி 6: தலைவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பரிடமிருந்து முற்றிலும் பிரிக்கப்பட்டுள்ளார்.
- காட்சி 7: காஃப்கா கட்டுப்படுத்தி முனை மற்றொரு காஃப்கா முனையைக் காணவில்லை.
- காட்சி 8. காஃப்கா கட்டுப்படுத்தி ஜூகீப்பரைப் பார்க்கவில்லை.
ஒவ்வொரு சூழ்நிலைக்கும் அதன் சொந்த நடத்தை உள்ளது.
சூழ்நிலை 1: பின்தொடர்பவர் தலைவரைப் பார்க்க முடியாது, ஆனால் இன்னும் ஜூகீப்பரைப் பார்க்கிறார்.

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

படம் 23. சூழ்நிலை 1. replica.lag.time.max.ms இடைவெளிக்குள் தரகரிடமிருந்து எந்தப் பெறுதல் கோரிக்கையும் பெறப்படாவிட்டால், அவர் ISR இலிருந்து அகற்றப்படுவார்.
RabbitMQ-வில் இருப்பது போல, தர்க்கரீதியான பிளவு-மூளை அல்லது முனை இடைநீக்கம் எதுவும் இல்லை. அதற்கு பதிலாக, பணிநீக்கம் குறைக்கப்படுகிறது.
சூழ்நிலை 2: தலைவர் எந்த பின்தொடர்பவர்களையும் பார்க்கவில்லை, ஆனால் இன்னும் மிருகக்காட்சிசாலையைப் பார்க்கிறார்.

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

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

படம். 26. சூழ்நிலை 3. பின்தொடர்பவர் தலைவருக்குப் பெறுதல் கோரிக்கைகளை தொடர்ந்து அனுப்புகிறார்.
காட்சி 4: தலைவர் பின்தொடர்பவர்களைப் பார்க்கிறார், ஆனால் மிருகக்காட்சிசாலை பராமரிப்பாளரைப் பார்க்கவில்லை.

படம். 27. காட்சி 4. தலைவர் மற்றும் இரண்டு பின்தொடர்பவர்கள்
தலைவர் மிருகக்காட்சிசாலை பராமரிப்பாளரிடமிருந்து பிரிக்கப்பட்டவர், ஆனால் பின்தொடர்பவர்களைக் கொண்ட தரகர்களிடமிருந்து அல்ல.

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

படம். 29. சூழ்நிலை 4. நெட்வொர்க் மீட்டமைக்கப்பட்ட பிறகு தரகர் 1 இல் உள்ள தலைவர் பின்தொடர்பவராக மாறுகிறார்.
காட்சி 5: பின்தொடர்பவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பரிடமிருந்து முற்றிலும் பிரிக்கப்பட்டுள்ளார்.
பின்தொடர்பவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பரிலிருந்து முற்றிலும் தனிமைப்படுத்தப்படுகிறார். நெட்வொர்க் மீட்கப்படும் வரை அது ISR இலிருந்து வெறுமனே அகற்றப்பட்டு, பின்னர் மற்றவர்களுடன் இணைக்கப்படும்.

படம். 30. காட்சி 5. தனிமைப்படுத்தப்பட்ட பின்தொடர்பவர் ISR இலிருந்து அகற்றப்படுகிறார்.
காட்சி 6: தலைவர் மற்ற காஃப்கா முனைகள் மற்றும் ஜூகீப்பரிடமிருந்து முற்றிலும் பிரிக்கப்பட்டுள்ளார்.

படம். 31. காட்சி 6. தலைவர் மற்றும் இரண்டு பின்தொடர்பவர்கள்
தலைவர் அவர்களைப் பின்தொடர்பவர்கள், கட்டுப்படுத்தி மற்றும் மிருகக்காட்சிசாலை பராமரிப்பாளரிடமிருந்து முற்றிலும் தனிமைப்படுத்தப்பட்டுள்ளார். ஒரு குறுகிய காலத்திற்கு, அவர்கள் தொடர்ந்து இடுகைகளை ஏற்றுக்கொள்வார்கள் அக்ஸ்=1.

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

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

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

படம். 35. சூழ்நிலை 6. நெட்வொர்க் இணைப்பு மீட்டமைக்கப்பட்ட பிறகு அசல் தலைவர் பின்தொடர்பவராக மாறுகிறார்.
இந்த சூழ்நிலையில், ஒரு குறுகிய காலத்திற்கு ஒரு தர்க்கரீதியான பிரிப்பு காணப்படலாம், ஆனால் அக்ஸ்=1 и min.insync.replicas மேலும் 1. நெட்வொர்க் மீட்டமைக்கப்பட்ட பிறகு, அசல் தலைவர் இனி தலைவர் அல்ல என்பதை உணரும்போது அல்லது அனைத்து வாடிக்கையாளர்களும் தலைவர் மாறிவிட்டார் என்பதை உணர்ந்து புதிய தலைவருக்கு எழுதத் தொடங்கும் போது - எது முதலில் வருகிறதோ அதுவாக தர்க்கரீதியான பகிர்வு தானாகவே நிறுத்தப்படும். இரண்டு சந்தர்ப்பங்களிலும், சில செய்தி இழப்பு ஏற்படும், ஆனால் அக்ஸ்=1.
இந்த சூழ்நிலையின் மற்றொரு மாறுபாடு, நெட்வொர்க் பிளவுபடுவதற்கு சற்று முன்பு, பின்தொடர்பவர்கள் பின்தங்கும்போது, தலைவர் ISR ஐ தனக்காக மட்டும் சுருக்கிக் கொள்கிறார். பின்னர் இணைப்பு இழப்பு காரணமாக அது தனிமைப்படுத்தப்படுகிறது. ஒரு புதிய தலைவர் தேர்ந்தெடுக்கப்படுகிறார், ஆனால் அசல் தலைவர் தொடர்ந்து எழுத்துக்களை ஏற்றுக்கொள்கிறார், அக்ஸ்=எல்லாம், ஏனென்றால் ISR இல் வேறு யாரும் இல்லை. நெட்வொர்க் மீட்டமைக்கப்பட்ட பிறகு இந்த பதிவுகள் இழக்கப்படும். இதைத் தவிர்ப்பதற்கான ஒரே வழி min.insync.replicas = 2.
சூழ்நிலை 7: காஃப்கா கட்டுப்படுத்தி முனை மற்றொரு காஃப்கா முனையைக் காணவில்லை.
பொதுவாக, காஃப்கா முனையுடனான தொடர்பை இழந்த பிறகு, கட்டுப்படுத்தியால் லீடரை மாற்றுவது குறித்த எந்த தகவலையும் தெரிவிக்க முடியாது. மோசமான நிலையில், இது காட்சி 6 இல் உள்ளதைப் போல குறுகிய கால தருக்க பகிர்வுக்கு வழிவகுக்கும். பெரும்பாலும், பிந்தையது தோல்வியுற்றால் தரகர் தலைமைக்கான வேட்பாளராக மாற மாட்டார்.
காட்சி 8. காஃப்கா கட்டுப்படுத்தி ஜூகீப்பரைப் பார்க்கவில்லை.
தோல்வியுற்ற கட்டுப்படுத்தியிடமிருந்து பிங்கை ஜூகீப்பர் பெறமாட்டார், மேலும் புதிய காஃப்கா முனையை கட்டுப்படுத்தியாகத் தேர்ந்தெடுப்பார். அசல் கட்டுப்படுத்தி தொடர்ந்து தன்னை அப்படியே காட்டிக்கொள்ளலாம், ஆனால் அது ஜூகீப்பரிடமிருந்து அறிவிப்புகளைப் பெறாது, எனவே அதற்குச் செய்ய எந்தப் பணிகளும் இருக்காது. நெட்வொர்க் மீட்டமைக்கப்பட்டவுடன், அது இனி கட்டுப்படுத்தி அல்ல, வழக்கமான காஃப்கா முனையாக மாறிவிட்டது என்பதை அது உணரும்.
சூழ்நிலைகளிலிருந்து முடிவுகள்
பின்தொடர்பவர் இணைப்பு இழப்பு செய்தி இழப்பை ஏற்படுத்தாது, ஆனால் நெட்வொர்க் மீட்கும் வரை தற்காலிகமாக பணிநீக்கத்தைக் குறைக்கிறது என்பதை நாங்கள் காண்கிறோம். நிச்சயமாக, ஒன்று அல்லது அதற்கு மேற்பட்ட முனைகள் தொலைந்தால் இது தரவு இழப்புக்கு வழிவகுக்கும்.
இணைப்பு இழப்பு காரணமாக தலைவர் ஜூகீப்பரிடமிருந்து பிரிக்கப்பட்டால், இதன் விளைவாக செய்திகள் இழக்கப்படலாம் அக்ஸ்=1ஜூகீப்பருடன் தொடர்பு இல்லாதது இரண்டு தலைவர்களுடன் குறுகிய கால தர்க்கரீதியான பிளவை ஏற்படுத்துகிறது. இந்த சிக்கல் அளவுருவால் தீர்க்கப்படுகிறது அக்ஸ்=எல்லாம்.
அளவுரு min.insync.replicas இரண்டு அல்லது அதற்கு மேற்பட்ட பிரதிகளில், காட்சி 6 இல் உள்ளதைப் போல, அத்தகைய குறுகிய கால சூழ்நிலைகள் செய்தி இழப்பை ஏற்படுத்தாது என்பதற்கான கூடுதல் உத்தரவாதங்களை வழங்குகிறது.
செய்தி இழப்பின் சுருக்கம்
காஃப்காவில் தரவை இழக்கக்கூடிய அனைத்து வழிகளையும் பட்டியலிடுவோம்:
- செய்திகளைப் பயன்படுத்தி ஒப்புக் கொள்ளப்பட்டால் ஏதேனும் தலைவர் தோல்வி அக்ஸ்=1
- எந்தவொரு அசுத்தமான தலைமைப் பரிமாற்றமும், அதாவது ISR-க்கு வெளியே உள்ள ஒரு பின்தொடர்பவருக்கு, இருந்தாலும் கூட அக்ஸ்=எல்லாம்
- செய்திகளை உறுதிப்படுத்தியிருந்தால், ஜூகீப்பரிடமிருந்து தலைவரை தனிமைப்படுத்தவும் அக்ஸ்=1
- ஐ.எஸ்.ஆர் குழுவை ஏற்கனவே தன்னுடன் இணைத்துக்கொண்ட தலைவரின் முழுமையான தனிமைப்படுத்தல். அனைத்து தகவல்தொடர்புகளும் துண்டிக்கப்படும், கூட அக்ஸ்=எல்லாம்இது உண்மையாக இருந்தால் மட்டுமே min.insync.replicas=1.
- அனைத்து பகிர்வு முனைகளின் ஒரே நேரத்தில் தோல்விகள். நினைவகத்திலிருந்து செய்திகள் ஒப்புக் கொள்ளப்படுவதால், சில இன்னும் வட்டில் எழுதப்படாமல் இருக்கலாம். சேவையகத்தை மறுதொடக்கம் செய்த பிறகு, சில செய்திகள் காணாமல் போகலாம்.
அசுத்தமான தலைமைத்துவ மாற்றங்களைத் தடுப்பதன் மூலமோ அல்லது குறைந்தது இரண்டு பதவிகளின் பணிநீக்கத்தை உறுதி செய்வதன் மூலமோ தவிர்க்கலாம். மிகவும் வலுவான உள்ளமைவு ஒரு கலவையாகும் அக்ஸ்=எல்லாம் и min.insync.replicas 1 க்கும் மேற்பட்டவை.
RabbitMQ மற்றும் Kafka இன் நம்பகத்தன்மையின் நேரடி ஒப்பீடு.
நம்பகத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மையை உறுதி செய்வதற்காக, இரண்டு தளங்களும் முதன்மை மற்றும் இரண்டாம் நிலை நகலெடுக்கும் முறையை செயல்படுத்துகின்றன. இருப்பினும், RabbitMQ ஒரு அச்சத்தைக் கொண்டுள்ளது. தோல்விக்குப் பிறகு மீண்டும் இணைக்கும்போது, முனைகள் அவற்றின் தரவை நிராகரிக்கின்றன, மேலும் ஒத்திசைவு தடுக்கப்படுகிறது. இந்த இரட்டைத் தாக்குதல் RabbitMQ இல் பெரிய வரிசைகளின் நீடித்துழைப்பை கேள்விக்குறியாக்குகிறது. குறைக்கப்பட்ட பணிநீக்கம் அல்லது நீண்ட கால தடுப்பை நீங்கள் ஏற்றுக்கொள்ள வேண்டும். பணிநீக்கத்தைக் குறைப்பது பாரிய தரவு இழப்பின் அபாயத்தை அதிகரிக்கிறது. இருப்பினும், வரிசைகள் சிறியதாக இருந்தால், பணிநீக்கத்திற்காக இணைப்பு மறு முயற்சிகள் மூலம் குறுகிய கால கிடைக்காத தன்மையை (சில வினாடிகள்) நிர்வகிக்கலாம்.
காஃப்காவுக்கு இந்தப் பிரச்சனை இல்லை. தலைவர் மற்றும் பின்தொடர்பவர் வேறுபடும் இடத்தில் மட்டுமே இது தரவை நிராகரிக்கிறது. அனைத்து பகிரப்பட்ட தரவும் பாதுகாக்கப்படுகிறது. மேலும், நகலெடுப்பது அமைப்பைத் தடுக்காது. புதிய பின்தொடர்பவர் அதைப் பெறும்போது தலைவர் தொடர்ந்து பதிவுகளை ஏற்றுக்கொள்கிறார், இதனால் கிளஸ்டரில் சேருவது அல்லது மீண்டும் இணைவது DevOps க்கு ஒரு அற்பமான பணியாக அமைகிறது. நிச்சயமாக, நகலெடுப்பின் போது நெட்வொர்க் செயல்திறன் போன்ற சவால்கள் இன்னும் உள்ளன. பல பின்தொடர்பவர்கள் ஒரே நேரத்தில் சேர்க்கப்பட்டால், நீங்கள் செயல்திறன் வரம்பை அடையலாம்.
ஒரே நேரத்தில் பல சேவையகங்கள் ஒரு கிளஸ்டரில் தோல்வியடையும் போது நம்பகத்தன்மையின் அடிப்படையில் RabbitMQ காஃப்காவை விட சிறப்பாக செயல்படுகிறது. முன்னர் குறிப்பிட்டது போல, மாஸ்டர் மற்றும் அனைத்து கண்ணாடிகளிலும் உள்ள வட்டில் செய்தி எழுதப்பட்ட பின்னரே RabbitMQ வெளியீட்டாளருக்கு ஒரு ஒப்புதலை அனுப்புகிறது. இருப்பினும், இது இரண்டு காரணங்களுக்காக கூடுதல் தாமதத்தை அறிமுகப்படுத்துகிறது:
- ஒவ்வொரு சில நூறு மில்லி விநாடிகளிலும் fsync
- ஒவ்வொரு முனையின் (நெட் டிக்) கிடைக்கும் தன்மையை சரிபார்க்கும் பாக்கெட்டுகளின் டைம்-டு-லைவ் காலாவதியான பின்னரே கண்ணாடி செயலிழப்பைக் கண்டறிய முடியும். கண்ணாடி மெதுவாகவோ அல்லது குறைவாகவோ இருந்தால், இது தாமதத்தை சேர்க்கிறது.
ஒரு செய்தி பல முனைகளில் சேமிக்கப்பட்டால், அது நினைவகத்தில் இருக்கும்போதே செய்திகளை அங்கீகரிக்க முடியும் என்ற உண்மையை காஃப்கா நம்பியுள்ளார். இது எந்த வகையான செய்திகளையும் இழக்கும் அபாயத்தை அறிமுகப்படுத்துகிறது (கூட அக்ஸ்=எல்லாம், min.insync.replicas=2) ஒரே நேரத்தில் மறுத்தால்.
ஒட்டுமொத்தமாக, காஃப்கா சிறந்த செயல்திறனை வெளிப்படுத்துகிறது மற்றும் தொடக்கத்திலிருந்தே கிளஸ்டர்களுக்காக வடிவமைக்கப்பட்டுள்ளது. நம்பகத்தன்மைக்கு தேவைப்பட்டால் பின்தொடர்பவர்களின் எண்ணிக்கையை 11 ஆக அதிகரிக்கலாம். பிரதி காரணி 5, மற்றும் ஒத்திசைவில் உள்ள பிரதிகளின் குறைந்தபட்ச எண்ணிக்கை 1 ஆகும். min.insync.replicas=3 செய்தி இழப்பை மிகவும் அரிதான நிகழ்வாக மாற்றும். உங்கள் உள்கட்டமைப்பு இந்த பிரதி காரணி மற்றும் பணிநீக்க அளவை ஆதரிக்க முடிந்தால், நீங்கள் இந்த விருப்பத்தைத் தேர்வு செய்யலாம்.
சிறிய வரிசைகளுக்கு RabbitMQ கிளஸ்டரிங் நல்லது. இருப்பினும், அதிக போக்குவரத்து நெரிசலின் கீழ் சிறிய வரிசைகள் கூட விரைவாக வளரக்கூடும். வரிசைகள் பெரிதாகும்போது, கிடைக்கும் தன்மைக்கும் நம்பகத்தன்மைக்கும் இடையே ஒரு கூர்மையான பரிமாற்றம் தேவைப்படுகிறது. RabbitMQ இன் நெகிழ்வுத்தன்மையின் நன்மைகள் கிளஸ்டரிங்கின் எந்த குறைபாடுகளையும் விட அதிகமாக இருக்கும் குறைவான பொதுவான சூழ்நிலைகளுக்கு RabbitMQ கிளஸ்டரிங் மிகவும் பொருத்தமானது.
பெரிய வரிசைகளுக்கு RabbitMQ-வின் பாதிப்புக்கு ஒரு மாற்று மருந்து, அவற்றை பல சிறிய வரிசைகளாகப் பிரிப்பதாகும். முழு வரிசையையும் முழுமையாக வரிசைப்படுத்த வேண்டிய அவசியமில்லை, ஆனால் தொடர்புடைய செய்திகளை மட்டும் (எடுத்துக்காட்டாக, ஒரு குறிப்பிட்ட கிளையண்டிலிருந்து வரும் செய்திகள்) கோரினால், அல்லது ஆர்டர் செய்யவே தேவையில்லை என்றால், இந்த அணுகுமுறை ஏற்றுக்கொள்ளத்தக்கது: எனது திட்டத்தைப் பார்க்கவும். வரிசையைப் பிரிக்க (திட்டம் இன்னும் ஆரம்ப கட்டத்தில் உள்ளது).
இறுதியாக, RabbitMQ மற்றும் Kafka இரண்டின் கிளஸ்டரிங் மற்றும் பிரதி பொறிமுறைகளில் உள்ள பல பிழைகளைப் பற்றி மறந்துவிடாதீர்கள். காலப்போக்கில், அமைப்புகள் மிகவும் முதிர்ச்சியடைந்ததாகவும் நிலையானதாகவும் மாறிவிட்டன, ஆனால் எந்த செய்தியும் இழப்பிலிருந்து 100% பாதுகாப்பாக இருக்காது! மேலும், தரவு மையங்களில் பெரிய அளவிலான பேரழிவுகள் நிகழ்கின்றன!
நான் ஏதாவது தவறவிட்டிருந்தால், தவறு செய்திருந்தால், அல்லது நீங்கள் ஏதேனும் கருத்துகளுடன் உடன்படவில்லை என்றால், தயவுசெய்து ஒரு கருத்தை இடுங்கள் அல்லது என்னைத் தொடர்பு கொள்ளுங்கள்.
"நான் எதைத் தேர்வு செய்ய வேண்டும், காஃப்கா அல்லது ராபிட்எம்க்யூ?" அல்லது "எந்த தளம் சிறந்தது?" என்று அடிக்கடி என்னிடம் கேட்கப்படுகிறது. உண்மை என்னவென்றால், அது உண்மையில் உங்கள் சூழ்நிலை, உங்கள் தற்போதைய அனுபவம் மற்றும் பலவற்றைப் பொறுத்தது. அனைத்து பயன்பாட்டு நிகழ்வுகளுக்கும் சாத்தியமான வரம்புகளுக்கும் ஒரே தளத்தை பரிந்துரைப்பது மிகைப்படுத்தப்பட்டதாக இருப்பதால், எனது கருத்தை வழங்க நான் தயங்குகிறேன். நீங்கள் உங்கள் சொந்த கருத்தை உருவாக்குவதற்காக இந்த கட்டுரைத் தொடரை எழுதியுள்ளேன்.
இந்த துறையில் இரண்டு அமைப்புகளும் முன்னணியில் இருப்பதாக நான் கூறுவேன். எனது திட்டங்களில் எனக்குக் கிடைத்த அனுபவம், உத்தரவாதமான செய்தி வரிசைப்படுத்தல் மற்றும் நம்பகத்தன்மை போன்ற விஷயங்களுக்கு அதிக மதிப்பை அளிக்க வழிவகுத்ததால், நான் கொஞ்சம் சார்புடையவனாக இருக்கலாம்.
இந்த நம்பகத்தன்மை மற்றும் உத்தரவாதமான வரிசைப்படுத்தல் இல்லாத பிற தொழில்நுட்பங்களை நான் காண்கிறேன், பின்னர் நான் RabbitMQ மற்றும் Kafka ஐப் பார்க்கிறேன், இந்த இரண்டு அமைப்புகளிலும் உள்ள நம்பமுடியாத மதிப்பை நான் காண்கிறேன்.
ஆதாரம்: www.habr.com
