Fêmkirina brokerên peyamê. Fêrbûna mekanîka mesajê bi ActiveMQ û Kafka re. Beşa 1

Hemûyan re merheba!

Dest bi wergera pirtûkeke biçûk kir:
«Fêmkirina Brokerên Peyamê",
nivîskar: Jakub Korab, weşanxane: O'Reilly Media, Inc., dîroka weşanê: Hezîran 2017, ISBN: 9781492049296.

Ji pêşgotina pirtûkê:
"... Ev pirtûk dê fêrî we bike ka meriv çawa li ser pergalên şandina mesajên brokerkirî difikirin bi berhevkirin û berevajîkirina du teknolojiyên brokerkirinê yên populer: Apache ActiveMQ û Apache Kafka. Ew ê dozên karanînê û teşwîqên pêşkeftinê destnîşan bike ku rê li pêşdebirên wan vekiriye ku nêzîkatiyên pir cihêreng li heman qada mesajên brokerkirî yên di navbera pergalan de bigirin. Em ê ji serî ve li van teknolojiyên mêze bikin û di rê de bandora vebijarkên sêwiranê yên cihêreng ronî bikin. Hûn ê di derheqê her du hilberan de têgihiştinek kûr bistînin, têgihîştinek ka ew çawa divê û neyên bikar anîn, û têgihîştinek li ser tiştê ku dema ku di pêşerojê de teknolojiyên din ên peyamberdanê dihesibînin bala xwe bidin. ... "

Beşên ku heta niha hatine wergerandin:
Beşa 1 Destpêk
Beşa 3. Kafka

Ez ê beşên qedandî yên ku têne wergerandin bişînim.

BEŞA 1

Pîrozbahiyê

Mesajên Intersystem yek ji wan deverên herî kêm têne fêm kirin IT e. Wekî pêşdebir an mîmarek, dibe ku hûn bi çarçove û databasên cihêreng re pir nas bin. Lêbelê, îhtîmal e ku hûn tenê nihêrînek heye ka teknolojiyên mesajên-based broker çawa dixebitin. Heger tu wisa hîs dikî, xem neke, tu di nav şirketek baş de yî.

Mirov bi gelemperî bi binesaziya mesajê re têkiliyek pir tixûbdar e. Pir caran ew bi pergalek ku demek berê hatî afirandin ve girêdidin, an jî kîtek belavkirinê ji Înternetê dakêşin, wê di PROM-ê de saz bikin û ji bo wê dest bi nivîsandina kodê dikin. Piştî ku binesaziya di PROM-ê de xebitandin, encam dikarin tevlihev bibin: peyam di qezayan de winda dibin, şandin wekî ku hûn hêvî dikin naxebitin, an broker hilberînerên we darve dikin an jî peyaman ji xerîdarên we re naşînin.

Deng nas?

Senaryoyek hevpar ku koda weya peyamberê, heya niha, baş dixebite. Heta ku ew karê xwe rawestîne. Vê serdemê hişyariyê dişewitîne û hestek ewlehiyê ya derewîn dide, ku li ser bingeha ramanên derewîn ên di derbarê behremendiya bingehîn a teknolojiyê de hê bêtir kodê çêdike. Gava ku tişt dest pê dikin ku xelet diçin, hûn bi rastiyek nerehet re rû bi rû dimînin: ku we bi rastî ji tevgera bingehîn a hilberê, an bazirganiyên ku ji hêla nivîskaran ve hatine hilbijartin, wekî performansa li hember zexm, an danûstendinek li hember horizontal fam nekir. scalability.

Bêyî têgihiştinek kûr a ka broker çawa dixebitin, mirov di derbarê pergalên peyamberdana xwe de îdîayên maqûl ên xuya dikin, wek:

  • Pergal dê tu carî peyaman winda neke
  • Mesaj dê bi rêzê bêne pêvajo kirin
  • Zêdekirina xerîdar dê pergalê zûtir bike
  • Mesaj dê tenê carekê werin radest kirin

Mixabin, hin ji van gotinan li ser bingeha texmînên ku tenê di hin mercan de derbas dibin, hinên din bi tenê ne rast in.

Ev pirtûk dê fêrî we bike ka meriv çawa li ser pergalên şandina mesajên brokerkirî bi berawirdkirin û berevajîkirina du teknolojiyên brokerê yên populer: Apache ActiveMQ û Apache Kafka re difikirin. Ew ê dozên karanînê û teşwîqên pêşkeftinê destnîşan bike ku rê li pêşdebirên wan vekiriye ku nêzîkatiyên pir cihêreng li heman qada mesajên brokerkirî yên di navbera pergalan de bigirin. Em ê ji serî ve li van teknolojiyên mêze bikin û di rê de bandora vebijarkên sêwiranê yên cihêreng ronî bikin. Hûn ê di derheqê her du hilberan de têgihiştinek kûr bistînin, têgihîştinek ka ew çawa divê û neyên bikar anîn, û têgihîştinek li ser tiştê ku dema ku di pêşerojê de teknolojiyên din ên peyamberdanê dihesibînin bala xwe bidin.

