Begryp fan berjochtmakkers. Learje de meganika fan messaging mei ActiveMQ en Kafka. Haadstik 1

Hello everyone!

Ik begon in lyts boek te oersetten:
«Berjochtmakelaars begripe",
skriuwer: Jakub Korab, útjouwer: O'Reilly Media, Inc., datum fan publikaasje: juny 2017, ISBN: 9781492049296.

Ut de ynlieding ta it boek:
"... Dit boek sil jo leare hoe't jo tinke oer broker-messaging-systemen, twa populêre brokertechnologyen fergelykje en kontrastearje: Apache ActiveMQ en Apache Kafka. It sil de gebrûksgefallen en ûntwikkelingsstimulânsen beskriuwe dy't har ûntwikkelders liede ta heul ferskillende oanpakken op itselde gebiet - berjochten tusken systemen mei in tuskenlizzende broker. Wy sille dizze technologyen fan 'e grûn ôf besjen en de ynfloed fan ferskate ûntwerpkeuzes ûnderweis markearje. Jo krije in djip begryp fan beide produkten, in begryp fan hoe't se moatte en net moatte wurde brûkt, en in begryp fan wêr't jo nei moatte sykje as jo yn 'e takomst oare messagingtechnologyen beskôgje ... ”

Oant no ta oerset dielen:
Haadstik 1. Ynlieding
Haadstik 3. Kafka

Ik sil foltôge haadstikken pleatse sa't se oerset wurde.

HAADSTIK 1

Ynlieding

Systeem-oan-systeem-berjochten is ien fan 'e minst begrepen gebieten fan IT. As ûntwikkelder as arsjitekt binne jo miskien heul bekend mei ferskate kaders en databases. It is lykwols wierskynlik dat jo allinich in foarbygeane bekendheid hawwe mei hoe't broker-basearre messagingtechnologyen wurkje. As jo ​​​​dit fiele, meitsje jo gjin soargen, jo binne yn goed selskip.

Minsken hawwe typysk heul beheind kontakt mei de berjochtynfrastruktuer. Se ferbine faak mei in systeem makke in lange tiid lyn, of download in distribúsje fan it ynternet, ynstallearje it yn PROM en begjinne te skriuwen koade foar it. Nei it útfieren fan de ynfrastruktuer yn PROM kinne de resultaten mingd wurde: berjochten wurde ferlern troch mislearrings, ferstjoeren wurket net sa't jo ferwachte hawwe, of brokers "hingje" jo produsinten of stjoere gjin berjochten nei jo konsuminten.

Klinkt bekend?

In gewoan senario is wêr't jo messaging-koade foar it momint geweldich wurket. Oant it ophâldt mei wurkjen. Dizze perioade slûpt de wacht yn in falsk gefoel fan feiligens, wat liedt ta mear koade basearre op falske oertsjûgingen oer it fûnemintele gedrach fan 'e technology. As dingen ferkeard begjinne te gean, wurde jo konfrontearre mei in ûngemaklike wierheid: dat jo it ûnderlizzende gedrach fan it produkt net echt hawwe begrepen of de kompromissen dy't keazen binne troch de auteurs, lykas prestaasjes tsjin betrouberens, of transaksjonaliteit tsjin horizontale skalberens .

Sûnder in djip begryp fan hoe't makelders wurkje, meitsje minsken skynber ridlike útspraken oer har messagingsystemen, lykas:

  • It systeem sil nea ferlieze berjochten
  • Berjochten wurde sequentially ferwurke
  • It tafoegjen fan konsuminten sil it systeem rapper meitsje
  • Berjochten wurde mar ien kear besoarge

Spitigernôch binne guon fan dizze útspraken basearre op oannames dy't allinich jilde ûnder bepaalde omstannichheden, wylst oaren gewoan ferkeard binne.

Dit boek sil jo leare hoe't jo tinke oer broker-basearre messaging-systemen, twa populêre brokertechnologyen fergelykje en kontrastearje: Apache ActiveMQ en Apache Kafka. It sil de gebrûksgefallen en ûntwikkelingsstimulânsen beskriuwe dy't har ûntwikkelders liede ta heul ferskillende oanpakken op itselde gebiet - berjochten tusken systemen mei in tuskenlizzende broker. Wy sille dizze technologyen fan 'e grûn ôf besjen en de ynfloed fan ferskate ûntwerpkeuzes ûnderweis markearje. Jo krije in djip begryp fan beide produkten, in begryp fan hoe't se moatte en net moatte wurde brûkt, en in begryp fan wêr't jo nei moatte sykje as jo yn 'e takomst oare messagingtechnologyen beskôgje.

