Kuptimi i ndërmjetësve të mesazheve. Mësimi i mekanikës së mesazheve me ActiveMQ dhe Kafka. Kapitulli 1

Përshëndetje të gjithëve!

Fillova të përkthej një libër të vogël:
«Kuptimi i ndërmjetësve të mesazheve',
autor: Jakub Korab, botues: O'Reilly Media, Inc., data e botimit: Qershor 2017, ISBN: 9781492049296.

Nga hyrja e librit:
'... Ky libër do t'ju mësojë se si të mendoni për sistemet e mesazheve ndërmjetëse, duke krahasuar dhe krahasuar dy teknologjitë e njohura të ndërmjetësit: Apache ActiveMQ dhe Apache Kafka. Ai do të përshkruajë rastet e përdorimit dhe stimujt e zhvillimit që i shtynë zhvilluesit e tyre të ndërmarrin qasje shumë të ndryshme për të njëjtën zonë - mesazhe midis sistemeve me një ndërmjetës të ndërmjetëm. Ne do t'i shikojmë këto teknologji nga themeli dhe do të nxjerrim në pah ndikimin e zgjedhjeve të ndryshme të dizajnit gjatë rrugës. Ju do të fitoni një kuptim të thellë të të dy produkteve, një kuptim se si ato duhet dhe nuk duhet të përdoren dhe një kuptim se çfarë duhet të kërkoni kur merrni parasysh teknologjitë e tjera të mesazheve në të ardhmen. ... "

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

Unë do të postoj kapitujt e përfunduar ashtu siç janë përkthyer.

KAPITULLI 1

Paraqitje

Mesazhimi nga sistemi në sistem është një nga fushat më pak të kuptuara të IT. Si zhvillues ose arkitekt, mund të jeni shumë të njohur me korniza dhe baza të të dhënave të ndryshme. Megjithatë, ka të ngjarë që ju të keni vetëm një njohje kalimtare me mënyrën se si funksionojnë teknologjitë e mesazheve të bazuara në ndërmjetës. Nëse ndiheni kështu, mos u shqetësoni, ju jeni në shoqëri të mirë.

Njerëzit zakonisht kanë kontakte shumë të kufizuara me infrastrukturën e mesazheve. Ata shpesh lidhen me një sistem të krijuar shumë kohë më parë, ose shkarkojnë një shpërndarje nga interneti, e instalojnë në PROM dhe fillojnë të shkruajnë kodin për të. Pas funksionimit të infrastrukturës në PROM, rezultatet mund të jenë të përziera: mesazhet humbasin për shkak të dështimeve, dërgimi nuk funksionon siç prisnit, ose ndërmjetësit "varin" prodhuesit tuaj ose nuk u dërgojnë mesazhe konsumatorëve tuaj.

Tingëllon e njohur?

Një skenar i zakonshëm është ku kodi juaj i mesazheve funksionon mirë, për momentin. Derisa të ndalojë së punuari. Kjo periudhë e qetëson rojen e dikujt në një ndjenjë të rreme sigurie, duke çuar në më shumë kode të bazuara në besime të rreme për sjelljen themelore të teknologjisë. Kur gjërat fillojnë të shkojnë keq, ju përballeni me një të vërtetë të papërshtatshme: që nuk e keni kuptuar vërtetë sjelljen themelore të produktit ose kompensimet e zgjedhura nga autorët, të tilla si performanca kundrejt besueshmërisë, ose transaksionaliteti kundrejt shkallëzueshmërisë horizontale. .

Pa një kuptim të thellë se si funksionojnë ndërmjetësit, njerëzit bëjnë deklarata në dukje të arsyeshme në lidhje me sistemet e tyre të mesazheve, të tilla si:

  • Sistemi nuk do të humbasë kurrë mesazhe
  • Mesazhet do të përpunohen në mënyrë sekuenciale
  • 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 deklarata bazohen në supozime që zbatohen vetëm në rrethana të caktuara, ndërsa të tjerat janë thjesht të pasakta.

Ky libër do t'ju mësojë se si të mendoni për sistemet e mesazheve të bazuara në ndërmjetës, duke krahasuar dhe krahasuar dy teknologjitë e njohura të ndërmjetësit: Apache ActiveMQ dhe Apache Kafka. Ai do të përshkruajë rastet e përdorimit dhe stimujt e zhvillimit që i shtynë zhvilluesit e tyre të ndërmarrin qasje shumë të ndryshme për të njëjtën zonë - mesazhe midis sistemeve me një ndërmjetës të ndërmjetëm. Ne do t'i shikojmë këto teknologji nga themeli dhe do të nxjerrim në pah ndikimin e zgjedhjeve të ndryshme të dizajnit gjatë rrugës. Do të fitoni një kuptim të thellë të të dy produkteve, një kuptim se si ato duhet dhe nuk duhet të përdoren dhe një kuptim se çfarë duhet të kërkoni kur merren parasysh teknologjitë e tjera të mesazheve në të ardhmen.