Berî ku em dest pê bikin, em li ser bingehên bingehîn biçin.

Pergala mesajê çi ye û çima hewce ye

Ji bo ku du serîlêdan bi hevûdu re têkilî daynin, divê ew pêşî navgînek diyar bikin. Pênaseya vê navberê bijartina veguheztinê an protokolek wekî HTTP, MQTT, an SMTP, û danûstandina formatên peyamê yên ku pergal dê biguhezînin vedihewîne. Ev dibe ku pêvajoyek hişk be, wek mînak pênasekirina şemayek XML bi hewcedariyên lêçûnên bargiraniyê ji bo peyamekê, an jî ew dikare pir hindiktir fermî be, wek peymanek di navbera du pêşdebiran de ku beşek ji daxwazek HTTP dê nasnameyek xerîdar hebe. .

Heya ku formata peyaman û rêza şandina wan di navbera sîsteman de lihevhatî be, ew ê karibin bi hev re têkilî daynin bêyî ku xema pêkanîna pergala din bikin. Navxweyî ya van pergalan, wekî zimanê bernamekirinê an çarçoweya ku tê bikar anîn, dibe ku bi demê re biguhere. Heya ku peyman bixwe tê domandin, têkilî dikare li aliyê din bê guhertin berdewam bike. Du pergal bi vê navberê ve bi bandor têne veqetandin (ji hev veqetandin).

Pergalên mesajê bi gelemperî navbeynkarek di navbera du pergalan de vedihewîne ku ji bo ku şander ji wergir an wergiran bêtir veqetîne (ji hev veqetîne). Di vê rewşê de, pergala şandina peyamberê dihêle ku şander peyamek bişîne bêyî ku zanibe wergir li ku ye, gelo ew çalak e an çend mînakên wan e.

Ka em ji bo cûrbecûr pirsgirêkan ku pergalek mesajê çareser dike li du analojiyan binihêrin û hin şertên bingehîn destnîşan bikin.

xal bi xal

Alexandra diçe postexaneyê da ku pakêtek ji Adem re bişîne. Ew diçe ber pencereyê û pakêtê dide karmendê. Karmend pakêtê hildide û meqbûzê dide Alexandra. Dema ku pakêt tê şandin ne hewce ye ku Adem li malê be. Alexandra pê bawer e ku pakêt dê di demek pêşeroj de ji Adem re were radest kirin û dikare karê xwe bidomîne. Dûv re, di demekê de, Adem pakêtek distîne.

Ev mînakek modela peyamberê ye xal bi xal. Ofîsa postê li vir wekî mekanîzmayek belavkirina pakêtê tevdigere, ku her pakêt carekê tê radest kirin. Bikaranîna postexaneyê çalakiya şandina parselê ji radestkirina parselê vediqetîne.
Di pergalên mesajên klasîk de, modela xal-bi-xal bi navgîniyê ve tête bicîh kirin dorê. Rêz wekî tamponek FIFO (yekemîn hundur, yekem derket) ku yek an çend xerîdar dikarin bibin abone tevdigere. Her peyam tenê tê şandin yek ji serfkarên abonetiyê. Rêz bi gelemperî hewl didin ku peyaman bi dadwerî di nav xerîdaran de belav bikin. Tenê yek xerîdar dê vê peyamê bistîne.

Têgeha "dûrbar" li ser dorê tê sepandin. Ewlehiyê Taybetmendiyek karûbar e ku garantî dike ku pergala şandina peyaman dê di nebûna aboneyên çalak de peyaman bigire heya ku xerîdar bibe abonetiya rêza gihandina peyamê.

Pêbawerî pir caran bi tevlihev e li sersekinî û, her çend her du şert bi hev veguhezînin jî, ew fonksiyonên cûda pêk tînin. Persistence diyar dike ka peyamek ji hêla pergala peyamberê ve li cûreyek hilanînê di navbera wergirtina wê û şandina wê ji xerîdar re hatî nivîsandin. Peyamên ku ji rêzê re têne şandin dibe ku domdar bin an nebin.
Mesajên xal-bi-xal tê bikar anîn dema ku bûyerek bikar anînê li ser peyamek çalakiyek yekane hewce dike. Nimûne dravkirina drav li hesabek an pêkanîna fermanek radestkirinê heye. Em ê paşê nîqaş bikin ka çima pergalek mesajê bi serê xwe nekare radestkirina yek-carî peyda bike û çima dorên herî baş dikarin garantiyek radestkirinê peyda bikin. qet nebe carekê.

