Razumevanje posrednikov sporočil. Učenje mehanike sporočanja z ActiveMQ in Kafko. Poglavje 1

Pozdravljeni vsi!

Začel prevajati majhno knjigo:
«Razumevanje posrednikov sporočil«,
avtor: Jakub Korab, založba: O'Reilly Media, Inc., datum izida: junij 2017, ISBN: 9781492049296.

Iz uvoda v knjigo:
"... Ta knjiga vas bo naučila razmišljati o posredniških sistemih sporočanja s primerjavo in primerjavo dveh priljubljenih posredniških tehnologij: Apache ActiveMQ in Apache Kafka. Opisal bo primere uporabe in razvojne spodbude, ki so njihove razvijalce pripeljale do zelo različnih pristopov k istemu področju posredovanega sporočanja med sistemi. Te tehnologije si bomo ogledali od začetka in poudarili vpliv različnih oblikovalskih odločitev na poti. Poglobljeno boste razumeli oba izdelka, razumeli, kako ju je treba uporabljati in kako ne, ter razumeli, na kaj morate biti pozorni, ko boste v prihodnosti razmišljali o drugih tehnologijah sporočanja. ... "

Do sedaj prevedeni deli:
Poglavje 1 Uvod
3. poglavje. Kafka

Dokončana poglavja bom objavila, ko bodo prevedena.

POGLAVJE 1

Predstavitev

Medsistemsko sporočanje je eno najmanj razumljenih področij IT. Kot razvijalec ali arhitekt ste morda dobro seznanjeni z različnimi ogrodji in zbirkami podatkov. Vendar pa je verjetno, da imate le bežen vpogled v delovanje tehnologij sporočanja, ki temeljijo na posrednikih. Če se tako počutite, ne skrbite, ste v dobri družbi.

Ljudje imajo običajno zelo omejen stik z infrastrukturo za sporočanje. Pogosto se povežejo s sistemom, ki je bil ustvarjen že dolgo nazaj, ali prenesejo distribucijski komplet z interneta, ga namestijo v PROM in začnejo pisati kodo zanj. Po zagonu infrastrukture v PROM so rezultati lahko mešani: sporočila se izgubijo ob zrušitvah, pošiljanja ne delujejo, kot pričakujete, ali pa posredniki obesijo vaše proizvajalce ali ne pošljejo sporočil vašim potrošnikom.

Se sliši znano?

Pogost scenarij, ko vaša koda za sporočanje zaenkrat dobro deluje. Dokler ne preneha delovati. To obdobje uspava budnost in daje lažen občutek varnosti, kar vodi do še več kode, ki temelji na napačnih predstavah o temeljnem obnašanju tehnologije. Ko začnejo stvari iti narobe, se soočite z neprijetno resnico: da res niste razumeli osnovnega vedenja izdelka ali kompromisov, ki so jih izbrali avtorji, kot je zmogljivost proti robustnosti ali transakcijsko proti horizontalni razširljivost.

Brez globokega razumevanja delovanja posrednikov ljudje podajajo na videz razumne trditve o svojih sistemih za sporočanje, kot so:

  • Sistem ne bo nikoli izgubil sporočil
  • Sporočila bodo obdelana zaporedno
  • Z dodajanjem porabnikov bo sistem hitrejši
  • Sporočila bodo dostavljena samo enkrat

Na žalost nekatere od teh izjav temeljijo na predpostavkah, ki veljajo samo v določenih okoliščinah, medtem ko druge preprosto niso resnične.

Ta knjiga vas bo naučila sklepati o posredniških sistemih sporočanja s primerjavo in kontrastom dveh priljubljenih posredniških tehnologij: Apache ActiveMQ in Apache Kafka. Opisal bo primere uporabe in razvojne spodbude, ki so njihove razvijalce pripeljale do zelo različnih pristopov k istemu področju posredovanega sporočanja med sistemi. Te tehnologije si bomo ogledali od začetka in poudarili vpliv različnih oblikovalskih odločitev na poti. Poglobljeno boste razumeli oba izdelka, razumeli, kako ju je treba uporabljati in kako ne, ter razumeli, na kaj morate biti pozorni, ko boste v prihodnosti razmišljali o drugih tehnologijah sporočanja.

