Að skilja skilaboðamiðlara. Að læra aflfræði skilaboða með ActiveMQ og Kafka. Kafli 1

Halló allir!

Byrjaði að þýða litla bók:
«Skilningur skilaboðamiðlara",
Höfundur: Jakub Korab, útgefandi: O'Reilly Media, Inc., útgáfudagur: júní 2017, ISBN: 9781492049296.

Úr inngangi bókarinnar:
"... Þessi bók mun kenna þér hvernig á að hugsa um miðlað skilaboðakerfi með því að bera saman tvær vinsælar miðlunartækni: Apache ActiveMQ og Apache Kafka. Það mun útlista notkunartilvik og þróunarhvata sem hafa leitt til þess að þróunaraðilar þeirra hafa tekið mjög mismunandi aðferðir á sama svæði miðlaðra skilaboða milli kerfa. Við munum skoða þessa tækni frá grunni og draga fram áhrif mismunandi hönnunarvals í leiðinni. Þú munt öðlast djúpan skilning á báðum vörum, skilning á því hvernig þær ættu að nota og ætti ekki að nota og skilning á því hvað á að varast þegar þú skoðar aðra skilaboðatækni í framtíðinni. ... “

Hlutar þýddir hingað til:
1. kafli Inngangur
Kafli 3. Kafka

Ég mun birta fullgerða kafla um leið og þeir eru þýddir.

1. KAFLI

Inngangur

Skilaboð á milli kerfa eru eitt af þeim sviðum upplýsingatækni sem minnst er skilið. Sem verktaki eða arkitekt gætirðu verið mjög kunnugur ýmsum ramma og gagnagrunnum. Hins vegar er líklegt að þú hafir aðeins innsýn í hvernig miðlaratengd skilaboðatækni virkar. Ef þér líður þannig skaltu ekki hafa áhyggjur, þú ert í góðum félagsskap.

Fólk hefur yfirleitt mjög takmarkað samband við skilaboðainnviðina. Oft tengjast þeir kerfi sem búið var til fyrir löngu, eða hlaða niður dreifingarsetti af netinu, setja það upp í PROM og byrja að skrifa kóða fyrir það. Eftir að hafa keyrt innviðina í PROM geta niðurstöðurnar verið blandaðar: skilaboð glatast við hrun, sendingar virka ekki eins og þú býst við eða miðlarar hengja framleiðendur þína eða senda ekki skilaboð til neytenda þinna.

Hljómar kunnuglega?

Algeng atburðarás þar sem skilaboðakóðinn þinn virkar vel í bili. Þangað til það hættir að virka. Þetta tímabil dregur úr árvekni og gefur falska öryggistilfinningu, sem leiðir til enn meiri kóða sem byggir á röngum hugmyndum um grundvallarhegðun tækninnar. Þegar hlutirnir fara að fara úrskeiðis stendur þú frammi fyrir óþægilegum sannleika: að þú skildir í raun ekki undirliggjandi hegðun vörunnar, eða málamiðlanir sem höfundarnir hafa valið, eins og frammistöðu á móti styrkleika, eða viðskipti á móti láréttum sveigjanleika.

Án djúps skilnings á því hvernig miðlarar vinna, gerir fólk að því er virðist sanngjarnar fullyrðingar um skilaboðakerfi sín, svo sem:

  • Kerfið mun aldrei missa skilaboð
  • Skilaboð verða unnin í röð
  • Að bæta við neytendum mun gera kerfið hraðvirkara
  • Skilaboð verða aðeins afhent einu sinni

Því miður eru sumar þessar fullyrðingar byggðar á forsendum sem eiga aðeins við undir ákveðnum kringumstæðum á meðan aðrar eru einfaldlega ekki sannar.

Þessi bók mun kenna þér hvernig á að rökræða um miðlunarboðakerfi með því að bera saman tvær vinsælar miðlaratækni: Apache ActiveMQ og Apache Kafka. Það mun gera grein fyrir notkunartilvikum og þróunarhvata sem hafa leitt til þess að þróunaraðilar þeirra hafa tekið mjög mismunandi aðferðir við sama svæði miðlaðra skilaboða milli kerfa. Við munum skoða þessa tækni frá grunni og draga fram áhrif mismunandi hönnunarvals í leiðinni. Þú munt öðlast djúpan skilning á báðum vörum, skilning á því hvernig þær ættu og ætti ekki að nota og skilning á því hvað á að varast þegar þú skoðar aðra skilaboðatækni í framtíðinni.