Para se të fillojmë, le të kalojmë mbi bazat.

Çfarë është një sistem mesazhesh dhe pse është i nevojshëm?

Në mënyrë që dy aplikacione të komunikojnë me njëri-tjetrin, së pari duhet të përcaktojnë një ndërfaqe. Përcaktimi i kësaj ndërfaqe përfshin zgjedhjen e një transporti ose protokolli, të tillë si HTTP, MQTT ose SMTP, dhe negocimin e formateve të mesazheve që do të shkëmbehen midis sistemeve. Ky mund të jetë një proces i rreptë, si p.sh. përcaktimi i një skeme XML me kërkesat e kostos së ngarkesës së mesazhit, ose mund të jetë shumë më pak formal, si p.sh. një marrëveshje midis dy zhvilluesve që një pjesë e kërkesës HTTP të përmbajë identifikuesin e klientit.

Për sa kohë që formati i mesazheve dhe radha në të cilën dërgohen janë të qëndrueshme ndërmjet sistemeve, ato mund të komunikojnë me njëri-tjetrin pa u shqetësuar për zbatimin e sistemit tjetër. Pjesa e brendshme e këtyre sistemeve, si gjuha e programimit ose korniza e përdorur, mund të ndryshojnë me kalimin e kohës. Për sa kohë që vetë kontrata ruhet, ndërveprimi mund të vazhdojë pa ndryshime nga ana tjetër. Të dy sistemet janë të shkëputura (të ndara) në mënyrë efektive nga kjo ndërfaqe.

Sistemet e mesazheve zakonisht përfshijnë një ndërmjetës midis dy sistemeve që ndërveprojnë për të shkëputur (ndarë) më tej dërguesin nga marrësi ose marrësit. Në këtë rast, sistemi i mesazheve i lejon dërguesit të dërgojë një mesazh pa e ditur se ku është marrësi, nëse është aktiv ose sa raste ka.

Le të shohim disa analogji për llojet e problemeve që zgjidh një sistem mesazhesh dhe të prezantojmë disa terma bazë.

Pikë-për-pikë

Aleksandra shkon në postë për t'i dërguar Adamit një paketë. Ajo shkon në dritare dhe i jep punonjësit pakon. Punonjësi merr pakon dhe i jep Aleksandrës një faturë. Adami nuk ka nevojë të jetë në shtëpi kur të dërgohet paketa. Alexandra është e bindur se paketa do t'i dorëzohet Adamit në një moment në të ardhmen dhe mund të vazhdojë të bëjë biznesin e saj. Më vonë, në një moment Adami merr një paketë.

Ky është një shembull i një modeli të mesazheve pikë-pikë. Zyra postare këtu vepron si një mekanizëm i shpërndarjes së parcelave, duke siguruar që çdo parcelë të dorëzohet një herë. Përdorimi i një zyre postare ndan aktin e dërgimit të një pakete nga dorëzimi i paketës.
Në sistemet klasike të mesazheve, modeli pikë-për-pikë zbatohet përmes radhë. Radha vepron si një buffer FIFO (i pari hyn, i pari del) që mund të abonohet nga një ose më shumë konsumatorë. Çdo mesazh dërgohet vetëm tek një nga konsumatorët e abonuar. Radhët zakonisht përpiqen të shpërndajnë mesazhe në mënyrë të drejtë midis konsumatorëve. Vetëm një konsumator do ta marrë këtë mesazh.

Termi "i qëndrueshëm" përdoret për radhët. Seriozitet është një veçori shërbimi që siguron që sistemi i mesazheve do të vazhdojë të dërgojë mesazhe në mungesë të pajtimtarëve aktivë derisa një konsumator të pajtohet në radhën për dërgimin e mesazhit.

Besueshmëria shpesh ngatërrohet me këmbëngulje dhe megjithëse të dy termat përdoren në mënyrë të ndërsjellë, ato shërbejnë për funksione të ndryshme. Qëndrueshmëria përcakton nëse sistemi i mesazheve shkruan një mesazh në një lloj ruajtjeje midis marrjes së tij dhe dërgimit te konsumatori. Mesazhet e dërguara në radhë mund të jenë ose jo të vazhdueshme.
Mesazhimi pikë-për-pikë përdoret kur rasti i përdorimit kërkon një veprim një herë në mesazh. Shembujt përfshijnë depozitimin e fondeve në një llogari ose plotësimin e një porosie dërgese. Ne do të diskutojmë më vonë pse sistemi i mesazheve nuk është në gjendje të ofrojë shpërndarjen një herë dhe pse radhët mund të ofrojnë në rastin më të mirë garancinë e dorëzimit te pakten nje here.