Preden začnemo, si oglejmo osnove.

Kaj je sistem sporočanja in zakaj je potreben

Da lahko dve aplikaciji komunicirata med seboj, morata najprej definirati vmesnik. Definicija tega vmesnika vključuje izbiro transporta ali protokola, kot je HTTP, MQTT ali SMTP, in pogajanje o formatih sporočil, ki si jih bosta izmenjala sistema. To je lahko strog postopek, kot je definiranje sheme XML z zahtevami glede stroškov koristnega tovora za sporočilo, ali pa je lahko veliko manj formalen, kot je dogovor med dvema razvijalcema, da bo del zahteve HTTP vseboval identifikator odjemalca.

Dokler sta oblika sporočil in vrstni red, v katerem so poslana, skladna med sistemi, bodo lahko komunicirali med seboj, ne da bi skrbeli za implementacijo drugega sistema. Notranjost teh sistemov, kot je uporabljeni programski jezik ali okvir, se lahko sčasoma spremeni. Dokler se ohrani sama pogodba, se lahko interakcija na drugi strani nadaljuje nespremenjena. Oba sistema sta s tem vmesnikom učinkovito ločena (ločena).

Sistemi za sporočanje običajno vključujejo posrednika med dvema sistemoma, ki medsebojno delujeta, da nadalje ločita (ločita) pošiljatelja od prejemnika ali prejemnikov. V tem primeru sistem sporočanja omogoča pošiljatelju, da pošlje sporočilo, ne da bi vedel, kje se prejemnik nahaja, ali je aktiven in koliko je njihovih primerkov.

Oglejmo si nekaj analogij za vrste težav, ki jih sistem za sporočanje rešuje, in predstavimo nekaj osnovnih izrazov.

Od točke do točke

Alexandra gre na pošto, da pošlje paket Adamu. Odide do okna in uslužbenki preda paket. Uslužbenec prevzame paket in da Alexandri potrdilo. Adamu ni treba biti doma, ko je paket poslan. Alexandra je prepričana, da bo paket dostavljen Adamu nekoč v prihodnosti in bo lahko nadaljevala s svojim poslom. Kasneje v nekem trenutku Adam prejme paket.

To je primer modela sporočanja od točke do točke. Pošta tukaj deluje kot mehanizem za distribucijo paketov, ki zagotavlja, da je vsak paket dostavljen enkrat. Uporaba pošte loči dejanje pošiljanja paketa od dostave paketa.
V klasičnih sporočilnih sistemih je model od točke do točke implementiran prek čakalne vrste. Čakalna vrsta deluje kot medpomnilnik FIFO (prvi vstopi, prvi ven), na katerega se lahko naroči eden ali več potrošnikov. Vsako sporočilo je dostavljeno samo eden od naročenih potrošnikov. Čakalne vrste običajno poskušajo pravično porazdeliti sporočila med potrošnike. Samo en potrošnik bo prejel to sporočilo.

Izraz "trajen" se uporablja za čakalne vrste. Zanesljivost je lastnost storitve, ki zagotavlja, da bo sistem za sporočanje hranil sporočila v odsotnosti aktivnih naročnikov, dokler se potrošnik ne naroči v čakalno vrsto za dostavo sporočil.

Zanesljivost se pogosto zamenjuje z vztrajnost in čeprav sta izraza zamenljiva, opravljata različne funkcije. Vztrajnost določa, ali je sporočilo med prejemom in pošiljanjem uporabniku zapisano v nekakšen prostor za shranjevanje. Sporočila, poslana v čakalno vrsto, so lahko obstojna ali pa tudi ne.
Sporočila od točke do točke se uporabljajo, ko primer uporabe zahteva eno samo dejanje za sporočilo. Primeri vključujejo polog sredstev na račun ali izpolnitev naročila za dostavo. Pozneje bomo razpravljali o tem, zakaj sistem za sporočanje sam po sebi ne more zagotoviti enkratne dostave in zakaj lahko čakalne vrste v najboljšem primeru zagotovijo garancijo za dostavo. vsaj enkrat.

