Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 3797|Odgovoriti: 0

Podrobna razlaga protokola AMQP

[Kopiraj povezavo]
Objavljeno na 14. 08. 2022 23:22:55 | | | |
Uvod v protokol AMQP

AMQP (Advanced Message Queuing Protocol) je standardni protokol na aplikacijski ravni, ki zagotavlja enotne storitve sporočanja in je odprt standard za protokole na aplikacijski ravni, zasnovane za vmesno programsko opremo, usmerjeno v sporočila. AMQP je omrežni protokol za prenos asinhronih sporočil med procesi.

Odjemalci in programska oprema za sporočila, ki temeljijo na tem protokolu, lahko prenašajo sporočila brez omejitev z različnimi odjemalskimi/vmesnimi programi, različnimi razvojnimi jeziki itd.

Glavne značilnosti AMQP so usmerjenost v sporočila, vrstne vrste, usmerjanje (vključno z vrstniki in objavo/naročnino), zanesljivost in varnost. AMQP uveljavlja vedenje ponudnikov sporočil in odjemalcev, kar omogoča resnično interoperabilnost med različnimi ponudniki.

AMQP in JMS

JMS je bil poskus standardizacije zgodnje programske opreme za sporočila, standardiziran je bil le na ravni API-ja in daleč od tega, da bi ustvaril interoperabilnost.

Za razliko od JMS je AMQP protokol na žični ravni, ki opisuje format podatkov, ki se prenašajo prek omrežja in tečejo v bajtih. Zaradi tega je vsako orodje, ki se drži tega podatkovnega formata in ustvarja ter interpretira sporočila, interoperabilno z drugimi združljivimi orodji.

Sestava jedra AMQP



Proizvajalec

Produkcijske novice.

ConnectionFactory

Tovarna, ki proizvaja Connection.

Povezava

Povezava, aplikacijska omrežna povezava z Broker TCP/IP/Triple Handshake in Quad Wave.

AMQP povezave so običajno dolge povezave. AMQP je protokol na aplikacijski plasti, ki uporablja TCP za zanesljivo dostavo. AMQP uporablja mehanizme avtentikacije in zagotavlja zaščito TLS (SSL). Ko aplikacija ne potrebuje več povezave na AMQP proxy, mora AMQP povezavo elegantno sprostiti, namesto da preprosto zapre TCP povezavo.

Kanal

Omrežni kanal je lahka povezava, zgrajena na vrhu povezave. Skoraj vse operacije se izvajajo v kanalih, ki so kanali za branje in pisanje sporočil, odjemalci pa lahko vzpostavijo pare za vsak kanal, od katerih vsak predstavlja nalogo seje.

Če povezavo primerjamo z optičnim vlaknom, potem se kanal Channel primerja z enim od vlaken v optičnem kablu. Na povezavi je mogoče ustvariti poljubno število kanalov.

Večina naših poslovnih operacij poteka v vmesniku Channel, vključno z:


  • queueDeclare
  • ExchangeDeclare za stikalo
  • queueBind queueBind
  • Objavi osnovno sporočiloObjavi
  • Potrošniške novicebasicConsume itd.



Posrednik

Sprejmite povezavo odjemalca za implementacijo AMQP entitetnih storitev, kot je rabbitmq.

VirtualHost (spletno gostovanje)

Virtualno gostovanje, ki se uporablja za logično izolacijo, lahko virtualni gostitelj ima več izmenjav in vrst, isti virtualni gostitelj pa ne more imeti izmenjav z istim imenom.

Za implementacijo več izoliranih okolij (uporabniki, uporabniške skupine, stikala, vrste itd.) na enem proxyju AMQP ponuja koncept virtualnih gostiteljev (virtualni gostitelji - vhosti). To je zelo podobno konceptu gostovanja spletnih strežnikov, ki zagotavlja popolnoma izolirano okolje za AMQP entitete. Ko je povezava vzpostavljena, AMQP odjemalec določi, kateri virtualni gostitelj uporabiti.

