Kuptimi i brokerëve të mesazheve. Studimi i mekanikës së ndërrimit të mesazheve përmes ActiveMQ dhe Kafka. Kapitulli 1

Përshëndetje të gjithëve!

Kam filluar përkthimin e një libri të vogël:
«Kuptimi i Brokerëve të Mesazheve«,
autori: Jakub Korab, botuesi: O’Reilly Media, Inc., data e botimit: Qershor 2017, ISBN: 9781492049296.

Nga hyrja në libër:
«… Ky libër do t'ju mësojë të mendoni për sistemi e shkëmbimit të mesazheve në brokerë, duke krahasuar dhe kontrastuar dy teknologji popullore të brokerëve: Apache ActiveMQ dhe Apache Kafka. Këtu do të paraqiten shembuj përdorimi dhe nxitjet e zhvillimit, të cilat çuan në përdorimin e qasjeve krejtësisht të ndryshme nga zhvilluesit e tyre për të njëjtën fushë — shkëmbimin e mesazheve midis sistemeve me një broker ndërmjetës. Ne do t'i shqyrtojmë këto teknologji nga fillimi dhe do të theksojmë ndikimin e opsioneve të ndryshme të dizajnit gjatë këtij procesi. Do të merrni një kuptim të thellë të të dy produkteve, kuptim se si duhet dhe si nuk duhet t'i përdorni, dhe kuptimin e asaj çfarë duhet të keni parasysh kur shqyrtoni teknologji të tjera të shkëmbimit të mesazheve në të ardhmen. …»

Pjesët e përkthyera deri tani:
Kapitulli 1. Hyrja
Kapitulli 3. Kafka

Do të postoj kapitujt e përfunduar ndërsa i përkthej.

KAPITULLI 1

Hyrje

Shkëmbimi i mesazheve ndër-sistemi është një nga fushat më pak të kuptuara të IT. Si zhvillues ose arkitekt, mund të jeni mirë të njohur me kuadrin e ndryshëm dhe bazat e të dhënave. Megjithatë, është shumë e mundur që ju të keni vetëm një njohuri të sipërfaqshme mbi mënyrën se si funksionojnë teknologjitë e shkëmbimit të mesazheve të bazuara në broker. Nëse ndiheni ashtu, mos u shqetësoni, jeni në kompani të mirë.

Njerëzit zakonisht kontaktojnë me infrastrukturën e shkëmbimit të mesazheve në mënyrë shumë të kufizuar. Shpesh lidhen me një sistem që është krijuar shumë kohë më parë, ose shkarkojnë një distribucion nga interneti, e instalojnë atë në PROM dhe fillojnë të shkruajnë kod për të. Pas aktivizimit të infrastrukturës në PROM, rezultatet mund të jenë të paqarta: humbje mesazhesh gjatë ndërprerjeve, dërgesa që nuk funksionon siç prisnit, apo brokerët që 'përmbajnë' prodhuesit tuaj ose nuk dërgojnë mesazhe tek konsumatorët tuaj.

Dëgjon kështu?

Një skenar i zakonshëm është kur kodi juaj i komunikimit funksionon shkëlqyeshëm deri në një moment. Derisa të ndalojë së funksionuari. Ky periudhë të jep një ndjenjë të keqe të sigurisë, që çon në më shumë kod që bazohet në ide të gabuara mbi sjelljen themelore të teknologjisë. Kur diçka fillon të shkojë keq, përballeni me një të vërtetë të pakëndshme: që vërtet nuk e keni kuptuar sjelljen bazike të produktit ose kompromiset që kanë zgjedhur autorët, siç janë performanca kundrejt besueshmërisë, apo transaksionaliteti kundrejt shkallëzueshmërisë horizontale.

Pa një kuptim të thellë se si funksionojnë brokerat, njerëzit bëjnë pohime, dukshëm të arsyeshme mbi sistemet e tyre të komunikimit, të tilla si:

  • Sistemi kurrë nuk do të humbasë mesazhe
  • Mesazhet do të përpunohen në rend të njëpasnjëshëm
  • Shtimi i konsumatorëve do ta bëjë sistemin më të shpejtë
  • Mesazhet do të dërgohen vetëm një herë

Fatkeqësisht, disa nga këto pohime janë të bazuara në supozime që janë të vlefshme vetëm nën rrethana të caktuara, ndërkohë që të tjerë janë thjesht të gabuara.

Ky libri do t'ju mësojë të mendoni për sistemet e këmbimit të mesazheve të bazuara në brokere, duke krahasuar dhe përballuar dy teknologjitë e njohura të brokerëve: Apache ActiveMQ dhe Apache Kafka. Aty do të paraqiten shembuj përdorimi dhe stimuj zhvillimi që çuan në përdorimin e qasjeve krejtësisht të ndryshme nga zhvilluesit e tyre në të njëjtën fushë — shkëmbimin e mesazheve midis sistemeve me një broker ndërmjetës. Ne do ta shqyrtojmë këto teknologji nga e para dhe do të theksojmë ndikimin e varianteve të ndryshme të dizajnit në këtë proces. Do të merrni një kuptim të thellë të dy produkteve, njohuri se si duhet dhe si nuk duhet të përdoren, dhe informacion se çfarë duhet të vini re kur shqyrtoni teknologji të tjera të shkëmbimit të mesazheve në të ardhmen.

