RabbitMQ. Kashi na 2. Fahimtar Musanya

Exchange - musayar ko musayar wuri. Ana aika saƙo zuwa gare shi. Exchange rarraba sakon a cikin layi daya ko fiye. Shi hanyoyin saƙonni zuwa jerin gwano bisa ga mahaɗan da aka ƙirƙira (bindings) tsakaninsa da jerin gwano.

Exchange ba Erlang tsari. Domin dalilai na scalability exchange kirtani ne (hanyar haɗi zuwa module ɗin tare da lambar inda tsarin dabaru yake) a cikin bayanan da aka gina mnesia. Masu musayar dubu 1 za su cinye 1MB na ƙwaƙwalwar ajiya kawai.

Abubuwan da ke ciki

  • RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP da RPC
  • RabbitMQ. Kashi na 2. Fahimtar Musanya
  • RabbitMQ. Kashi na 3. Fahimtar Layi da Dauri
  • RabbitMQ. Sashe na 4. Ma'amala da menene saƙonni da firam
  • RabbitMQ. Sashe na 5: Bugawa da Ci Gaban Ayyukan Saƙo
  • RabbitMQ. Sashe na 6. Bayyani na Tarayya da Modulolin Shebur
  • RabbitMQ. Sashe na 7. Cikakken bayani game da Connection da Chanel
  • RabbitMQ. Sashe na 8. RabbitMQ a cikin NET
  • RabbitMQ. Sashe na 9. Sa Ido

Musanya Kai tsaye

Direct exchange - amfani a lokacin da ake bukata isar da sako zuwa takamaiman layuka. Ana buga sakon zuwa ga mai musayar tare da takamaiman maɓallin kewayawa kuma ya shiga cikin duk jerin layikan da ke da alaƙa da wannan mai musayar tare da maɓallin kewayawa makamancin haka. Makullin kewayawa shine kirtani. Ana yin matching ta amfani da duba igiyoyi don daidaito.

Misalin zane na kwararar saƙo:

RabbitMQ. Kashi na 2. Fahimtar Musanya

В rabbitmq akwai ra'ayi tsoho musanya. Wannan direct exchange babu suna. Idan an yi amfani da tsohowar musanya, to za a tura saƙon zuwa jerin gwano mai suna daidai maɓallin kewayawa saƙo.

Musanya Take

Topic exchange - kama direct exchange yana ba da damar zaɓar hanya ta hanyar kwatanta maɓallin kewayawa. Amma, a wannan yanayin, an ba da maɓallin ta samfuri. Lokacin ƙirƙirar samfuri, yi amfani 0 ko karin kalmomi ( haruffa AZ и az da lambobi 0-9), rabu da digo, da alamomi * и #.

  • * - za a iya maye gurbinsu da daidai 1 kalmar
  • # - za a iya maye gurbinsu da 0 ko karin kalmomi

Misalin zane na kwararar saƙo:

RabbitMQ. Kashi na 2. Fahimtar Musanya

Fara daga sigar RabbitMQ 2.4.0 algorithm don sarrafa topic exchange ya fara aiki har 145 sau sauri. Sun cimma hakan ne ta hanyar aiwatar da tsarin gwada aiwatarwa, wanda ke nuna wakilcin samfura azaman tsarin itace. Misali samfuri a.b.c, a.*.b.c, a.#.c и b.b.c za a wakilta da tsari mai zuwa:

RabbitMQ. Kashi na 2. Fahimtar Musanya

Ana binciken madaidaicin tsari yana farawa daga tushe kuma yana tafiya daga sama zuwa kasa.

Ayyukan:

  • amfani da wannan musayar zai iya zama zabi mai kyau don yuwuwar haɓaka app na gaba, saboda ana iya keɓance samfura koyaushe domin a buga saƙon kamar haka direct exchange ko fanout exchange
  • samfurori masu amfani * yafi saurifiye da samfuran da suke amfani da su #.
  • topic exchange a hankali direct exchange