Zamenjati

Stikalo sprejema sporočila in pošilja sporočila v vezano vrsto glede na usmerjevalni ključ (brez možnosti shranjevanja sporočil).

Stikalo je entiteta AMQP, ki se uporablja za pošiljanje sporočil. Ko stikalo prejme sporočilo, ga usmeri v eno ali nič vrst. Algoritem usmerjanja, ki ga uporablja, je določen s tipom stikala in pravili vezave.

Vrsta stikala:


  • Neposredna izmenjava
  • Izmenjava Fanout
  • Izmenjava tem
  • Izmenjava glav



Lastnosti stikala:

  • Ime: Ime stikala
  • Vzdržljivost: Zastavica obstojnosti, ki označuje, ali je ta stikalo ohranjeno ali ne
  • Samodejno brisanje: Zastavica brisanja, kar označujeKo so vse vrste končane s to izmenjavo, ali so izbrisane
  • Argumenti: Odvisno od samega agenta


Status stikala:

  • Trajno
  • Prehodna


Vztrajna stikala bodo obstajala po ponovnem zagonu posrednika, medtem ko fazna stikala ne bodo (ta bo treba ponovno deklarirati, ko je posrednik ponovno na spletu).


Privzeto stikalo

Privzeta izmenjava je pravzaprav neposredna izmenjava, ki jo predhodno deklarira posrednik sporočil in nima imena (ime je prazen niz).

Privzeto stikalo si lahko predstavljate kot posebno stikalo, ki je neposredno priključeno.
Privzeto ime stikala: Ničelni niz (AMQP privzeto)
Privzeta vrsta stikala: Stikalo neposredno priključeno

Pri ustvarjanju vrste, dokler stikalo, ki ga je treba vezati, ni določeno, bo samodejno vezano na privzeto stikalo, ime usmerjevalnega ključa vezave pa bo enako imenu vrste.

Neposredna povezava s stikalom

Stikalo, ki je neposredno priključeno, dostavlja sporočila v vrsto ustreznih vezavnih ključev na podlagi usmerjevalnega ključa, ki ga sporočilo nosi. Unicast usmerjanje, ki ga uporablja neposredno stikalo za obdelavo sporočila.

Pri ustvarjanju čakalne vrste, če je vezana na neposredno stikalo, ni treba določiti imena usmerjevalnega ključa, saj bo imel privzeto ime usmerjevalnega ključa, ki je enako imenu Čakalne vrste.

Vrsta neposredno priključenih stikal običajno razporeja naloge več uporabnikom v zanki (temu pravimo polling).

Potek dela:


  • Pri vezavi vrste na stikalo ji dajte vezalni ključ, predpostavimo, da je R;
  • Ko je sporočilo s Usmerjevalnim ključem poslano neposredno priključenemu stikalu, ga stikalo usmeri v čakalno vrsto s Usmerjevalnim ključem.





Stikala za ventilatorje

Ventilatorsko stikalo usmerja sporočila v vse vrste, vezane nanj, ne glede na vezani usmerjevalni ključ.

Če je N vrst vezanih na sektorsko stikalo, ko je sporočilo poslano temu sektorskemu stikalu, stikalo pošlje kopijo sporočila vsem N vrstam ločeno. Ventilatorska stikala se običajno uporabljajo za usmerjanje sporočil med oddajanjem.




Scenariji uporabe:

oddajna sporočila;
Funkcija skupinskega klepeta.

Menjava teme

Preklop teme pošilja sporočila v eno ali več vrst glede na usmerjevalni ključ in vrsto izmenjave, pogosto pa ga uporabljamo za izvajanje različnih naročnin za objavljanje/naročanje, torej objavljanje.

Pravila usmerjanja za neposredno priključena stikala so strogo usklajena, kar pomeni, da mora usmerjevalni ključ pred pošiljanjem sporočila v čakalno vrsto ustrezati veznemu ključu.
Pravila usmerjanja pri preklapljanju tem so nejasna ujemanja, ki jih je mogoče doseči z zadovoljitvijo nekaterih pravil z divjimi kartami.