Para se të fillojmë, le të kalojmë përmes bazave.

Çfarë është një Sistem i shkëmbimit të mesazheve dhe përse ka nevojë?

Nëse dy aplikacione e kanë qëllim të komunikojnë me njëra-tjetrën, ato duhet së pari të përcaktojnë një ndërfaqe. Përcaktimi i kësaj ndërfaqe përfshin zgjedhjen e një transporti ose protokoli, siç janë HTTP, MQTT ose SMTP, dhe pajtimin e formateve të mesazheve që do të shkëmbejnë sistemet. Kjo mund të jetë një proces rigoroz, si përcaktimi i një skeme XML me kërkesat për ngarkesën e mesazhit, ose mund të jetë shumë më pak formale, siç është një marrëveshje mes dy zhvilluesve që një pjesë e caktuar e kërkesës HTTP do të përmbajë identifikuesin e klientit.

Mjaft që formati i mesazheve dhe rendi i dërgimit të tyre ndërmjet sistemeve janë dakorduar, ato do të jenë në gjendje të bashkëpunojnë me njëra-tjetrën pa u shqetësuar për implementimin e sistemit tjetër. Detajet e këtyre sistemeve, si gjuha e programimit ose korniza e përdorur, mund të ndryshojnë me kalimin e kohës. Deri sa kontrata e vet mbetet e ruajtur, bashkëpunimi mund të vazhdojë pa ndryshime nga ana tjetër. Këto dy sisteme janë efektivisht të ndara nga kjo ndërfaqe.

Sistemet e shkëmbimit të mesazheve, në përgjithësi, parashikojnë përfshirjen e një ndërmjetësi midis dy sistemeve që ndërveprojnë për të ndarë dërguesin nga marrësi ose marrësit. Në këtë rast, sistemi i shkëmbimit të mesazheve i lejon dërguesit të dërgojë një mesazh, pa e ditur se ku ndodhet marrësi, nëse ai është aktiv apo se sa janë kopjet e tij.

Le të shqyrtojmë disa analoge të problemeve të ndryshme që zgjidh sistemi i shkëmbimit të mesazheve dhe të prezantojmë disa terma thelbësorë.

Point-to-Point

Aleksandra shkon në postar për të dërguar një paketë për Adam. Ajo i qaset dritares dhe i dorëzon punonjësit paketën. Punonjësi merr paketën dhe i jep Aleksandrës një çeqe. Adam nuk ka nevojë të jetë në shtëpi në momentin e dërgimit të paketës. Aleksandra është e sigurt se paketa do t'i dorëzohet Adamit në një moment të ardhshëm dhe mund të vazhdojë me punët e saj. Më vonë, në një moment, Adam merr paketën.

Ky është një shembull i modelit të shkëmbimit të mesazheve pikë-pikë. Zyrja e postës këtu shërben si një mekanizëm shpërndarjeje për paketat, duke siguruar që çdo paketë të dërgohet një herë. Përdorimi i zyrës postare ndan aktin e dërgimit të paketës nga shpërndarja e paketës.
Në sistemet klasike të shkëmbimit të mesazheve, modeli «pikë-pikë» realizohet përmes rindeshjeve. Rindeshja vepron si një buffer FIFO (i pari i hyrë, i pari i dalë), të cilin mund të regjistrohet një ose disa konsumatorë. Çdo mesazh dërgohet vetëm njërit prej konsumatorëve të regjistruar. Rindeshjet zakonisht përpiqen të shpërndajnë drejtësisht mesazhet ndërmjet konsumatorëve. Vetëm një konsumator do të marrë këtë mesazh.

Për rindeshjet zbatohet termi «e besueshme» («durable»). Besueshmëria — është një pronë e shërbimit që garanton se sistemi i shkëmbimit të mesazheve do të ruajë mesazhet në mungesë të konsumatorëve aktivë deri sa konsumatori të regjistrohet në rindeshje për shpërndarjen e mesazheve.