Weşanger-Abonetî

Gabriella jimareya konferansê dike. Dema ku ew bi konferansê ve girêdayî ye, ew her tiştê ku axaftvan dibêje, bi tevê beşdarên bangê re dibihîze. Dema ku ew reş dike, ew bêriya tiştê ku tê gotin dike. Dema ku ji nû ve tê girêdan, ew berdewam dike ku çi tê gotin dibihîze.

Ev mînakek modela peyamberê ye weşandin-bin abone. Banga konferansê wekî mekanîzmaya weşanê tevdigere. Kesê ku diaxive ferq nake ka çend kes niha li ser bangê ne - pergal piştrast dike ku her kesê ku niha girêdayî ye dê bibihîze ku çi tê gotin.
Di pergalên mesajê yên klasîk de, modela peyama weşandin-aboneyê bi rê ve tê bicîh kirin top. Mijarek heman rêbaza weşanê wekî mekanîzmaya konferansê peyda dike. Dema ku peyamek li ser mijarekê tê şandin, ew tê belav kirin ji bo hemî bikarhênerên abonetiyê.

Mijar bi gelemperî bêbawer (nelihev). Mîna guhdarek ku nikaribe bibihîse ku li ser bangek konferansê çi tê gotin, dema ku guhdar negirêdayî dibe, aboneyên mijarê her peyamên ku têne şandin dema ku ew negirêdayî ne ji bîr dikin. Ji ber vê yekê, em dikarin bibêjin ku top garantiya radestkirinê peyda dikin. ne ji carekê zêdetir ji bo her xerîdar.

Dema ku peyam di xwezaya xwe de agahdar in û windakirina peyamek yekane bi taybetî ne girîng e, mesajên Weşandin-Abone bi gelemperî tê bikar anîn. Mînakî, mijarek dikare xwendinên germahiyê ji komek sensoran di çirkekê de carekê bişîne. Pergalek ku bi germahiya heyî re eleqedar e û aboneyê mijarek be dê xeman nebe ger peyamek winda bike - dê di demek nêzîk de bigihîje.

modelên hybrid

Malpera firotgehê peyamên fermanê dixe nav "rêfa peyamê". Xerîdarê sereke yê van peyaman pergala rêvebirinê ye. Wekî din, pergala kontrolê divê kopiyên van peyamên fermanê ji bo şopandina paşîn hebe. Her du pergal nikarin peyaman ji bîr nekin, her çend pergal bixwe ji bo demekê ne berdest bin. Divê malper ji pergalên din hay nebe.

Bûyerên bikar anînê bi gelemperî pêdivî bi tevliheviyek ji modelên ragihandinê-weşandin-abonetî û xal-bi-xal heye, wek mînak dema ku pir pergalên hewceyê kopiyek peyamek in û hem pêbawerî û hem jî domdar hewce ne ku pêşî li windabûna peyamê bigirin.

Di van rewşan de, cîhek (termek giştî ji bo rêz û mijaran) hewce ye, ku peyaman bi bingehîn mîna mijarekê belav dike, da ku her peyam ji pergalek cihêreng re tê şandin ku bi van peyaman re eleqedar e, lê di heman demê de her pergalek dikare çend xerîdar diyar bike. ku peyamên hatinê distînin, ku bêtir mîna dorê ye. Cureyê xwendinê di vê rewşê de - ye carekê ji bo her beşdarekî. Van meqsedên hîbrîd bi gelemperî domdariyê hewce dikin da ku heke xerîdar jê qut bibe, peyamên ku di wê demê de têne şandin dema ku xerîdar ji nû ve tê girêdan têne pejirandin.

Modelên hîbrîd ne nû ne û dikarin li piraniya pergalên şandinê werin sepandin, di nav de hem ActiveMQ (bi navgîniya cîhên virtual an pêkhatî yên ku mijar û rêzan tevdigerin) hem jî Kafka (bi eşkere, wekî taybetmendiyek bingehîn a sêwirana mebesta wê).

Naha ku me hin termînolojiya bingehîn heye û têgihîştinek heye ku pergalek peyamberê dikare ji bo çi bikêr be, em werin nav hûrguliyan.

Werger kirin: tele.gg/middle_java

Beşa wergerî ya paşîn: Beşa 3. Kafka

Ez bêtir ji te hez dikim…

Source: www.habr.com

Add a comment