Pozdrav svima!
Započeo sam prevođenje male knjige:
««,
autor: Jakub Korab, izdavač: O’Reilly Media, Inc., datum izdanja: lipanj 2017, ISBN: 9781492049296.
Iz uvoda u knjigu:
«… Ova knjiga će vas naučiti razmišljati o sustavima razmjene poruka na posrednicima, uspoređujući i suprotstavljajući dvije popularne tehnologije posrednika: Apache ActiveMQ i Apache Kafka. Ovdje će se iznijeti primjeri korištenja i motivi razvoja koji su doveli do toga da su njihovi razvijači koristili potpuno različite pristupe istom području - razmjeni poruka između sustava s posrednikom. Proučit ćemo te tehnologije od nule i naglasiti utjecaj različitih opcija dizajna na tom putu. Steći ćete duboko razumijevanje oba proizvoda, shvaćanje kako ih koristiti, a kako ne koristiti, te razumijevanje na što obratiti pažnju prilikom razmatranja drugih tehnologija razmjene poruka u budućnosti. …»
Prevedeni dijelovi do sada:
Objavljivat ću završena poglavlja kako budem prevodio.
POGLAVLJE 1
Uvod
Međusistemska razmjena poruka je jedno od najmanje razumijevanih područja IT-a. Kao programer ili arhitekt, možete biti dobro upoznati s različitim okvirima i bazama podataka. Međutim, vrlo je vjerojatno da imate samo povremenu povezanost s načinom na koji rade tehnologije razmjene poruka zasnovane na posredniku. Ako se tako osjećate, ne brinite, niste sami.
Ljudi obično kontaktiraju s infrastrukturom razmjene poruka vrlo ograničeno. Često se povezuju sa sustavom koji je stvoren davno, ili preuzimaju distribuciju s interneta, instaliraju je u PROMu i počinju pisati kod za njega. Nakon pokretanja infrastrukture u PROMu, rezultati mogu biti nejasni: gubitak poruka tijekom kvarova, slanje ne funkcionira onako kako ste očekivali, ili posrednici "zaključavaju" vaše producere ili ne šalju poruke vašim potrošačima.
Zvuči poznato?
Uobičajena situacija je kada vaš kod za razmjenu poruka savršeno funkcionira, sve do trenutka kada prestane raditi. Ovaj period uspava budnost i stvara lažni osjećaj sigurnosti, što dovodi do još većeg koda temeljenog na pogrešnim pretpostavkama o temeljnim ponašanjima tehnologije. Kada nešto počne ići po zlu, suočavate se s neugodnom istinom: da zapravo niste razumjeli osnovno ponašanje proizvoda ili kompromisne odluke koje su autori donijeli, poput performansi naspram pouzdanosti, ili transakcijskog modela naspram horizontalne skalabilnosti.
Bez dubokog razumijevanja kako brokeri rade, ljudi donose naizgled razumne tvrdnje o njihovim sustavima za razmjenu poruka, poput:
- Sustav nikada neće izgubiti poruke
- Poruke će se obrađivati sekvencijalno
- Dodavanje potrošača učinit će sustav bržim
- Poruke će biti isporučene samo jednom
Nažalost, neke od ovih tvrdnji temelje se na pretpostavkama koje se odnose samo na određene okolnosti, dok su druge jednostavno netočne.
Ova knjiga će vas naučiti kako razmišljati o sustavima razmjene poruka temeljenim na brokerima, uspoređujući i kontrastirajući dvije popularne brokerske tehnologije: Apache ActiveMQ i Apache Kafka. Ovdje će biti predstavljeni primjeri korištenja i razvojni poticaji koji su doveli do toga da su njihovi autori koristili potpuno različite pristupe u istoj oblasti — razmjeni poruka između sustava s posredničkim brokerom. Istražit ćemo ove tehnologije od temelja i istaknuti utjecaj različitih dizajnerskih opcija na tom putu. Steći ćete duboko razumijevanje oba proizvoda, shvaćanje načina na koji ih treba i ne treba koristiti, kao i razumijevanje na što treba obratiti pozornost pri razmatranju drugih tehnologija razmjene poruka u budućnosti.
Prije nego što započnemo, prođimo kroz osnove.
Što je sustav razmjene poruka i zašto je potreban
Da bi se dvije aplikacije mogle međusobno komunicirati, prvo moraju odrediti sučelje. Definiranje tog sučelja uključuje odabir transporta ili protokola, poput HTTP-a, MQTT-a ili SMTP-a, te usuglašavanje formata poruka koje će sustavi razmjenjivati. To može biti strogi proces, poput definiranja XML sheme s zahtjevima za troškovima korisnog tereta (payload) poruke, ili može biti daleko manje formalno, na primjer, sporazum između dva programera da će određeni dio HTTP zahtjeva sadržavati identifikator klijenta.
Sve dok su format poruka i redoslijed njihovog slanja između sustava usuglašeni, oni će moći međusobno komunicirati, ne brinući se o implementaciji drugog sustava. Unutarnje komponente tih sustava, poput programskog jezika ili korištenog framework-a, mogu se tijekom vremena mijenjati. Sve dok se održava sam ugovor, komunikacija može nastaviti bez promjena s druge strane. Ova dva sustava su efektivno odvojena (razdvojena) ovim sučeljem.
Sustavi za razmjenu poruka obično predviđaju sudjelovanje posrednika između dvaju sustava koji međusobno komuniciraju radi dodatnog razdvajanja pošiljatelja od primatelja ili primatelja. U tom slučaju sustav razmjene poruka omogućuje pošiljatelju da pošalje poruku ne znajući gdje se primatelj nalazi, je li aktivan ili koliko ih ima instanci.
Razmotrite nekoliko analogija problema koje sustav razmjene poruka rješava, i uvedimo neke osnovne termine.
Točka do točke
Aleksandra ide na poštu kako bi poslala paket Adamu. Prilazi šalteru i predaje zaposleniku paket. Zaposlenik uzima paket i izdaje Aleksandri potvrdu. Adamu ne treba biti kod kuće u trenutku slanja paketa. Aleksandra je sigurna da će paket biti dostavljen Adamu u nekom trenutku u budućnosti i može nastaviti s vlastitim poslovima. Kasnije, u nekom trenutku, Adam prima paket.
Ovo je primjer modela razmjene poruka točka-točka. Pošta ovdje djeluje kao mehanizam za distribuciju paketa, osiguravajući da će svaki paket biti dostavljen jednom. Korištenje pošte odvaja čin slanja paketa od dostavljanja paketa.
U klasičnim sustavima razmjene poruka model „točka-točka“ ostvaruje se putem redova. Red djeluje kao FIFO (prvi ušao, prvi izašao) međuspremnik na koji se mogu pretplatiti jedan ili više potrošača. Svaka poruka se isporučuje samo jednom od pretplaćenih potrošača. Redovi obično nastoje pravedno raspodijeliti poruke među potrošačima. Samo jedan potrošač će primiti određenu poruku.
Na redove se primjenjuje termin „pouzdani“ („durable“). Pouzdanost je svojstvo usluge koje jamči da će sustav razmjene poruka zadržavati poruke u nedostatku aktivnih pretplatnika sve dok se potrošač ne pretplati na red za isporuku poruka.
Pouzdanost se često miješa s perzistencijom i, iako su ova dva pojma zamjenjiva, obavljaju različite funkcije. Perzistencija određuje zapisuje li sustav razmjene poruka poruku u neku vrstu pohrane između primanja i slanja potrošaču. Poruke poslane u red mogu biti ili ne moraju biti perzistentne.
Razmjena poruka tipa „točka-točka“ koristi se kada upotreba zahtijeva jednokratan postupak s porukom. Kao primjer, može se navesti uplata na račun ili izvršenje narudžbe za dostavu. Diskutirat ćemo kasnije zašto sustav razmjene poruka sam po sebi nije u stanju osigurati jednokratnu isporuku i zašto redovi mogu u najboljem slučaju osigurati jamstvo isporuke barem jedanput.
Objavitelj-Pretplatnik
Gabriela bira broj konferencije. Dok je povezana s konferencijom, čuje sve što govori govornik, zajedno s ostalim sudionicima poziva. Kada se isključi, propušta ono što je rečeno. Kada se ponovno poveže, nastavlja čuti što se govori.
Ovo je primjer modela razmjene poruka objava-pretplata. Konferencijska veza djeluje kao mehanizam za emitiranje. Govornik se ne brine o tome koliko ljudi je trenutno povezano s pozivom — sustav jamči da će svatko tko se trenutno poveže čuti što se govori.
U klasičnim sustavima razmjene poruka model razmjene poruka „objava-pretplata“ ostvaruje se putem temaTema pruža isti način emitiranja kao i mehanizam konferencijske povezanosti. Kada se poruka šalje u temu, raspoređuje se svim prijavljenim korisnicima..
Teme su obično nesigurne (nondurable). Kao i slušatelj koji ne čuje što se govori na konferencijskom pozivu kada se slušatelj isključi, pretplatnici teme propuštaju sve poruke koje se šalju dok su offline. Iz tog razloga se može reći da teme pružaju garanciju dostave ne više od jednom za svakog potrošača.
Model razmjene poruka tipa "objava - pretplata" obično se koristi kada su poruke informativnog karaktera, a gubitak jedne poruke nije posebno značajan. Na primjer, tema može prenijeti očitavanja temperature od grupe senzora jednom svake sekunde. Sustav koji je zainteresiran za trenutnu temperaturu i koji se pretplaćuje na temu neće se brinuti ako propusti poruku — druga će uskoro doći.
Hibridni modeli
Web stranica trgovine stavlja poruke o narudžbama u "red poruka". Glavni potrošač tih poruka je izvršna sustav. Osim toga, sustav revizije treba imati kopije tih poruka o narudžbama za naknadno praćenje. Oba sustava ne mogu propustiti poruke, čak i ako su sama sustava neko vrijeme nedostupna. Web stranica ne bi trebala znati o drugim sustavima.
Slučajevi upotrebe često zahtijevaju kombinaciju modela razmjene poruka "objava - pretplata" i "točka - točka", na primjer, kada nekoliko sustava treba kopiju poruke, i za sprječavanje gubitka poruke potrebna su i pouzdanost i postojanost.
U tim slučajevima potreban je odredišni (destination) (opći pojam za redove i teme) koji poruke raspoređuje uglavnom kao tema, tako da se svaka poruka šalje pojedinačnom sustavu zainteresiranom za te poruke, ali također i gdje svaki sustav može odrediti više potrošača koji primaju dolazne poruke, što više nalikuje redu. Tip čitanja u ovom slučaju je jednom za svaku zainteresiranu stranu.. Ovi hibridni adresati često zahtijevaju pouzdanost (durability), tako da, ako se potrošač isključi, poruke koje se šalju u to vrijeme primaju se nakon ponovnog povezivanja potrošača.
Hibridni modeli nisu novost i mogu se primijeniti u većini sustava razmjene poruka, uključujući ActiveMQ (putem virtualnih ili sastavljenih adresata koji kombiniraju topike i redove) i Kafka (neizravno, kao temeljna osobina dizajna njenog adresata).
Sada kada imamo neku osnovnu terminologiju i razumijevanje o čemu bi nam sustav razmjene poruka mogao koristiti, pređimo na detalje.
Prijevod je izvršen:
Sljedeći prevedeni dio:
Nastavak slijedi…
Izvor: habr.com