Foardat wy begjinne, litte wy de basis oergean.

Wat is in berjochtensysteem en wêrom is it nedich?

Om twa applikaasjes mei elkoar te kommunisearjen, moatte se earst in ynterface definiearje. It definiearjen fan dizze ynterface omfettet it selektearjen fan in ferfier of protokol, lykas HTTP, MQTT, of SMTP, en ûnderhanneljen oer de berjochtformaten dy't sille wurde útwiksele tusken de systemen. Dit kin in strang proses wêze, lykas it definiearjen fan in XML-skema mei easken foar berjochtladingkosten, of it kin folle minder formeel wêze, lykas in oerienkomst tusken twa ûntwikkelders dat in part fan it HTTP-fersyk de client-identifikaasje sil befetsje.

Salang't it formaat fan berjochten en de folchoarder wêryn't se ferstjoerd binne konsekwint binne tusken systemen, kinne se mei-inoar kommunisearje sûnder har soargen te meitsjen oer de ymplemintaasje fan it oare systeem. De ynterne eleminten fan dizze systemen, lykas de brûkte programmeartaal of ramt, kinne yn 'e rin fan' e tiid feroarje. Salang't it kontrakt sels hanthavene wurdt, kin de ynteraksje trochgean sûnder feroaringen fan 'e oare kant. De twa systemen wurde effektyf ûntkoppele (skieden) troch dizze ynterface.

Berjochtsystemen befetsje typysk in tuskenpersoan tusken twa systemen dy't ynteraksje om de stjoerder fierder te ûntkoppelen (skiede) fan 'e ûntfanger of ûntfangers. Yn dit gefal lit it berjochtensysteem de stjoerder in berjocht stjoere sûnder te witten wêr't de ûntfanger is, oft hy aktyf is, of hoefolle eksimplaren der binne.

Litte wy nei in pear analogyen sjen foar de soarten problemen dy't in messagingsysteem oplost en wat basisbegripen yntrodusearje.

Fan punt nei punt

Alexandra giet nei it postkantoar om Adam in pakket te stjoeren. Se giet nei it rút en jout de meiwurker it pakket. De meiwurker pakt it pakket op en jout Alexandra in kwitânsje. Adam hoecht net thús te wêzen as it pakket ferstjoerd wurdt. Alexandra is der wis fan dat it pakket op in stuit yn 'e takomst oan Adam sil wurde levere en kin trochgean mei har bedriuw. Letter op in stuit kriget Adam in pakket.

Dit is in foarbyld fan in messaging model fan punt nei punt. It postkantoar fungearret hjir as in pakket distribúsjemeganisme, en soarget derfoar dat elk pakket ien kear wurdt besoarge. It brûken fan in postkantoar skiedt de hanneling fan it ferstjoeren fan in pakket fan 'e levering fan it pakket.
Yn klassike messagingsystemen wurdt it punt-tot-punt-model troch ymplemintearre wachtrijen. De wachtrige fungearret as in FIFO (earst yn, earst út) buffer dat kin wurde ynskreaun troch ien of mear konsuminten. Elk berjocht wurdt allinich levere oan ien fan 'e ynskreaune konsuminten. Wachtrijen besykje typysk berjochten earlik te fersprieden ûnder konsuminten. Mar ien konsumint sil dit berjocht ûntfange.

De term "duorsum" wurdt tapast op wachtrijen. Reliabiliteit is in tsjinst eigendom dat soarget derfoar dat de berjochten systeem sil oanhâlde berjochten yn it ûntbrekken fan aktive abonnees oant in konsumint ynskriuwe op de wachtrige foar berjocht levering.

Betrouberens wurdt faak betize mei persistinsje en hoewol't de twa termen wurde brûkt trochinoar, se tsjinje ferskate funksjes. Persistinsje bepaalt oft it berjochtensysteem in berjocht skriuwt nei in soarte fan opslach tusken it ûntfangen en it ferstjoeren nei de konsumint. Berjochten dy't nei de wachtrige stjoerd wurde kinne of net persistent wêze.
Point-to-point messaging wurdt brûkt as it gebrûk gefal in ienmalige aksje op it berjocht fereasket. Foarbylden omfetsje it deponearje fan fûnsen op in akkount of it foltôgjen fan in leveringsopdracht. Wy sille letter beprate wêrom't it berjochtensysteem op himsels net yn steat is om ienmalige levering te leverjen en wêrom wachtrigen op syn bêst leveringsgarânsje kinne leverje op syn minst ien kear.