Áður en við byrjum skulum við fara yfir grunnatriðin.

Hvað er skilaboðakerfi og hvers vegna er þörf á því

Til þess að tvö forrit geti átt samskipti sín á milli verða þau fyrst að skilgreina viðmót. Skilgreiningin á þessu viðmóti felur í sér val á flutningi eða samskiptareglum eins og HTTP, MQTT eða SMTP, og samningaviðræður um skilaboðasnið sem kerfin munu skiptast á. Þetta getur verið strangt ferli, eins og að skilgreina XML skema með kröfum um hleðslukostnað fyrir skilaboð, eða það getur verið mun minna formlegt, eins og samkomulag milli tveggja þróunaraðila um að einhver hluti af HTTP beiðni innihaldi auðkenni viðskiptavinar. .

Svo lengi sem snið skilaboða og röð sem þau eru send í eru í samræmi milli kerfa munu þau geta átt samskipti sín á milli án þess að hafa áhyggjur af útfærslu hins kerfisins. Innri hluti þessara kerfa, eins og forritunarmálið eða ramminn sem notaður er, getur breyst með tímanum. Svo framarlega sem samningurinn sjálfur stendur við getur samspilið haldið áfram óbreytt hinum megin. Kerfin tvö eru í raun aftengd (aðskilin) ​​með þessu viðmóti.

Skilaboðakerfi fela venjulega í sér millilið milli tveggja kerfa sem hafa samskipti til að aftengja (aðskilja) sendanda frekar frá viðtakanda eða viðtakendum. Í þessu tilviki gerir skilaboðakerfið sendanda kleift að senda skilaboð án þess að vita hvar viðtakandinn er staðsettur, hvort hann sé virkur eða hversu mörg tilvik þeirra eru.

Við skulum skoða nokkrar hliðstæður fyrir hvers konar vandamál skilaboðakerfi leysir og kynnum nokkur grundvallarhugtök.

Point-to-point

Alexandra fer á pósthúsið til að senda pakka til Adam. Hún fer að glugganum og afhendir starfsmanninum pakkann. Starfsmaðurinn tekur upp pakkann og gefur Alexöndru kvittun. Adam þarf ekki að vera heima þegar pakkinn er sendur. Alexandra er þess fullviss að pakkinn verði afhentur Adam einhvern tíma í framtíðinni og geti haldið áfram að sinna sínum málum. Seinna, einhvern tíma, fær Adam pakka.

Þetta er dæmi um skilaboðalíkan lið til liðs. Pósthúsið hér virkar sem pakkadreifingarkerfi og tryggir að hver pakki sé afhentur einu sinni. Notkun pósthússins skilur að sendingu pakkans frá afhendingu pakkans.
Í klassískum skilaboðakerfum er punkt-til-punkt líkanið útfært í gegnum biðraðir. Biðröðin virkar sem FIFO (fyrst inn, fyrst út) biðminni sem einn eða fleiri neytendur geta gerst áskrifandi að. Hver skilaboð eru eingöngu afhent einn af neytendum í áskrift. Biðraðir reyna venjulega að dreifa skilaboðum á sanngjarnan hátt meðal neytenda. Aðeins einn neytandi mun fá þessi skilaboð.

Hugtakið "varanlegt" er notað um biðraðir. Áreiðanleiki er þjónustueiginleiki sem tryggir að skilaboðakerfið geymir skilaboð ef virkir áskrifendur eru ekki til staðar þar til neytandi gerist áskrifandi að sendingarröð skilaboða.

Oft er ruglað saman við áreiðanleika þrautseigju og þó að hugtökin tvö séu skiptanleg, gegna þau mismunandi hlutverkum. Þrautseigja ræður því hvort skilaboð eru skrifuð af skilaboðakerfinu í einhvers konar geymslu á milli móttöku og sendingar til neytenda. Skilaboð sem send eru í biðröðina geta verið viðvarandi eða ekki.
Skilaboð frá punkti til punkts eru notuð þegar notkunartilvik krefst einni aðgerð á skilaboðum. Sem dæmi má nefna að leggja inn á reikning eða uppfylla afhendingarpöntun. Við munum ræða síðar hvers vegna skilaboðakerfi í sjálfu sér er ófært um að veita einu sinni afhendingu og hvers vegna biðraðir geta í besta falli veitt afhendingarábyrgð. að minnsta kosti einu sinni.

