செய்தி தரகர்களைப் புரிந்துகொள்வது. ActiveMQ மற்றும் Kafka மூலம் செய்தி அனுப்பும் இயக்கவியல் கற்றல். அத்தியாயம் 1

அனைவருக்கும் வணக்கம்!

நான் ஒரு சிறிய புத்தகத்தை மொழிபெயர்க்க ஆரம்பித்தேன்:
«செய்தி தரகர்களைப் புரிந்துகொள்வது",
ஆசிரியர்: Jakub Korab, வெளியீட்டாளர்: O'Reilly Media, Inc., வெளியிடப்பட்ட தேதி: ஜூன் 2017, ISBN: 9781492049296.

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

இதுவரை மொழிபெயர்க்கப்பட்ட பகுதிகள்:
அத்தியாயம் 1 அறிமுகம்
அத்தியாயம் 3. காஃப்கா

முடிக்கப்பட்ட அத்தியாயங்களை மொழிபெயர்க்கும்போது பதிவிடுகிறேன்.

அத்தியாயம் 1

அறிமுகம்

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

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

பரிச்சியமான?

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

தரகர்கள் எவ்வாறு வேலை செய்கிறார்கள் என்பது பற்றிய ஆழமான புரிதல் இல்லாமல், மக்கள் தங்கள் செய்தியிடல் அமைப்புகளைப் பற்றி நியாயமான அறிக்கைகளை வெளியிடுகிறார்கள்:

  • கணினி ஒருபோதும் செய்திகளை இழக்காது
  • செய்திகள் தொடர்ச்சியாக செயலாக்கப்படும்
  • நுகர்வோரைச் சேர்ப்பது கணினியை வேகமாகச் செய்யும்
  • செய்திகள் ஒருமுறை மட்டுமே வழங்கப்படும்

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

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

நாம் தொடங்குவதற்கு முன், அடிப்படைகளுக்கு செல்லலாம்.

மெசேஜிங் சிஸ்டம் என்றால் என்ன, அது ஏன் தேவைப்படுகிறது?

இரண்டு பயன்பாடுகள் ஒன்றோடொன்று தொடர்பு கொள்ள, அவை முதலில் ஒரு இடைமுகத்தை வரையறுக்க வேண்டும். இந்த இடைமுகத்தை வரையறுப்பதில் HTTP, MQTT அல்லது SMTP போன்ற போக்குவரத்து அல்லது நெறிமுறையைத் தேர்ந்தெடுப்பது மற்றும் அமைப்புகளுக்கு இடையே பரிமாறப்படும் செய்தி வடிவங்களைப் பற்றி பேச்சுவார்த்தை நடத்துவது ஆகியவை அடங்கும். இது XML திட்டத்தை வரையறுப்பது போன்ற கடுமையான செயல்முறையாக இருக்கலாம்.

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

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

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

புள்ளி-க்கு-புள்ளி

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

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

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

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

வெளியீட்டாளர்-சந்தாதாரர்

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

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

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

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

கலப்பின மாதிரிகள்

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

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

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

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

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

மொழிபெயர்ப்பு முடிந்தது: tele.gg/middle_java

பின்வரும் மொழிபெயர்க்கப்பட்ட பகுதி: அத்தியாயம் 3. காஃப்கா

தொடர வேண்டும் ...

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

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