Založnik-naročnik

Gabriella pokliče konferenčno številko. Ko je povezana s konferenco, sliši vse, kar govornik pove, skupaj z ostalimi udeleženci klica. Ko se onesvesti, pogreša povedano. Ko se ponovno poveže, še naprej sliši, kaj je bilo povedano.

To je primer modela sporočanja objavi-naroči. Konferenčni klic deluje kot mehanizem oddajanja. Osebi, ki govori, je vseeno, koliko ljudi je trenutno na klicu - sistem zagotavlja, da vsakdo, ki je trenutno povezan, sliši, kaj se govori.
V klasičnih sistemih za sporočanje je model sporočanja objava-naročnina implementiran prek vrhovi. Tema zagotavlja enako metodo oddajanja kot konferenčni mehanizem. Ko je sporočilo objavljeno v temi, se razdeli za vse naročene uporabnike.

Teme običajno nezanesljiv (netrajen). Tako kot poslušalec, ki ne more slišati, kaj se govori v konferenčnem klicu, ko poslušalec prekine povezavo, naročniki na temo zamudijo vsa sporočila, poslana, ko so brez povezave. Iz tega razloga lahko rečemo, da vrhovi zagotavljajo garancijo dostave. ne več kot enkrat za vsakega potrošnika.

Sporočila Objavi-Naroči se običajno uporabljajo, ko so sporočila informativne narave in izguba posameznega sporočila ni posebej pomembna. Na primer, tema lahko prenese odčitke temperature iz skupine senzorjev enkrat na sekundo. Sistem, ki ga zanima trenutna temperatura in je naročen na temo, ne bo skrbel, če bo zamudil sporočilo - drugo bo kmalu prišlo.

hibridni modeli

Spletno mesto trgovine postavi sporočila o naročilu v "čakalno vrsto sporočil". Glavni porabnik teh sporočil je izvršilni sistem. Poleg tega mora revizijski sistem imeti kopije teh naročilnih sporočil za kasnejše sledenje. Oba sistema ne moreta zgrešiti sporočil, tudi če sta sistema sama nekaj časa nedosegljiva. Spletna stran ne sme poznati drugih sistemov.

Primeri uporabe pogosto zahtevajo mešanico modelov objave-naročnine in sporočanja od točke do točke, na primer ko več sistemov potrebuje kopijo sporočila in sta za preprečitev izgube sporočila potrebni zanesljivost in obstojnost.

V teh primerih je potreben cilj (splošen izraz za čakalne vrste in teme), ki distribuira sporočila v bistvu kot tema, tako da je vsako sporočilo poslano v ločen sistem, ki ga ta sporočila zanimajo, vendar tudi v katerem lahko vsak sistem določi več potrošnikov ki prejemajo dohodna sporočila, kar je bolj podobno čakalni vrsti. Vrsta branja je v tem primeru − enkrat za vsakega deležnika. Ti hibridni cilji pogosto zahtevajo vzdržljivost, tako da, če potrošnik prekine povezavo, so sporočila, ki so poslana takrat, sprejeta, ko se potrošnik znova poveže.

Hibridni modeli niso novi in ​​jih je mogoče uporabiti za večino sistemov za sporočanje, vključno z ActiveMQ (prek navideznih ali sestavljenih ciljev, ki združujejo teme in čakalne vrste) in Kafko (implicitno kot temeljno lastnost zasnove ciljev).

Zdaj, ko imamo nekaj osnovne terminologije in razumemo, za kaj bi lahko bil sistem za sporočanje uporaben, se poglobimo v podrobnosti.

Prevod narejen: tele.gg/srednja_java

Naslednji prevedeni del: 3. poglavje. Kafka

Se nadaljuje ...

Vir: www.habr.com

Dodaj komentar