Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 2516|Atbildi: 0

RabbitMQ: kas izveidos rindu un apmaiņu

[Kopēt saiti]
Publicēts 03.05.2023 22:31:59 | | | |
Tulkojums

Ziņojumapmaiņa ir jebkuras izplatītas sistēmas būtiska sastāvdaļa. Tas ļauj ražotājam nosūtīt ziņojumu jebkuram skaitam patērētāju, un nav nepieciešams zināt nekādu informāciju par patērētāju. Tas ir lielisks palīgs patiesi asinhronai un atsaistītai komunikācijai.



Izmantojot RabbitMQ, iepriekš redzamā diagramma parāda ļoti vienkāršu, bet tipisku struktūru. Producents nosūta ziņojumu slēdzim. Saskaņā ar maršrutēšanas loģiku slēdzis ievieto ziņojumu rindā, kas saistīta ar slēdzi. Precīzāk, ja tas ir apraides tipa slēdzis, šī ziņojuma kopija tiks atkārtoti nosūtīta uz katru rindu. Pēc tam patērētājs var saņemt un apstrādāt ziņojumu.

Svarīgs pieņēmums, lai iepriekš minētā struktūra veiksmīgi darbotos ražotājiem un patērētājiem, ir tas, ka visi RabbitMQ komponenti (t.i., rindas, slēdži un saistījumi) ir jāizveido iepriekš. Patērētājs nevar nosūtīt ziņojumu slēdzim Ja slēdzis nepastāv, patērētājs nevar apstrādāt ziņojumus no rindas, kas nepastāv.

Tāpēc nav grūti saprast, ka, pirms ražotājs/patērētājs nosūta/saņem ziņojumu, ļaujiet ražotājam/patērētāja vērtībai izveidot rindu, pārslēgties un saistošas attiecības. Apskatīsim katra veida priekšrocības un trūkumus.

1. Atšķirt pienākumus



Attēlu tulkošana (1. Ražotājs izveido slēdzi, 2. Patērētājs izveido rindu un saista rindu ar slēdzi)

Lai ražotāji un patērētāji varētu pilnībā atdalīties, ideālā gadījumā ražotāji zina tikai informāciju par slēdzi (nevis rindu), un patērētāji zina tikai par rindu (nevis slēdzi). Saistīšanas relācija norāda relāciju starp slēdzi un rindu

Viens no iespējamiem veidiem ir likt ražotājam veikt slēdža izveidi, un patērētājs izveido rindu un saista rindu ar slēdzi. Šīs atsaistīšanas metodes priekšrocība ir tāda, ka, ja patērētājam ir nepieciešama rinda, vienkārši ir nepieciešams izveidot rindu un saistīt tos atbilstoši pieprasījumam, un ražotājam nav jāzina nekāda informācija par rindu. Taču tā nav pietiekama atsaistīšana: jo patērētājam ir jāzina slēdzis, lai to saistītu.

2. Producenti rada visu

Kad ražotājs darbojas, to var konfigurēt, lai izveidotu visus nepieciešamos komponentus (slēdžus, rindas un saistījumus). Šīs pieejas priekšrocība ir tā, ka ziņojumi netiek zaudēti (jo rinda jau ir izveidota un saistīta ar slēdzi, un nevienam patērētājam tas nav jāsāk vispirms).

Tomēr tas nozīmē, ka ražotājam ir jāzina visas rindas, kas jāpiesaista slēdzim. Tas ir ļoti saistīts veids. Iemesls ir tāds, ka katru reizi, kad jāpievieno jauna rinda, ražotājam ir jāpārkonfigurē un jāizvieto, lai izveidotu un saistītu rindas

3. Patērētāji rada visu

Pretēji ir ļaut patērētājam izveidot slēdžus, rindas un saistījumus, kas nepieciešami, kad tas darbojas. Tāpat kā iepriekšējā pieejā, šī metode rada savienošanu, jo patērētājam ir jāzina informācija par slēdzi, kas ir saistīts ar rindu. Jebkuras izmaiņas slēdžā (piemēram, pārdēvēšana) nozīmē, ka visi patērētāji ir jāpārkonfigurē un jāizvieto. Ja ir lielas rindas un patērētāji, šī sarežģītība var būt pārmērīga.

4. Neviens nerada neko

Pilnīgi atšķirīga pieeja nav ne ražotājam, ne patērētājam, lai radītu nepieciešamos komponentus. Tā vietā tas tiek izveidots, izmantojot administratora spraudņa lietotāja interfeisu vai administratora CLI iepriekš. Šī metode ir balstīta uz šādām priekšrocībām:

  • Ražotājus un patērētājus var pilnībā nošķirt. Ražotāji zina tikai apmaiņu, un patērētāji zina tikai rindu.
  • To var viegli skriptēt un automatizēt kā daļu no izvietošanas konveijera
  • Jebkuras izmaiņas, piemēram, jaunas rindas, var pievienot, nepieskaroties esošajiem izvietotajiem izdevējiem un patērētājiem


Kopsavilkuma

Izkliedētās sistēmās asinhronie ziņojumi ir noderīgs veids, kā atsaistīt, bet, lai tos atsaistītu, ir nepieciešams uzturēt efektīvu stratēģiju pamatā esošās ziņojumapmaiņas struktūras uzturēšanai (RabbitMQ tās ir rindas, slēdži un saites).

Lai gan izdevēju un patērētāju pakalpojumi var būt atbildīgi par to, kas viņiem nepieciešams, tie var būt dārgi sākotnējo ziņojumu zuduma, savienošanas un darbības uzturēšanas ziņā (konfigurācijas un izvietošanas ziņā).

Iespējams, labākais veids, kā rīkoties ar ziņojumapmaiņas sistēmas konfigurāciju, kur tā pieder: rakstīt skriptus ārpus lietojumprogrammas. Tas nodrošina, ka pakalpojumi paliek atsaistīti un ka rindu sistēma var dinamiski mainīties pēc vajadzības, neietekmējot lielu skaitu esošo pakalpojumu.

Sākotnējā:Hipersaites pieteikšanās ir redzama.
Oriģināls angļu valodā:Hipersaites pieteikšanās ir redzama.





Iepriekšējo:Ievads IParsable interfeisā, kas pievienots .NET 7
Nākamo:VSTO (IV) Aizpildiet attēlu Word dokumentā
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com