Določa:

  • V ključu za vezavo sta lahko dva posebna znaka * in # za zamegljeno ujemanje. kjer se * uporablja za ujemanje besede, #用于匹配多个单词 (lahko je nič)
  • Usmerjevalni ključ je niz z ločenimi pikami (vsak posamezen niz, ločen s piko in oznako, imenujemo beseda)





  • Ko producent pošlje sporočilo Usmerjevalni ključ=A.A.A., je zadovoljen le A.*.* in bo usmerjen le v čakalno vrsto 1.
  • Ko producent pošlje sporočilo, Usmerjevalni ključ=A.B.A, se zadovoljujoči A.*.* in *.B.* usmerjata v čakalno vrsto 1 in čakalno vrsto 2.
  • Ko producent pošlje sporočilo Usmerjevalni ključ=A.B.C, so A.*.* in *.B.* ter *.* zadovoljeni. C je usmerjen v čakalno vrsto 1, vrsto2, vrsto 3.


Scenariji uporabe:

  • novičarske posodobitve, ki vključujejo kategorije ali oznake;
  • Ozadna opravila, ki jih opravlja več delavcev, od katerih je vsak odgovoren za določene specifične naloge.



Glavno stikalo

Stikala za glave ne temeljijo na pravilih ujemanja ključa za usmerjanje za povezavo ključev za usmerjanje sporočil, temveč se ujemajo glede na atribut glave v vsebini poslanega sporočila.

Glavna stikala lahko obravnavamo kot še eno manifestacijo stikala z neposredno priključenostjo. Vendar mora biti usmerjevalni ključ direktnega stikala niz, vrednosti atributov glave pa niso omejene s tem, lahko so celo cela števila ali zgoščene vrednosti (slovarji) itd. Več prilagodljivosti (vendar v praksi redko uporabljamo stikala za glavo).

Potek dela:


  • Ko je vrsta vezana na stikalo glave, je več glav hkrati vezanih za ujemanje.
  • Dohodna sporočila nosijo glavo in parameter "x-match". Ko je "x-match" nastavljeno na "any", je mogoče ujeti katerokoli vrednost glave, in ko je "x-match" nastavljeno na "all", je treba ujeti vse vrednosti glave.



Povzetek menjave



Vez

Virtualna povezava med Exchange in Queue.

BindingKey je opis pravila za vezi Exchange in Queue. Vezalni ključ določa, kakšen usmerjevalni ključ bo dodeljen trenutno vezani vrsti v trenutni izmenjavi.

Usmerjevalni ključ

Pravila usmerjanja, s katerimi lahko virtualni stroj določi, kako usmeriti določeno sporočilo.

Vezalni ključ proti usmerjevalnemu ključu


  • Ključ za vezavo je ključ za vezavo med vrsto in stikalom;
  • Usmerjevalni ključ je podatek, ki ga producent pošlje stikalu;
  • Ko se ključ za vezivanje in usmerjevalni ključ ujemata, sporočilo postavite v ustrezno vrsto.



Vezalni ključ je opis pravila za vezava Exchange in vrstne vrste, ki se uporablja za analizo, ko Exchange prejme sporočilo; sporočilo, ki ga prejme Exchange, bo imelo polje za usmerjevalni ključ, Exchange pa ta usmerjevalni ključ poveže z vsemi vezavnimi ključi trenutne izmenjave, in če so zahteve izpolnjene, se pošlje v vezavnico Ključ je vezan na čakalno vrsto za pošiljanje sporočila.

Vezalni ključ proti usmerjevalni tipki v različnih stikalih


