Xabar brokerlarini tushunish. ActiveMQ va Kafka bilan xabar almashish mexanikasini o'rganish. 1-bob

Hammaga salom!

Men kichik kitobni tarjima qila boshladim:
«Xabar brokerlarini tushunish",
muallif: Jakub Korab, nashriyotchi: O'Reilly Media, Inc., nashr etilgan sana: 2017 yil iyun, ISBN: 9781492049296.

Kitobning kirish qismidan:
"... Ushbu kitob sizga brokerlik xabar almashish tizimlari haqida qanday fikr yuritishni, ikkita mashhur broker texnologiyalarini: Apache ActiveMQ va Apache Kafkani taqqoslash va taqqoslashni o'rgatadi. Unda foydalanish holatlari va rivojlanish rag'batlari tavsiflanadi, bu esa ularning ishlab chiquvchilarini bir xil sohaga - oraliq broker bilan tizimlar o'rtasida xabar almashishga juda boshqacha yondashuvlarni qo'llashga olib keldi. Biz ushbu texnologiyalarni boshidan ko'rib chiqamiz va yo'lda turli dizayn tanlovlarining ta'sirini ta'kidlaymiz. Siz ikkala mahsulot haqida chuqur tushunchaga ega bo'lasiz, ulardan qanday foydalanish kerakligi va foydalanmaslik kerakligi va kelajakda boshqa xabar almashish texnologiyalarini ko'rib chiqishda nimalarga e'tibor berish kerakligini tushunasiz. ... "

Hozirgacha tarjima qilingan qismlar:
1-bob. Kirish
3-bob. Kafka

Men tugallangan boblarni tarjima qilinganda joylashtiraman.

BOB 1

kirish

Tizimdan tizimga xabar almashish ITning eng kam tushunilgan sohalaridan biridir. Ishlab chiquvchi yoki arxitektor sifatida siz turli xil ramkalar va ma'lumotlar bazalari bilan yaxshi tanish bo'lishingiz mumkin. Biroq, siz brokerga asoslangan xabar almashish texnologiyalari qanday ishlashi bilan faqat o'tkinchi ma'lumotga ega bo'lishingiz mumkin. Agar o'zingizni shunday his qilsangiz, tashvishlanmang, siz yaxshi sheriksiz.

Odamlar odatda xabar almashish infratuzilmasi bilan juda cheklangan aloqaga ega. Ular ko'pincha uzoq vaqt oldin yaratilgan tizimga ulanishadi yoki Internetdan tarqatishni yuklab olishadi, uni PROM-ga o'rnatadilar va unga kod yozishni boshlaydilar. PROM-da infratuzilmani ishga tushirgandan so'ng, natijalar aralash bo'lishi mumkin: xatolar tufayli xabarlar yo'qoladi, yuborish siz kutganingizdek ishlamayapti yoki brokerlar ishlab chiqaruvchilaringizni "osib qo'yishadi" yoki sizning iste'molchilaringizga xabar yubormaydilar.

Tanish ovozmi?

Umumiy stsenariy - bu sizning xabar almashish kodingiz hozircha ajoyib ishlaydi. U ishlashni to'xtatmaguncha. Bu davr o'z qo'riqchini yolg'on xavfsizlik tuyg'usiga solib qo'yadi, bu texnologiyaning asosiy xatti-harakatlari haqidagi noto'g'ri e'tiqodlarga asoslangan ko'proq kodlarga olib keladi. Ishlar noto'g'ri keta boshlaganda, siz noqulay haqiqatga duch kelasiz: siz mahsulotning asosiy xatti-harakatlarini yoki mualliflar tomonidan tanlangan, masalan, ishlashga nisbatan ishonchlilik yoki tranzaksiyaga qarshi gorizontal o'lchov kabilarini tushunmagansiz. .

Brokerlar qanday ishlashini chuqur tushunmasdan, odamlar o'zlarining xabar almashish tizimlari haqida oqilona ko'rinadigan bayonotlar berishadi, masalan:

  • Tizim hech qachon xabarlarni yo'qotmaydi
  • Xabarlar ketma-ket qayta ishlanadi
  • Iste'molchilarni qo'shish tizimni tezroq qiladi
  • Xabarlar faqat bir marta yetkaziladi

Afsuski, bu bayonotlarning ba'zilari faqat ma'lum sharoitlarda qo'llaniladigan taxminlarga asoslanadi, boshqalari esa shunchaki noto'g'ri.

Ushbu kitob sizga brokerga asoslangan xabar almashish tizimlari haqida qanday fikr yuritishni o'rgatadi, ikkita mashhur broker texnologiyalari: Apache ActiveMQ va Apache Kafkani solishtirish va taqqoslash. Unda foydalanish holatlari va rivojlanish rag'batlari tavsiflanadi, bu esa o'z ishlab chiqaruvchilarini bir xil sohaga - oraliq broker bilan tizimlar o'rtasida xabar almashishga juda boshqacha yondashuvlarni qo'llashga olib keldi. Biz ushbu texnologiyalarni boshidan ko'rib chiqamiz va yo'lda turli dizayn tanlovlarining ta'sirini ta'kidlaymiz. Siz ikkala mahsulot haqida chuqur tushunchaga ega bo'lasiz, ulardan qanday foydalanish kerak va qanday foydalanmaslik kerakligi va kelajakda boshqa xabar almashish texnologiyalarini ko'rib chiqishda nimalarga e'tibor berish kerakligini tushunasiz.