Botues-Abonent

Gabriella thërret numrin e konferencës. Ndërsa ajo është e lidhur me konferencën, ajo dëgjon gjithçka thotë folësi, së bashku me pjesën tjetër të pjesëmarrësve në thirrje. Kur ajo akordohet, asaj i mungon ajo që thuhet. Kur u rilidh, ajo vazhdon të dëgjojë se çfarë po thuhet.

Ky është një shembull i një modeli të mesazheve publikoj-pajtohem. Thirrja e konferencës vepron si një mekanizëm transmetimi. Personi që flet nuk i intereson sa njerëz janë aktualisht në telefon - sistemi siguron që kushdo që është i lidhur aktualisht do të dëgjojë atë që thuhet.
Në sistemet klasike të mesazheve, modeli i mesazheve publiko-subscribe zbatohet përmes temave. Tema ofron të njëjtën metodë transmetimi si mekanizmi i konferencave. Kur një mesazh dërgohet në një temë, ai shpërndahet për të gjithë përdoruesit e abonuar.

Temat janë zakonisht i pabesueshëm (jo i qëndrueshëm). Ashtu si një dëgjues që nuk mund të dëgjojë se çfarë thuhet në një telefonatë konferencë kur dëgjuesi shkëputet, abonentët e temës humbasin çdo mesazh që dërgohet ndërsa janë jashtë linje. Për këtë arsye, mund të themi se temat ofrojnë një garanci dorëzimi jo më shumë se një herë për çdo konsumator.

Mesazhet Publish-Subscribe zakonisht përdoren kur mesazhet janë të natyrës informative dhe humbja e një mesazhi nuk është veçanërisht e rëndësishme. Për shembull, një temë mund të transmetojë lexime të temperaturës nga një grup sensorësh një herë në sekondë. Një sistem që është i interesuar për temperaturën aktuale dhe që pajtohet në një temë nuk do të shqetësohet nëse i humbet një mesazh - një tjetër do të arrijë në të ardhmen e afërt.

modele hibride

Faqja e internetit e dyqanit vendos mesazhet e porosive në një "radhë mesazhesh". Konsumatori kryesor i këtyre mesazheve është sistemi ekzekutiv. Përveç kësaj, sistemi i auditimit duhet të ketë kopje të këtyre mesazheve të porosisë për gjurmim të mëvonshëm. Të dy sistemet nuk mund të lejojnë që mesazhet të kalojnë, edhe nëse vetë sistemet nuk janë të disponueshme për disa kohë. Faqja e internetit nuk duhet të jetë në dijeni të sistemeve të tjera.

Rastet e përdorimit shpesh kërkojnë një kombinim të modeleve të mesazheve publikim-pajtim dhe pikë-për-pikë, të tilla si kur sisteme të shumta kërkojnë një kopje të një mesazhi dhe si besueshmëria ashtu edhe këmbëngulja kërkohet për të parandaluar humbjen e mesazhit.

Këto raste kërkojnë një destinacion (një term i përgjithshëm për radhët dhe temat) që i shpërndan mesazhet në thelb si temë, në mënyrë që çdo mesazh të dërgohet në një sistem të veçantë të interesuar për ato mesazhe, por gjithashtu në të cilin secili sistem mund të përcaktojë disa konsumatorë që marrin mesazhe hyrëse. mesazhe, e cila është më shumë si një radhë. Lloji i leximit në këtë rast është një herë për çdo palë të interesuar. Këto destinacione hibride shpesh kërkojnë qëndrueshmëri, kështu që nëse një konsumator del jashtë linje, mesazhet që dërgohen në atë kohë merren pasi konsumatori të rilidhet.

Modelet hibride nuk janë të reja dhe mund të përdoren në shumicën e sistemeve të mesazheve, duke përfshirë edhe ActiveMQ (nëpërmjet destinacioneve virtuale ose të përbëra që kombinojnë temat dhe radhët) dhe Kafka (në mënyrë implicite, si një veti themelore e dizajnit të saj të destinacionit).

Tani që kemi një terminologji bazë dhe një kuptim se për çfarë mund të përdorim një sistem mesazhesh, le të zbresim në detaje.

Përkthimi u krye: tele.gg/middle_java

Pjesa e mëposhtme e përkthyer: Kapitulli 3. Kafka

Vazhdon…

Burimi: www.habr.com

Shto një koment