Publisher-Abonnee

Gabriella kiest it konferinsjenûmer. Wylst se ferbûn is mei de konferinsje, heart se alles wat de sprekker seit, tegearre mei de rest fan 'e opropdielnimmers. As se ôfstimt, mist se wat sein wurdt. As se opnij ferbûn is, bliuwt se harkje wat der sein wurdt.

Dit is in foarbyld fan in messaging model publisearje-abonnearje. Konferinsjerop fungearret as in útstjoermeganisme. De persoan dy't praat makket it net út hoefolle minsken op it stuit op 'e oprop binne - it systeem soarget derfoar dat elkenien dy't op it stuit ferbûn is, sil hearre wat der sein wurdt.
Yn klassike messagingsystemen wurdt it publisearje-abonnearje messaging-model troch ymplemintearre tops. Underwerp leveret deselde útstjoermetoade as it konferinsjemeganisme. As in berjocht nei in ûnderwerp stjoerd wurdt, wurdt it ferspraat foar alle ynskreaune brûkers.

Underwerpen binne meastal ûnbetrouber (net duorsum). Krekt as in harker dy't net kin hearre wat der sein wurdt op in konferinsjeoprop as de harker de ferbining losmakket, misse ûnderwerp-abonnees alle berjochten dy't ferstjoerd wurde wylst se offline binne. Om dizze reden kinne wy ​​​​sizze dat ûnderwerpen in leveringsgarânsje leverje net mear as ien kear foar elke konsumint.

Publisearje-abonnearje berjochten wurde typysk brûkt as de berjochten ynformatyf fan aard binne en it ferlies fan ien berjocht net bysûnder wichtich is. Bygelyks, in ûnderwerp kin ien kear per sekonde temperatuerlêzingen fan in groep sensors oerbringe. In systeem dat ynteressearre is yn 'e hjoeddeistige temperatuer en dat yntekenet op in ûnderwerp sil gjin soargen meitsje as it in berjocht mist - in oar komt yn 'e heine takomst.

hybride modellen

De webside fan 'e winkel pleatst bestellingsberjochten yn in "berjochtwachtrige." De wichtichste konsumint fan dizze berjochten is it útfierend systeem. Derneist moat it kontrôlesysteem kopyen hawwe fan dizze bestellingsberjochten foar folgjende folgjen. Beide systemen kinne net tastean berjochten trochjaan, sels as de systemen sels binne in skoft net beskikber. De webside moat net bewust wêze fan oare systemen.

Gebrûksgefallen fereaskje faaks in kombinaasje fan publisearje-abonnemint en punt-oan-punt messaging-modellen, lykas wannear't meardere systemen in kopy fan in berjocht fereaskje en sawol betrouberens as persistinsje nedich binne om berjochtferlies te foarkommen.

Dizze gefallen fereaskje in bestimming (in algemiene term foar wachtrigen en ûnderwerpen) dy't berjochten yn prinsipe as ûnderwerp ferspriedt, sadat elk berjocht stjoerd wurdt nei in apart systeem dat ynteressearre is yn dy berjochten, mar ek wêryn elk systeem ferskate konsuminten kin definiearje dy't ynkommende ûntfange berjochten, dat is mear as in wachtrige. It lêstype yn dit gefal is ien kear foar elke belanghawwende. Dizze hybride bestimmingen fereaskje faaks duorsumens, sadat as in konsumint offline giet, berjochten dy't op dat stuit ferstjoerd wurde wurde ûntfongen nei't de konsumint opnij ferbûn is.

Hybride modellen binne net nij en kinne brûkt wurde yn de measte messaging systemen, ynklusyf sawol ActiveMQ (fia firtuele of gearstalde bestimmingen dy't kombinearje ûnderwerpen en wachtrigen) en Kafka (ymplisyt, as in fûnemintele eigenskip fan syn bestimming design).

No't wy wat basisterminology hawwe en in begryp hawwe fan wêr't wy in berjochtensysteem foar kinne brûke, litte wy nei de details komme.

Dien oersetting: tele.gg/midden_java

It folgjende oersette diel: Haadstik 3. Kafka

Oanhâlde wurde ...

Boarne: www.habr.com

Add a comment