Boshlashdan oldin, keling, asosiy narsalarni ko'rib chiqaylik.

Xabar tizimi nima va u nima uchun kerak?

Ikki dastur bir-biri bilan bog'lanishi uchun ular avvalo interfeysni aniqlashlari kerak. Ushbu interfeysni aniqlash HTTP, MQTT yoki SMTP kabi transport yoki protokolni tanlashni va tizimlar o'rtasida almashinadigan xabar formatlarini muhokama qilishni o'z ichiga oladi. Bu qat'iy jarayon bo'lishi mumkin, masalan, XML sxemasini xabar yuki narxiga bo'lgan talablar bilan belgilash yoki u kamroq rasmiy bo'lishi mumkin, masalan, HTTP so'rovining bir qismi mijoz identifikatorini o'z ichiga olishi haqidagi ikki ishlab chiquvchi o'rtasidagi kelishuv.

Xabarlar formati va ularni jo‘natish tartibi tizimlar o‘rtasida mos kelsa, ular boshqa tizimning amalga oshirilishi haqida qayg‘urmasdan bir-biri bilan muloqot qilishlari mumkin. Ushbu tizimlarning ichki qismlari, masalan, dasturlash tili yoki foydalaniladigan ramkalar vaqt o'tishi bilan o'zgarishi mumkin. Shartnomaning o'zi saqlanib qolgan ekan, o'zaro ta'sir boshqa tomondan o'zgarishsiz davom etishi mumkin. Ushbu interfeys orqali ikkita tizim samarali ravishda ajratiladi (ajraladi).

Xabar tizimlari odatda jo'natuvchini qabul qiluvchi yoki oluvchilardan yanada ajratish (ajratish) uchun o'zaro ta'sir qiluvchi ikkita tizim o'rtasida vositachini o'z ichiga oladi. Bunday holda, xabar almashish tizimi jo'natuvchiga qabul qiluvchining qayerdaligini, u faolmi yoki nechta nusxasi borligini bilmasdan xabar yuborish imkonini beradi.

Keling, xabar almashish tizimi hal qiladigan muammolar turlari uchun bir nechta o'xshashlikni ko'rib chiqaylik va ba'zi asosiy atamalarni kiritamiz.

Nuqtadan nuqtaga

Aleksandra Odamga paket jo'natish uchun pochta bo'limiga boradi. U deraza oldiga borib, paketni xodimga uzatadi. Xodim paketni olib, Aleksandraga kvitansiyani beradi. Paket jo'natilganda Odam uyda bo'lishi shart emas. Aleksandraning ishonchi komilki, paket Odamga kelajakda bir nuqtada yetkaziladi va o'z biznesini davom ettirishi mumkin. Bir payt Odam Ato paketni oladi.

Bu xabar almashish modeliga misol nuqtadan nuqtaga. Bu yerda pochta bo‘limi posilkalarni tarqatish mexanizmi vazifasini bajaradi va har bir posilka bir marta yetkazilishini ta’minlaydi. Pochta bo'limidan foydalanish paketni jo'natish aktini paketni etkazib berishdan ajratib turadi.
Klassik xabar almashish tizimlarida nuqtadan nuqtaga model orqali amalga oshiriladi navbat. Navbat bir yoki bir nechta iste'molchilar tomonidan obuna bo'lishi mumkin bo'lgan FIFO (birinchi kiruvchi, birinchi chiqadi) buferi vazifasini bajaradi. Har bir xabar faqat yuboriladi obuna bo'lgan iste'molchilardan biriga. Navbatlar odatda iste'molchilar o'rtasida xabarlarni adolatli ravishda tarqatishga harakat qiladi. Bu xabarni faqat bitta iste'molchi oladi.

Navbatlar uchun "bardoshli" atamasi qo'llaniladi. Ishonchlilik - bu iste'molchi xabarlarni yetkazib berish uchun navbatga obuna bo'lgunga qadar xabar almashish tizimi faol obunachilar yo'qligida xabarlarni saqlab turishini ta'minlaydigan xizmat xususiyatidir.

Ishonchlilik ko'pincha aralashtiriladi qat'iyatlilik va ikkala atama bir-birining o'rnida ishlatilgan bo'lsa-da, ular turli funktsiyalarni bajaradi. Qat'iylik xabar almashish tizimi xabarni qabul qilish va iste'molchiga jo'natish o'rtasida qandaydir xotiraga yozish yoki yozishni aniqlaydi. Navbatga yuborilgan xabarlar doimiy bo'lishi yoki bo'lmasligi mumkin.
Nuqtadan nuqtaga xabar almashish, agar foydalanish holati xabarda bir martalik harakatni talab qilsa, ishlatiladi. Masalan, hisob raqamiga pul mablag'larini kiritish yoki etkazib berish buyurtmasini bajarish. Nima uchun xabar almashish tizimi o'z-o'zidan bir martalik yetkazib berishni ta'minlay olmasligini va nima uchun navbatlar yetkazib berish kafolatini eng yaxshi tarzda ta'minlashi mumkinligini keyinroq muhokama qilamiz. kamida bir marta.