Privzeto stikalo: Vezalni ključ je ime vrste, ki ga ni mogoče prilagoditi. Usmerjevalni ključ je tudi ime vrste, preden ga je mogoče uspešno usmeriti v vrsto
Stikalo za neposredno povezavo: Vezalni ključ je ime čakalne vrste, ki jo je mogoče prilagoditi. Usmerjevalne ključe je mogoče uspešno usmeriti v čakalno vrsto le, če je ključ za vezavo enak
Stikalo ventilatorja: Brez povezave; Seveda ni ključa za usmerjanje. Samodejno usmerjeno v vse vrste, vezane na stikalo
Preklop teme: prilagojena tipka za vezavo; Prilagodite tipko za usmerjanje. Usmerjevalni ključ==Vezalni ključ, in zamegljeno ujemanje mora biti uspešno usmerjeno v čakalno vrsto
Glavno stikalo: brez tipke za vezavo; Seveda ni ključa za usmerjanje. Ujemanja na podlagi atributa glave v vsebini poslanega sporočila


Vrsta

Shranjuje sporočila, ki jih bo aplikacija kmalu porabila.

Lastnosti čakalne vrste:

  • Ime: Ime vrste
  • Vzdržljivo: Čakalna vrsta še vedno obstaja po ponovnem zagonu posrednika sporočil
  • Ekskluzivno: Uporablja ga le ena povezava, vrsta pa se izbriše, ko je povezava zaprta
  • Samodejno brisanje: Izbrisano, ko se zadnji uporabnik odjavi
  • Argumenti: Nekateri posredniki sporočil ga uporabljajo za dodatne funkcije, podobne TTL


Ustvarjanje vrste:
Vrste se lahko uporabljajo šele po tem, ko so razglasljene. Če vrsta še ne obstaja, jo razglasitev vrste ustvari. Če deklarirana vrsta že obstaja in so atributi enaki, deklaracija nima vpliva na izvirno vrsto. Če se atributi v deklaraciji razlikujejo od tistih v obstoječi vrsti, se vrže izjema na ravni kanala s kodo napake 406.

Obstojnost v vrsti:
Čakalna vrsta za obstojnost je shranjena na disku in tam ostane tudi ob ponovnem zagonu posrednika. Vrste, ki niso trajne, imenujemo prehodne vrste. Ne vsi scenariji in primeri zahtevajo obstojnost v vrsti.

Trajna čakalna vrsta ne pomeni, da so sporočila, usmerjena vanjo, trajna. Če agent sporočil prekine klic in se ponovno zažene, se čakalna vrsta za obstojnost ponovno prijavi med ponovnim zagonom, v vsakem primeru pa je mogoče obnoviti le trajna sporočila.

Potrošnik

Novice o potrošnji potrošnikov. V AMQP obstajata dva načina, kako lahko potrošniki prejmejo čakajoča sporočila:

Sporočilna vmesna programska oprema dostavlja sporočila potrošnikom (push API)
Potrošniki aktivno prejemajo sporočila (pull API)
Opomba: Ko več potrošnikov posluša isto vrsto, sporočila v vrsti porabi le eden od uporabnikov (ne enkrat za vsakega potrošnika)

Sporočilo

Podatki, ki se prenašajo med sporočili, storitvami in aplikacijami, sestavljajo lastnosti in telesa.

Atributi spreminjajo sporočila, kot so prioriteta sporočila, zakasnitev in druge napredne funkcije, glavno telo pa je vsebina telesa sporočila.

Lastnosti sporočila:

  • Vrsta vsebine
  • Kodiranje vsebine
  • Usmerjevalni ključ
  • Način dostave (vztrajen ali ne)
  • Način dostave (vztrajen ali neobstojen)
  • Prioriteta sporočil
  • Časovni žig objave sporočila
  • Rok trajanja
  • ID aplikacije založnika


Telo sporočila:
Poleg atributov AMQP sporočila vsebujejo tudi uporabno vsebino (podatke, ki jih sporočilo dejansko prenaša), ki jo AMQP proxy obravnava kot neprosojno polje bajtov.

Posrednik sporočil ne pregleduje ali spreminja vsebine. Sporočila lahko vsebujejo le atribute, ne da bi nosila vsebino. Običajno uporablja podatke v serializiranem formatu, kot je JSON, in da bi prihranili denar, protokolni medpomnilniki in MessagePacki serializirajo strukturirane podatke za objavo kot vsebino sporočil. AMQP in njegovi vrstniki običajno uporabljajo polja "tip vsebine" in "kodiranje vsebine" za komunikacijo s sporočili za identifikacijo uporabnih tovorov, vendar je to le na podlagi konvencij.

Vztrajnost sporočil:
Sporočila se objavljajo na vztrajen način, AMQP agent pa to sporočilo shrani na disk. Če se strežnik ponovno zažene, sistem potrdi, da prejeto sporočilo o obstojnosti ni izgubljeno.

Samo pošiljanje sporočila vztrajnemu stikalu ali usmerjanje v trajno čakalno vrsto ne pomeni, da je sporočilo trajno: obstojnost sporočila je povsem odvisna od načina obstojnosti samega sporočila.

Objavljanje sporočil na vztrajen način lahko vpliva na zmogljivost.

Delovni proces AMQP

Založnik objavi sporočilo preko borze.

Stikalo distribuira dohodna sporočila v vrsto, vezano na stikalo, v skladu s pravili usmerjanja.

Na koncu bo AMQP agent sporočilo posredoval potrošniku, ki se je naročil na to vrsto, ali pa ga bo potrošnik prejel sam, kot je potrebno.

AMQP mehanizem sporočanja

Potrditev sporočila

Uporabniki občasno ne obdelajo sporočil ali pa se včasih neposredno sesujejo. Tudi omrežni razlogi lahko povzročijo različne težave.
To nam postavlja vprašanje, kdaj je pravi čas, da agenti AMQP izbrišejo sporočila.

Dva načina potrditve sporočila v AMQP:

Način samodejne potrditve: Sporočilo izbrišite takoj, ko ga uporabniku pošlje vmesna programska oprema za sporočila. (Z uporabo metode AMQP: basic.deliver ali basic.get-ok)
Eksplicitni način potrditve: Počakajte, da potrošnik pošlje potrditev, preden izbrišete sporočilo. (Z uporabo AMQP metode: basic.ack)
Če potrošnik prekine slušalko, ne da bi poslal potrdilo, agent AMQP ponovno posreduje sporočilo drugemu potrošniku. Če takrat ni na voljo nobenih potrošnikov, posrednik sporočil počaka, da se naslednji potrošnik registrira v tej vrsti, nato pa poskuša ponovno dostaviti.

Zavrni sporočila

Ko potrošnik prejme sporočilo, lahko postopek obdelave uspe ali spodleti. Uporabnik lahko posredniku sporočil (sporočilni vmesni programski opremi) sporoči, da sporočilo ni bilo obdelano (ali se v tem trenutku ni dokončalo) zaradi "zavrnjenega sporočila".
Ko je sporočilo zavrnjeno, lahko potrošnik posredujelcu sporočil naroči, kaj naj stori s sporočilom – ga uniči ali vrne v čakalno vrsto.

Ko je v tej vrsti le en uporabnik, poskrbite, da sporočila ne zavrnete in ga izberete nazaj v vrsto, kar povzroči, da se sporočilo neskončno ponavlja na istem uporabniku.

V AMQP se uporablja metoda basic.reject za izvedbo operacije zavračanja sporočil. Vendar pa ima basic.reject omejitev: ne morete ga uporabiti za zavračanje več sporočil s potrditvijo. Če pa uporabljate RabbitMQ, lahko uporabite AMQP razširitev 0-9-1, imenovano negativne potrditve (imenovane tudi nacks), da rešite ta problem.


Izvirno:Prijava do hiperpovezave je vidna.





Prejšnji:JS polja so razlika in uporaba vseh in nekaterih
Naslednji:Podrobna razlaga arhitekture sporočil RabbitMQ AMQP
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com