Musanya Fanout

Fanout exchange - ana isar da duk saƙon zuwa ga dukkan layi ko da an ayyana maɓallin kewayawa a cikin saƙon.

Ayyukan:

  • RabbitMQ baya aiki tare da maɓallan kewayawa da samfuri wanda ke da tasiri mai kyau akan aiki. Wannan shine mafi sauri exchange;
  • duk masu amfani dole ne su iya sarrafa duk saƙonni;

Misalin zane na kwararar saƙo:

RabbitMQ. Kashi na 2. Fahimtar Musanya

Musanya Headers

Headers exchange - yana jagorantar saƙonni zuwa jerin layi masu alaƙa dangane da kwatanta nau'ikan kaddarorin (maɓalli, ƙima). headers dauri da makamantan saƙon dukiya. headers ne mai Dictionary<ключ, значение>.

Idan ka ƙara maɓalli na musamman zuwa ƙamus x-match tare da ma'ana any, to ana tura saƙon idan nau'i-nau'i (maɓalli, ƙima) sun yi daidai da ɗan lokaci. Wannan hali yayi kama da mai aiki or.

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

Maɓalli na asali x-match ya ƙunshi ƙima all. Wannan yana nufin cewa ana karkatar da saƙon lokacin da nau'ikan (maɓalli, ƙima) suka dace gaba ɗaya. Wannan hali yayi kama da mai aiki and.

Misalin zane na kwararar saƙo:

RabbitMQ. Kashi na 2. Fahimtar Musanya

Ayyukan:

  • ƙarin sassauci
  • ƙarin lissafin sama da ƙasa. Duk nau'i-nau'i (maɓalli, ƙima) na sifa headers dole ne a jera su da maɓalli kafin ƙididdige ƙimar saƙon saƙo. Sannu a hankali fiye da sauran nau'ikan musayar.

Daidaitaccen Hashing Exchange

Wannan musanya shine plugin и ba a gina shi ba в RabbitMQ.

Consistent-hashing exchange (Musayar Hash-daidaitacce) - ana amfani dashi lokacin da akwai layukan da yawa waɗanda ke da yuwuwar masu karɓar saƙo da lokacin da kuke buƙatar ɗaukar ma'auni tsakanin su. Saƙon yana da alaƙa da jerin gwano ta nauyi (ƙimar madaidaicin kirtani daga 0 - n).

Madaidaicin nauyin layi - yana nuna cewa kowane jerin gwano zai karɓa kimanin adadin guda saƙonni (kowane saƙo za a sanya shi cikin layi ɗaya kawai). Babu cikakken garantin rarraba saƙonni iri ɗaya.

Misalin zane na kwararar saƙo:

RabbitMQ. Kashi na 2. Fahimtar Musanya

Hash lissafta bisa maballin kewayawa ko dukiya headers saƙonni. Idan duk saƙonnin da aka buga suna da maɓallan kewayawa daban-daban, ko headers, to, rarraba zai faru da nauyi. In ba haka ba, za a yi amfani da maɓallin kewayawa, ko headers.

Ya kamata taimako lokacin da kayan masarufi ke buƙatar girma sama da mafita tare da masu amfani da yawa masu amfani da layi ɗaya.

Haɗin masu musayar (E2E)

Ana iya haɗa halayen duk masu musanya ta amfani da sadarwa Musanya-zuwa-Musanya (ba a haɗa haɗin masu musayar a cikin ƙayyadaddun bayanai ba AMQP. Wannan tsawaita yarjejeniya ce daga gefe RabbitMQ).

Misalin zane na kwararar saƙo:

RabbitMQ. Kashi na 2. Fahimtar Musanya

A kashe E2E za mu iya samun daidaitaccen tsari mai daidaitawa wanda ya dace da buƙatun yanzu da girma.

Ƙirƙiri Musanya