Útgefandi-Áskrifandi

Gabriella hringir í ráðstefnunúmerið. Á meðan hún er tengd ráðstefnunni heyrir hún allt sem ræðumaðurinn segir ásamt öðrum þátttakendum símtalsins. Þegar hún svíður missir hún af því sem sagt er. Þegar hún tengist aftur heldur hún áfram að heyra hvað er verið að segja.

Þetta er dæmi um skilaboðalíkan birta-gerast áskrifandi. Símafundurinn virkar sem útsendingarkerfi. Sá sem talar er sama hversu margir eru í símtalinu núna - kerfið tryggir að allir sem eru í sambandi heyri hvað er sagt.
Í klassískum skilaboðakerfum er birtingar-áskrifandi skilaboðalíkanið útfært í gegnum boli. Efni veitir sömu útsendingaraðferð og ráðstefnukerfi. Þegar skilaboð eru sett inn á efni er þeim dreift fyrir alla notendur sem eru áskrifendur.

Umræðuefni venjulega óáreiðanlegur (óþolandi). Eins og hlustandi sem getur ekki heyrt hvað er sagt á símafundi, þegar hlustandinn fer án nettengingar, missa áskrifendur umræðuefnis af öllum skilaboðum sem eru send á meðan þeir eru án nettengingar. Af þessum sökum getum við sagt að topparnir veiti tryggingu fyrir afhendingu. ekki oftar en einu sinni fyrir hvern neytanda.

Publish-Subscribe skilaboð eru venjulega notuð þegar skilaboðin eru upplýsingaleg í eðli sínu og tap á einstökum skilaboðum er ekki sérstaklega verulegt. Til dæmis getur efni sent hitamælingar frá hópi skynjara einu sinni á sekúndu. Kerfi sem hefur áhuga á núverandi hitastigi og gerist áskrifandi að efni mun ekki hafa áhyggjur ef það missir af skilaboðum - annað kemur fljótlega.

hybrid módel

Heimasíða verslunarinnar setur pöntunarskilaboð í "skilaboða biðröð". Aðalneytandi þessara skilaboða er framkvæmdakerfið. Að auki ætti endurskoðunarkerfið að hafa afrit af þessum pöntunarskilaboðum til að rekja síðar. Bæði kerfin mega ekki missa af skilaboðum, jafnvel þótt kerfin sjálf séu ekki tiltæk í einhvern tíma. Vefsíðan ætti ekki að vera meðvituð um önnur kerfi.

Notkunartilvik krefjast oft blöndu af birtingar-áskrift og punktaskilaboðalíkönum, svo sem þegar mörg kerfi þurfa afrit af skilaboðum og bæði áreiðanleiki og þrautseigja þarf til að koma í veg fyrir að skeyti glatist.

Í þessum tilvikum þarf áfangastað (almennt hugtak fyrir biðraðir og efni) sem dreifir skilaboðum í grundvallaratriðum eins og efni, þannig að hvert skeyti er sent til sérstakt kerfi sem hefur áhuga á þessum skilaboðum, en einnig þar sem hvert kerfi getur skilgreint nokkra neytendur sem taka á móti skilaboðum, sem er meira eins og biðröð. Tegund lestrar í þessu tilfelli er - einu sinni fyrir hvern hagsmunaaðila. Þessir hybrid áfangastaðir krefjast oft endingar svo að ef neytandi aftengir sig eru skilaboð sem send eru á þeim tíma samþykkt þegar neytandi tengist aftur.

Hybrid líkön eru ekki ný og hægt að nota á flest skilaboðakerfa, þar á meðal bæði ActiveMQ (með sýndar- eða samsettum áfangastöðum sem sameina efni og biðraðir) og Kafka (óbeint, sem grundvallareiginleika áfangastaðarhönnunar).

Nú þegar við höfum grunnhugtök og skilning á því hvað skilaboðakerfi gæti verið gagnlegt fyrir, skulum fara í smáatriðin.

Þýðing lokið: tele.gg/middle_java

Næsti þýddur hluti: Kafli 3. Kafka

Til að halda áfram ...

Heimild: www.habr.com

Bæta við athugasemd