Nashriyot - obunachi

Gabriella konferentsiya raqamini teradi. U konferentsiyaga ulangan bo'lsa-da, u boshqa qo'ng'iroq ishtirokchilari bilan birga ma'ruzachi aytgan hamma narsani eshitadi. U sozlaganda, aytilgan gaplarni o'tkazib yuboradi. Qayta ulanganda, u nima aytilayotganini eshitishda davom etadi.

Bu xabar almashish modeliga misol nashr qilish - obuna bo'lish. Konferentsiya qo'ng'iroqlari translyatsiya mexanizmi sifatida ishlaydi. Gapirayotgan odam hozirda qancha odam qo‘ng‘iroq qilayotganiga ahamiyat bermaydi – tizim hozirda ulangan har bir kishi aytilayotgan gaplarni eshitishini ta’minlaydi.
Klassik xabar almashish tizimlarida nashr qilish-obuna bo'lish xabar almashish modeli orqali amalga oshiriladi tepalar. Mavzu konferentsiya mexanizmi bilan bir xil eshittirish usulini taqdim etadi. Mavzuga xabar yuborilsa, u tarqatiladi barcha obuna bo'lgan foydalanuvchilar uchun.

Mavzular odatda ishonchsiz (bardoshsiz). Tinglovchi uzilganida konferentsiya qo'ng'irog'ida aytilgan gaplarni eshita olmaydigan tinglovchi kabi, mavzu obunachilari oflayn bo'lganda yuborilgan har qanday xabarlarni o'tkazib yuborishadi. Shu sababli, mavzular yetkazib berish kafolatini beradi, deb aytishimiz mumkin bir martadan ko'p bo'lmagan har bir iste'molchi uchun.

Nashr qilish-obuna bo'lish xabari odatda xabarlar axborot xarakteriga ega bo'lganda va bitta xabarning yo'qolishi ayniqsa ahamiyatli bo'lmaganda qo'llaniladi. Misol uchun, mavzu bir soniyada bir marta sensorlar guruhidan harorat ko'rsatkichlarini uzatishi mumkin. Joriy haroratga qiziqadigan va mavzuga obuna bo'lgan tizim xabarni o'tkazib yuborsa, tashvishlanmaydi - yaqin kelajakda boshqasi keladi.

gibrid modellar

Do'kon veb-sayti buyurtma xabarlarini "xabar navbati" ga joylashtiradi. Ushbu xabarlarning asosiy iste'molchisi ijroiya tizimidir. Bundan tashqari, audit tizimida keyingi kuzatish uchun ushbu buyurtma xabarlarining nusxalari bo'lishi kerak. Ikkala tizim ham, tizimlarning o'zlari bir muncha vaqt mavjud bo'lmasa ham, xabarlarni o'tkazishga ruxsat bera olmaydi. Veb-sayt boshqa tizimlardan xabardor bo'lmasligi kerak.

Foydalanish holatlari ko'pincha nashr etish-obuna bo'lish va nuqtadan nuqtaga xabar almashish modellarining kombinatsiyasini talab qiladi, masalan, bir nechta tizim xabar nusxasini talab qilganda va xabar yo'qolishining oldini olish uchun ishonchlilik va qat'iylik talab qilinganda.

Bu holatlar xabarlarni asosan mavzu sifatida tarqatadigan maqsadni (navbatlar va mavzular uchun umumiy atama) talab qiladi, shuning uchun har bir xabar ushbu xabarlarga qiziqqan alohida tizimga yuboriladi, shuningdek, har bir tizim kiruvchi xabarlarni qabul qiladigan bir nechta iste'molchilarni aniqlay oladi. xabarlar, bu ko'proq navbatga o'xshaydi. Bu holatda o'qish turi har bir manfaatdor tomon uchun bir marta. Ushbu gibrid manzillar ko'pincha chidamlilikni talab qiladi, shuning uchun agar iste'molchi oflayn rejimga o'tsa, o'sha vaqtda yuborilgan xabarlar iste'molchi qayta ulangandan keyin olinadi.

Gibrid modellar yangi emas va ko'pgina xabar almashish tizimlarida, jumladan ActiveMQ (mavzular va navbatlarni birlashtirgan virtual yoki kompozit manzillar orqali) va Kafka (so'zsiz, maqsad dizaynining asosiy xususiyati sifatida) foydalanish mumkin.

Endi bizda ba'zi asosiy terminologiya va xabar almashish tizimidan nima uchun foydalanishimiz mumkinligini tushunganimizdan so'ng, keling, tafsilotlarga o'tamiz.

Tarjima bajarildi: tele.gg/middle_java

Quyidagi tarjima qismi: 3-bob. Kafka

Davomi bor…

Manba: www.habr.com

a Izoh qo'shish