An ƙirƙiri mai musanya ta amfani da aiki tare RPC nema ga uwar garken. Ana buƙatar buƙatar ta amfani da hanyar Exchange.Declarekira tare da sigogi:

  • sunan musayar
  • nau'in musayar canji
  • sauran zaɓuɓɓuka

Misalin halitta exchange ta wajen RabbitMQ.Client:

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

  • exchange - sunan musayar da muke son ƙirƙirar. Dole ne suna ya zama na musamman
  • type - nau'in musayar
  • durable - idan an shigar true, to, exchange zai zama na dindindin. Za a adana shi akan faifai kuma zai iya tsira daga sabar/dilla zata sake farawa. Idan darajar false, to, exchange na ɗan lokaci ne kuma za a cire lokacin da aka sake kunna uwar garken/ dillali
  • autoDelete - shafewa ta atomatik. Exchange za a share lokacin da aka share duk layukan da ke da alaƙa
  • arguments dalilai ne na zaɓi. Mafi sau da yawa, ta hanyar muhawara da aka saita alternative exchange (madadin musayar). Idan saƙo ba zai iya bi ta hanyar asali ba, za a iya aika shi zuwa wata musanya ta daban don a bi ta ta wata hanya ta daban.

RabbitMQ. Kashi na 2. Fahimtar Musanya

Idan halitta exchange yiwu, sa'an nan uwar garken zai aika da abokin ciniki aiki tare RPC amsar Exchange.DeclareOk. Idan halitta ba shi yiwuwa (akwai ƙin yarda akan buƙatar Exchange.Declare), to tashar za ta rufe uwar garken ta amfani da umarnin asynchronous Channel.Close kuma abokin ciniki zai sami banda OperationInterruptedException, wanda zai ƙunshi lambar kuskure da bayaninsa.

Dole ne a ƙirƙiri mai musayar kuɗi kafin aikawa. Idan kun buga sako zuwa wasu masu musayar da ba su wanzu - RabbitMQ shiru tayi ta cire shi.

Ƙirƙiri GUI Musanya

Je zuwa admin panel RabbitMQ karkashin mai amfani guest (username: guest da kuma kalmar sirri: guest). Lura cewa mai amfani guest yana iya haɗawa daga localhost kawai. Yanzu bari mu je shafin Exchanges kuma danna kan Add a new exchange. Cika kaddarorin:

RabbitMQ. Kashi na 2. Fahimtar Musanya

Yawancin kaddarorin an bayyana su a sama. A nan mun lura cewa idan muka saita Internal, to, ana iya amfani da musayar kawai don E2E. Producer ba zai iya aika saƙonni zuwa irin wannan musayar ba.

ƙarshe

Lokacin haɓaka tsarin, yana da dacewa don bayyana topology hanya ta amfani da jadawali. Amma kafin ka fara gina jadawali, yana da kyau a nuna alamar hanyoyi tare da manyan zirga-zirga, saboda. suna bukata mafi girma kayan aiki (aiki). Na gaba, zaku iya rarraba zirga-zirga. Sannan fara gini.

Idan a cikin jadawali da aka gina akwai saitin iyaka maɓallan kewayawa, to, yana da daraja duba zuwa da yawa fanout exchange, waɗanda ke da alaƙa 1: 1 da maɓallin kewayawa. Ka tuna cewa fanout exchange mafi sauri.

Idan adadin hanyoyin yana kula da rashin iyaka, yana da daraja a kula topic exchange ko, idan samfurin ba a buƙata, to, za ku iya zaɓar direct exchnge, saboda yana da sauri topic exchange.

Haɗuwa daban-daban exchange kamata ya taimake ka nemo daidai. daidaitacce mai daidaitawa, wanda ya dace da buƙatun tsarin yanzu da girma.

Yawan exchange kuma layukan ya kamata su kasance kadan idan aka kwatanta da adadin hanyoyin.

A cikin labarin na gaba, za mu fara fahimtar ƙarin bayani game da layi da ɗaure.

nassoshi

source: www.habr.com

Add a comment