Përshëndetje të gjithëve!
Kam filluar përkthimin e një libri të vogël:
««,
autor: Jakub Korab, botues: O’Reilly Media, Inc., data e botimit: qershor 2017, ISBN: 9781492049296.
Nga hyrja në libër:
«… Ky libër do t'ju mësojë si të mendoni në lidhje me sistemet e shkëmbimit të mesazheve nëpërmjet brokerëve, duke krahasuar dhe kontrastuar dy teknologjitë e njohura të brokerëve: Apache ActiveMQ dhe Apache Kafka. Do të paraqiten shembuj përdorimi dhe motivet e zhvillimit që çuan zhvilluesit e tyre të përdorin qasje të ndryshme për të njëjtin fushë — shkëmbimi i mesazheve ndërmjet sistemeve me një broker ndërmjetës. Ne do t'i shqyrtojmë këto teknologji nga zero dhe do të nxjerrim në pah ndikimin e opsioneve të ndryshme të dizajnit gjatë këtij procesi. Ju do të merrni një kuptim të thellë të të dy produkteve, si duhen dhe si nuk duhen përdorur, dhe do të kuptoni se për çfarë duhet të jepni vëmendje kur shqyrtoni teknologji të tjera të shkëmbimit të mesazheve në të ardhmen. …»
Parte të përkthyera deri tani:
Do të publikoj kapitujt e përfunduar ndërsa përkthimi vazhdon.
KAPITULLI 1
Hyrje
Shkëmbimi i mesazheve ndërmjet sistemeve është një nga fushat më pak të kuptuara të IT-së. Si zhvillues ose arkitekt, mund të jeni të njohur mirë me framework-et dhe bazat e të dhënave të ndryshme. Sidoqoftë, është e mundur që keni vetëm një njohuri të sipërfaqshme se si funksionojnë teknologjitë e shkëmbimit të mesazheve të bazuara në brokerë. Nëse e ndjeni veten kështu, mos u shqetësoni, jeni në një kompani të mirë.
Njerëzit zakonisht kontaktuan me infrastrukturën e shkëmbimit të mesazheve në mënyrë shumë të kufizuar. Shpesh lidhen me një sistem të ndërtuar shumë kohë më parë, ose shkarkojnë një shpërndarje 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ë pasigurta: humbje mesazhesh në rast të defekteve, dërgimi funksionon ndryshe nga sa pritej, ose brokerët “pezojnë” prodhuesit tuaj ose nuk dërgojnë mesazhe te konsumatorët tuaj.
Të duket e njohur?
Një skenar i zakonshëm është kur kodi juaj i mesazheve funksionon shkëlqyeshëm, deri në një moment. Derisa të ndalojë së funksionuari. Ky periudhë gjumëson vigjilencën dhe krijon një ndjenjë të rremë sigurie, e cila çon në më shumë kod, i bazuar në koncepte të gabuara për sjelljen themelore të teknologjisë. Kur diçka fillon të shkojë keq, ju përballeni me të vërtetën e pakëndshme: që nuk e keni kuptuar vërtet sjelljen bazë të produktit ose kompromiset e bëra nga zhvilluesit, siç janë, përformanca përballë besueshmërisë, ose transaksionaliteti përballë shkallëzueshmërisë horizontale.
Pa një kuptim të thellë se si funksionojnë brokerët, njerëzit bëjnë pretendime që duken të arsyeshme për sistemet e tyre të mesazheve, të tilla si:
- Sistemi kurrë nuk do të humbasë mesazhe
- Mesazhet do të trajtohen në mënyrë të radhitur
- Shtimi i konsumatorëve do ta bëjë sistemin më të shpejtë
- Mesazhet do të dorëzohen vetëm një herë
Fatkeqësisht, disa nga këto pretendime bazohen në supozime që vlejnë vetëm nën rrethana të caktuara, ndërsa të tjera, thjesht janë të gabuara.
Kjo libër do t'ju mësojë të mendoni për sistemet e mesazheve të bazuara në brokerë, duke krahasuar dhe përballuar dy teknologjitë e njohura të brokerëve: Apache ActiveMQ dhe Apache Kafka. Aty do të përmenden shembujt si dhe motivet e zhvillimit që çuan në përdorimin e qasjeve të ndryshme për të njëjtën fushë — mesazhet e shkëmbyera midis sistemeve me një broker ndërmjetës. Ne do t'i shqyrtojmë këto teknologji nga zero dhe do të theksojmë ndikimin e mundësive të ndryshme të dizajnit gjatë këtij rrugëtimi. Do të merrni një kuptim të thellë të të dy produkteve, një kuptim se si duhet dhe nuk duhet të përdoren, dhe një kuptim se çfarë duhet përqendruar kur shqyrtoni teknologji të tjera mesazhesh në të ardhmen.
Para se të fillojmë, le të kalojmë në bazat.
Çfarë është një Sistem i Mesazheve dhe përse është i nevojshëm
Për të komunikuar, dy aplikacione duhet së pari të përcaktojnë një ndërfaqe. Përcaktimi i kësaj ndërfaqe përfshin zgjedhjen e transportit ose protokollit, të tillë si HTTP, MQTT ose SMTP dhe pajtimin për formatet e mesazheve që do të shkëmbehen sistemet. Kjo mund të jetë një proces i rreptë, si përcaktimi i një skema XML me kërkesat për ngarkesën e mesazhit, ose mund të jetë shumë më pak formale, si një marrëveshje mes dy zhvilluesve që një pjesë e caktuar e kërkesës HTTP do të përmbajë identifikuesin e klientit.
Sa kohë që formatet e mesazheve dhe rendi i dërgimit midis sistemeve janë të pajtueshme, ato do të jenë në gjendje të komunikojnë me njëra-tjetrën pa u ndjerë për implementimin e sistemit tjetër. Brendësia e këtyre sistemeve, si gjuha e programimit apo frameworku i përdorur, mund të ndryshojë me kalimin e kohës. Sa më gjatë që kontrata mbetet e vlefshme, ndërveprimi 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 zakonisht përfshijnë një ndërmjetës midis dy sistemeve që ndërveprojnë për të siguruar ndarjen e dërguesit nga marrësi ose marrësit. Në këtë mënyrë, sistemi i shkëmbimit të mesazheve mundëson dërguesit të dërgojë një mesazh pa qenë në dijeni se ku ndodhet marrësi, nëse ai është aktiv apo sa kopje të tij ekzistojnë.
Le të shqyrtojmë disa analogji që ilustrojnë llojet e problemeve që zgjidh sistemi i shkëmbimit të mesazheve, dhe të prezantojmë disa terma bazë.
Pika në Pikë
Aleksandra po shkon në postë për të dërguar një paketë për Adamin. Ajo iu afron sportelit dhe i dorëzon punonjësit paketën. Punonjësi merr paketën dhe i jep Aleksandrës një pranimin. Adami nuk ka nevojë të jetë në shtëpi në momentin e dërgimit të paketës. Aleksandra është e sigurt që paketa do t'i dorëzohet Adamit në një moment të ardhshëm dhe mund të vazhdojë me gjërat e saj. Më vonë, në një moment, Adami merr paketën.
Ky është një shembull i modelit të shkëmbimit të mesazheve pikë në pikë. Zyrat postare në këtë rast veprojnë si një mekanizëm shpërndarës për paketat, duke garantuar që çdo paketë do të dërgohet një herë. Përdorimi i zyrës postare ndan aktin e dërgimit të paketës nga dorëzimi i paketës.
В sisteme klasike të komunikimit, modeli "pikë-pikë" realizohet përmes rendit. Radhët funksionojnë si një bufer FIFO (i pari që hyri, i pari që doli), në të cilën një ose më shumë konsumatorë mund të abonohen. Çdo mesazh dorëzohet vetëm një nga konsumatorët e abonuara. Radhët shpesh përpiqen të shpërndajnë mesazhet në mënyrë të drejtë ndërmjet konsumatorëve. Vetëm një konsumator do të marrë këtë mesazh.
Termi "i besueshëm" ("durable") aplikohet për radhët. Besueshmëria — kjo është një karakteristikë e shërbimit që garanton se sistemi i komunikimit do të ruajë mesazhet në mungesë të abonentëve aktivë deri sa konsumatori të abonohesh në radhën për dorëzimin e mesazheve.
Besueshmëria shpesh ngatërrohet me persistencën dhe, ndonëse këto dy terma janë të ndërrueshëm, ato kryejnë funksione të ndryshme. Persistenca përcakton nëse një mesazh regjistrohet nga sistemi i komunikimit në një lloj ruajtjeje midis marrjes dhe dërgimit të tij konsumatorit. Mesazhet e dërguara në radhë mund të jenë ose të mos jenë të qëndrueshme.
Komunikimi i tipit "Pikë-pikë" përdoret kur varianti i përdorimit kërkon një veprim të vetëm me mesazhin. Një shembull mund të jetë futja e fondeve në një llogari ose ekzekutimi i një porosie për dorëzim. Ne do të diskutojmë më vonë pse sistemi i komunikimit vetë nuk është në gjendje të sigurojë dorëzim të vetëm dhe pse radhët mund, në të njëjtën kohë, të ofrojnë garanci dorëzimi të paktën një herë.
Botues-Subsriptor
Gabriela thërret numrin e konferencës. Ndërkohë që ajo është e lidhur në konferencë, 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ë thuhet. Pasi të lidhet përsëri, ajo vazhdon të dëgjojë se çfarë po thonë.
Ky është një shembull i modelit të shkëmbimit të mesazheve botim-nënshkrim. Konferenca shërben si një mekanizëm shpërndarës. Personi që flet nuk interesohet për numrin e njerëzve që janë aktualisht të lidhur me thirrjen — sistemi garanton që kushdo që lidhet në atë moment do të dëgjojë çfarë po thuhet.
Në sistemet klasike të komunikimit, modeli i komunikimit "botim-nënshkrim" realizohet përmes temaveTema ofron një mënyrë transmetimi të ngjashme me mekanizmin e konferencave. Kur një mesazh dërgohet në temë, ai shpërndahet tek të gjithë përdoruesit e nënshkruar.
Temat zakonisht nuk janë të besueshme (nondurable). Ashtu si një dëgjues që nuk dëgjon atë që thuhet në një konferencë, kur dëgjuesi del offline, abonen e temës humbasin çdo mesazh që dërgohet gjatë kohës që ato janë jashtë linje. Për këtë arsye, mund të thuhet se temat ofrojnë një garantim të dorëzimit jo më shumë se një herë për çdo konsumator.
Shkëmbimi i mesazheve të tipit "botim-abonim" zakonisht përdoret kur mesazhet kanë karakter informativ dhe humbja e një mesazhi nuk është shumë e rëndësishme. Për shembull, një temë mund të transmetojë leximet e temperaturës nga një grup sensorësh çdo sekondë. Njësia që është e interesuar për temperaturën aktuale dhe që është abonuar në temë, nuk do të shqetësohet nëse humbet një mesazh — një tjetër do të vijë së shpejti.
Modelet hibride
Faqja e internetit e dyqanit vendos mesazhet për porositë në "radhën e mesazheve". Konsumatori kryesor i këtyre mesazheve është sistemi ekzekutiv. Përveç kësaj, sistemi i auditimit duhet të ketë kopje të këtyre mesazheve për porositë për ndjekje të mëvonshme. Të dy sistemet nuk mund të humbin mesazhe, edhe nëse vetë sistemet janë të paqëndrueshme për një kohë të caktuar. Faqja e internetit nuk duhet të dijë për sistemet e tjera.
Skema e përdorimit shpesh kërkon kombinimin e modeleve të shkëmbimit të mesazheve "botim-abonim" dhe "pikë-pikë", për shembull, kur disa sisteme kërkojnë një kopje të mesazhit dhe për të parandaluar humbjen e mesazhit kërkohet si besueshmëria ashtu edhe qëndrueshmëria.
Në këto raste, kërkohet një destinacion (destination) (termi i përgjithshë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 për këto mesazhe, por gjithashtu ku çdo sistem mund të identifikojë disa konsumatorë që marrin mesazhet e ardhshme, që është më shumë si një radhë. Lloji i leximit në këtë rast është një herë për çdo palë të interesuarKëta adresatë hibridë shpesh kërkojnë qëndrueshmëri, kështu që, nëse konsumatori shkëputet, mesazhet që dërgohen në atë kohë pranohen pas rikonekimit të konsumatorit.
Modelet hibridë nuk janë të reja dhe mund të aplikohen në shumicën e sistemeve të shkëmbimit të mesazheve, duke përfshirë si ActiveMQ (nëpërmjet adresat virtuale ose të përbërë, që bashkojnë tema dhe radhë), ashtu edhe Kafka (implicit, si një pronësi themelore e dizajnit të adresat të saj).
Tani që kemi disa terminologji të bazuar dhe një kuptim se për çfarë mund të na nevojitet një sistem shkëmbimi mesazhesh, le të kalojmë në detaje.
Përkthimi u krye:
Pjesa tjetër e përkthyer:
To be continued...
Burimi: habr.com