Besueshmëria shpesh ngatërrohet me persistencën Megjithëse këto dy terma janë të ndërkëlldhur, ata kryejnë funksione të ndryshme. Përshtatshmëria përcakton nëse një mesazh regjistrohet nga sistemi i shkëmbimit të mesazheve në ndonjë lloj depozite midis pranimit dhe dërgimit të tij te konsumatori. Mesazhet e dërguara në radhë mund të jenë ose jo të përshtatshme.
Shkëmbimi i mesazheve të tipit "Pikë-në-pikë" përdoret kur varianti i përdorimit kërkon një veprim të vetëm me mesazhin. Një shembull mund të jetë depozitimi i fondeve në llogari ose përfundimi i një porosie për dorëzim. Më vonë do të diskutojmë pse sistemi i shkëmbimit të mesazheve nuk është në gjendje të sigurojë vetvetiu dorëzim të vetëm dhe pse radhët mund të ofrojnë, në më të mirën e rasteve, garanci për dorëzim. të paktën një herë.

Botuesi-Përshkrues

Gabriela telefonon numrin e konferencës. Ndërsa ajo është e lidhur me konferencën, ajo dëgjon gjithçka që thotë folësi, së bashku me pjesëmarrësit e tjerë të thirrjes. Kur ajo shkëputet, ajo humbet atë që është thënë. Pasi të lidhet përsëri, ajo vazhdon të dëgjojë atë që po thonë.

Ky është një shembull i modelit të shkëmbimit të mesazheve botim-përshkrim. Konferenca është një mekanizëm shpërndarës. Personi që flet nuk shqetësohet për numrin e njerëzve që janë të pranishëm në thirrje — sistemi garanton që kushdo që lidhet në këtë moment do të dëgjojë atë që po thuhet.
Në sistemet klasike të komunikimit, modeli i shkëmbimit të mesazheve "publikim-abonim" realizohet nëpërmjet temave. Një temë ofron një mënyrë të ngjashme shpërndarjeje si mekanizmi i konferencës. Kur dërgohet një mesazh në një temë, ai shpërndahet në të gjithë përdoruesit e abonuar.

Temat zakonisht janë jo të besueshme (nondurable). Ashtu si një dëgjues që nuk dëgjon atë që po thuhet në thirrjen e konferencës, kur përdoruesi largohet, abonentët e temës humbasin çdo mesazh që dërgohet në atë moment kur ata janë offline. Për këtë arsye, mund të thuhet se temat ofrojnë një garanci dorëzimi jo më shumë se një herë për çdo konsumator.

Mesazhet e tipit "publikim-abonim" përdoren zakonisht kur mesazhet kanë natyrë informative dhe humbja e një mesazhi nuk ka shumë rëndësi. Për shembull, një temë mund të transmetojë temperaturat nga një grup sensorësh një herë në sekondë. Një sistem që është i interesuar për temperaturën aktuale dhe që subscribon në temën, nuk do të shqetësohet nëse humbet një mesazh — një tjetër do të vijë së shpejti.

Modelet hibride

Faqja e internetit të dyqanit vendos mesazhet e porosive në "rque mesazhesh". Konsumatori kryesor i këtyre mesazheve është sistemi ekzekutiv. Për më tepër, sistemi i auditimit duhet të ketë kopje të këtyre mesazheve të porosive për ndjekje të mëvonshme. Të dy sistemet nuk mund të humbin mesazhe, edhe nëse vetë sistemet janë të paarritshme për një periudhë kohe. Faqja e internetit nuk duhet të dijë për sistemet e tjera.

Skenarët e përdorimit shpesh kërkojnë kombinimin e modeleve të shkëmbimit të mesazheve "publikim-abonim" dhe "pikë-pikë", për shembull, kur disa sisteme kërkojnë një kopje të mesazhit, dhe për të parandaluar humbjen e mesazheve, nevojitet si besueshmëri ashtu edhe qëndrueshmëri.

Në këto raste kërkohet një destinacion (destination) (termin i zakonshëm për radhët dhe temat), i cili shpërndan mesazhet kryesisht si një temë, në mënyrë që çdo mesazh të dërgohet në një sistem të veçantë që është i interesuar në këto mesazhe, por gjithashtu në të cilën çdo sistem mund të përcaktojë disa konsumatorë që marrin mesazhet e ardhshme, gjë që është më shumë si një radhë. Lloji i leximit në këtë rast është një herë për çdo palë që ka interes. Këta destinacione hibride shpesh kërkojnë besueshmëri (durability), kështu që, nëse konsumatori shkëputet, mesazhet që dërgohen në atë kohë pranohen pas ristudhjes së konsumatorit.

Modelet e përziera nuk janë të reja dhe mund të përdoren në shumicën e sistemeve të shkëmbimit të mesazheve, duke përfshirë si ActiveMQ (përmes adresave virtuale ose të përbëra që kombinojnë tema dhe radhë), ashtu edhe Kafka (implicit, si një veçori themelore e dizajnit të adresës së saj).

Tani që kemi disa terminologji themelore dhe kuptim se si mund të na shërbejë një sistem shkëmbimi mesazhesh, le të kalojmë te detajet.

Përkthimi është realizuar nga: tele.gg/middle_java

Pjesa e ardhshme e përkthyer: Kapitulli 3. Kafka

Vazhdon…

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster