CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Exchange - iomlaidear no puing iomlaid. Tha teachdaireachdan air an cur thuige. Exchange a 'sgaoileadh an teachdaireachd ann an aon no barrachd ciudha. Tha e slighean teachdaireachdan gu ciudha stèidhichte air ceanglaichean cruthaichte (bindings) eadar e agus an ciudha.

Exchange nach eil Pròiseas Erlang. Airson adhbharan scalability exchange na shreang (ceangal ris a’ mhodal leis a’ chòd far a bheil an loidsig slighe suidhichte) anns an stòr-dàta togte mnesia. Cha bhith 1 mìle neach-iomlaid ag ithe ach 1MB de chuimhne.

Clàr-innse

  • CoineanachMQ. Pàirt 1. Ro-ràdh. Erlang, AMQP agus RPC
  • CoineanachMQ. Pàirt 2. Tuigse iomlaidean
  • CoineanachMQ. Pàirt 3. Tuigsinn ciudha agus ceanglachan
  • CoineanachMQ. Pàirt 4. Dèiligeadh ri dè tha teachdaireachdan agus frèamaichean
  • CoineanachMQ. Pàirt 5: Foillseachadh Teachdaireachd agus Coileanadh Consumtion
  • CoineanachMQ. Pàirt 6. Sealladh farsaing air a 'Chaidreachas agus Modalan Sluasaid
  • CoineanachMQ. Pàirt 7. Mion-fhiosrachadh mu Ceangal agus Chanel
  • CoineanachMQ. Pàirt 8. RabbitMQ ann an .NET
  • CoineanachMQ. Pàirt 9. Sgrùdadh

Malairt dhìreach

Direct exchange - air a chleachdadh nuair a bhios feum air lìbhrigeadh teachdaireachd gu ciudha sònraichte. Tha an teachdaireachd fhoillseachadh don iomlaidear le sònraichte iuchair seòlaidh agus a’ faighinn a-steach do gach ciudha a tha co-cheangailte ris an iomlaidear seo le iuchair slighe coltach ris. Is e sreang an iuchair slighe. Thathas a’ dèanamh co-chòrdadh le bhith a’ cleachdadh a’ cumail sùil air sreangan airson co-ionannachd.

Riochdachadh grafaigeach de shruth na teachdaireachd:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

В rabbitmq tha bun-bheachd ann default exchanger. Tha seo a ' direct exchange gun ainm. Ma thèid an iomlaidear bunaiteach a chleachdadh, thèid an teachdaireachd a chuir gu ciudha le ainm co-ionann ri iuchair slighe teachdaireachd.

Malairt cuspairean

Topic exchange - coltach direct exchange a’ comasachadh slighe roghnach le bhith a’ dèanamh coimeas eadar an iuchair slighe. Ach, anns a 'chùis seo, tha an iuchair air a thoirt seachad le teamplaid. Nuair a chruthaicheas tu teamplaid, cleachd 0 no barrachd fhaclan (litrichean AZ и az agus àireamhan 0-9), air a sgaradh le dot, a bharrachd air samhlaidhean * и #.

  • * - faodar a chuir na àite gu dìreach 1 am facal
  • # - faodar a chur na àite 0 no barrachd fhaclan

Riochdachadh grafaigeach de shruth na teachdaireachd:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

A 'tòiseachadh bhon tionndadh RabbitMQ 2.4.0 Algorithm stiùireadh airson topic exchange thòisich e ag obair gus 145 amannan nas luaithe. Choilean iad seo le bhith a’ cur an dòigh-obrach an gnìomh trie buileachadh, a tha a 'ciallachadh riochdachadh teamplaidean mar structar craoibhe. Mar eisimpleir templates a.b.c, a.*.b.c, a.#.c и b.b.c air a riochdachadh leis an structar a leanas:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Thathas a’ sgrùdadh maidseadh pàtrain a’ tòiseachadh bhon fhreumh agus a’ dol bho mhullach gu bonn.

Feartan:

  • faodaidh cleachdadh an iomlaidear seo a thighinn gu bhith deagh roghainn airson leasachadh app san àm ri teachd, oir faodar teamplaidean a ghnàthachadh an-còmhnaidh gus am bi an teachdaireachd air fhoillseachadh san aon dòigh direct exchange no fanout exchange
  • teamplaidean a chleachdas * fada nas luaithena teamplaidean a chleachdas #.
  • topic exchange nas slaodaiche direct exchange

Malairt Fanout

Fanout exchange - tha a h-uile teachdaireachd air a lìbhrigeadh chun a h-uile ciudha eadhon ged a tha iuchair slighe air a shònrachadh san teachdaireachd.

Feartan:

  • RabbitMQ chan eil e ag obair le iuchraichean slighe agus teamplaidean aig a bheil deagh bhuaidh air coileanadh. Is e seo an rud as luaithe exchange;
  • feumaidh a h-uile neach-cleachdaidh a bhith comasach air a h-uile teachdaireachd a phròiseasadh;

Riochdachadh grafaigeach de shruth na teachdaireachd:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Malairt cinn-cinn

Headers exchange - a’ stiùireadh teachdaireachdan gu ciudha co-cheangailte stèidhichte air coimeas de chàraidean de thogalaichean (iuchrach, luach). headers ceangaltach agus seilbh teachdaireachd coltach ris. headers a Dictionary<ключ, значение>.

Ma chuireas tu iuchair shònraichte ris an fhaclair x-match le brìgh any, an uairsin tha an teachdaireachd air a stiùireadh ma tha na paidhrichean (iuchair, luach) a 'maidseadh gu ìre. Tha an giùlan seo coltach ris a 'ghnìomhaiche or.

var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");

Iuchrach bunaiteach x-match tha luach ann all. Tha seo a 'ciallachadh gu bheil an teachdaireachd air a stiùireadh nuair a tha na paidhrichean (iuchair, luach) a' maidseadh gu tur. Tha an giùlan seo coltach ris a 'ghnìomhaiche and.

Riochdachadh grafaigeach de shruth na teachdaireachd:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Feartan:

  • sùbailteachd a bharrachd
  • cosgais àireamhachaidh a bharrachd. A h-uile paidhir (iuchair, luach) den fheart headers feumar a sheòrsachadh a rèir prìomh ainm mus obraich thu a-mach luachan slighe teachdaireachd. Nas slaodaiche na seòrsaichean iomlaid eile.

Co-chòrdail Hashing Exchange

Tha seo a 'iomlaidear Dèan ceangal и nach deach a thogail a-steach в RabbitMQ.

Consistent-hashing exchange (iomlaid hash-consistent) - air a chleachdadh nuair a tha grunn ciudhaichean ann a dh’ fhaodadh a bhith a ’faighinn teachdaireachd agus nuair a dh’ fheumas tu cothromachadh a luchdachadh eatorra. Tha an teachdaireachd co-cheangailte ris a’ chiudha a rèir cuideam (luach sreang cumhach bho 0 - n).

Cuideam co-ionann ciudha - a’ comharrachadh gum faigh gach ciudha timcheall air an aon uiread teachdaireachdan (cha tèid gach teachdaireachd a chuir ann an aon ciudha a-mhàin). Chan eil gealltanas iomlan ann gun tèid teachdaireachdan a sgaoileadh gu cothromach.

Riochdachadh grafaigeach de shruth na teachdaireachd:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Hash air a thomhas stèidhichte air iuchair slighe no seilbh headers brathan. Nam biodh iuchraichean slighe eadar-dhealaichte aig a h-uile teachdaireachd foillsichte, no headers, an uairsin bidh an cuairteachadh a 'tachairt le cuideam. Mur eil, thèid an iuchair slighe a chleachdadh, no headers.

Bu chòir dha cuideachadh nuair a dh’ fheumas gluasad luchd-cleachdaidh fàs nas àirde na fuasgladh le grunn luchd-ceannach a’ cleachdadh an aon ciudha.

Cothlamadh de luchd-iomlaid (E2E)

Faodar giùlan a h-uile exchangers a chur còmhla a 'cleachdadh conaltradh Malairt-gu-iomlaid (Chan eil measgachadh de luchd-iomlaid air a ghabhail a-steach san t-sònrachadh AMQP. Is e leudachadh protocol a tha seo bhon taobh RabbitMQ).

Riochdachadh grafaigeach de shruth na teachdaireachd:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Aig cosgais E2E gheibh sinn an rèiteachadh scalable ceart a choinnicheas ri riatanasan làithreach agus fàsmhor.

Cruthaich Exchange

Tha an iomlaidear a chruthachadh a 'cleachdadh synchronous RPC iarrtas dhan fhrithealaiche. Tha an t-iarrtas air a dhèanamh a 'cleachdadh an dòigh Exchange.Declare, air a ghairm le paramadairean:

  • ainm an neach-iomlaid
  • seòrsa iomlaidear
  • roghainnean eile

Eisimpleir cruthachaidh exchange le cuideachadh RabbitMQ.Client:

//...
channel.ExchangeDeclare(
    exchange: "my_exchange",
    type: "direct",
    durable: "false",
    autoDelete: "false",
    arguments: null
);
//...

  • exchange - ainm an iomlaidear a tha sinn airson a chruthachadh. Feumaidh an t-ainm a bhith gun samhail
  • type - seòrsa de iomlaidear
  • durable - ma tha e air a stàladh true, an uairsin exchange bidh maireannach. Thèid a stòradh air diosc agus bidh e comasach dha a bhith beò ann an ath-thòiseachadh frithealaiche / broker. Ma tha an luach false, an uairsin exchange sealach agus thèid a thoirt air falbh nuair a thèid am frithealaiche / broker ath-thòiseachadh
  • autoDelete - cuir às gu fèin-ghluasadach. Exchange thèid a sguabadh às nuair a thèid a h-uile ciudha co-cheangailte a dhubhadh às
  • arguments nan argamaidean roghainneil. Mar as trice, tro na h-argamaidean a chaidh a shuidheachadh alternative exchange (iomlaidear eile). Mura h-urrainn do theachdaireachd a dhol tron ​​​​t-slighe thùsail, faodar a chuir gu iomlaid eile gus a dhol air slighe eile.

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Ma tha cruthachadh exchange 's dòcha, an uairsin cuiridh am frithealaiche sioncronach chun neach-dèiligidh RPC freagairt Exchange.DeclareOk. Ma tha cruthachadh neo-dhligheach (chaidh an t-iarrtas a dhiùltadh Exchange.Declare) an uairsin dùinidh an sianal frithealaiche a’ cleachdadh àithne asyncronach Channel.Close agus gheibh an neach-dèiligidh eisgeachd Operation InterruptedException, anns am bi an còd mearachd agus an tuairisgeul aige.

Feumar iomlaidear a chruthachadh mus tèid a phostadh. Ma dh’fhoillsicheas tu teachdaireachd gu neach-iomlaid nach eil ann - RabbitMQ thoir air falbh e gu sàmhach.

Cruthaich Exchange GUI

Rach don phannal rianachd RabbitMQ fo chleachdaiche guest (ainm-cleachdaidh: guest agus facal-faire: guest). Thoir an aire gu bheil an neach-cleachdaidh guest chan urrainn ach ceangal bho localhost. A-nis rachamaid chun an taba Exchanges agus cliog air Add a new exchange. Lìon a-steach na feartan:

CoineanachMQ. Pàirt 2. Tuigse iomlaidean

Chaidh a’ mhòr-chuid de na togalaichean a mhìneachadh gu h-àrd. An seo tha sinn a 'toirt fa-near ma tha sinn a' suidheachadh Internal, an uairsin chan urrainnear an iomlaid a chleachdadh ach airson E2E. Producer cha bhith e comasach dhaibh teachdaireachdan a chuir gu iomlaid mar sin.

co-dhùnadh

Nuair a bhios tu a’ leasachadh siostam, tha e goireasach cunntas a thoirt air an topology sligheachd a’ cleachdadh graf. Ach mus tòisich thu air graf a thogail, is fhiach cuideam a chuir air na slighean le tòrr trafaic, oir. tha iad ag iarraidh trochur nas àirde (coileanadh). An ath rud, faodaidh tu an trafaic a sheòrsachadh. Agus an uairsin tòisich a 'togail.

Ma tha ann an graf a chaidh a thogail seata chrìochnaichte iuchraichean slighe, mar sin, is fhiach coimhead a dh’ ionnsaigh grunn fanout exchange, a tha 1: 1 co-cheangailte ris an iuchair slighe. Cuimhnich sin fanout exchange as luaithe.

Ma tha an àireamh de shlighean buailteach do neo-chrìochnachd, is fhiach aire a thoirt dha topic exchange no, mura h-eil feum air an teamplaid, faodaidh tu taghadh direct exchnge, oir tha e nas luaithe topic exchange.

Measgachadh de dhiofar seòrsa exchange bu chòir dha do chuideachadh gus am fear ceart a lorg. rèiteachadh scalable, a tha a 'coinneachadh ri riatanasan siostam làithreach agus a' fàs.

Àireamh de exchange agus cha bu chòir ciudhaichean a bhith cho beag an coimeas ris an àireamh de shlighean.

Anns an ath artaigil, tòisichidh sinn a 'tuigsinn barrachd mu dheidhinn Ciudha agus Ceangalaichean.

iomraidhean

Source: www.habr.com

Cuir beachd ann