EhoroMQ. Apá 1. Ifihan. Erlang, AMQP

O dara osan, Habr! Mo fẹ lati pin iwe imọ-itọkasi ti imọ ti Mo ṣakoso lati gba lori RabbitMQ ki o si ṣajọpọ sinu awọn iṣeduro kukuru ati awọn ipinnu.

Tabili ti awọn akoonu

  • EhoroMQ. Apá 1. Ifihan. Erlang, AMQP ati RPC
  • EhoroMQ. Apá 2. Oye Pasipaaro
  • EhoroMQ. Apá 3. Oye queues ati bindings
  • EhoroMQ. Apá 4. Agbọye ohun ti awọn ifiranṣẹ ati awọn fireemu
  • EhoroMQ. Apá 5: Atẹjade Ifiranṣẹ ati Iṣẹ Lilo
  • EhoroMQ. Apá 6. Atunwo ti Federation ati Shovel modulu
  • EhoroMQ. Apá 7. Awọn alaye nipa Asopọmọra ati Shaneli
  • EhoroMQ. Apá 8. RabbitMQ ni .NET
  • EhoroMQ. Apá 9. Abojuto

Ni ṣoki nipa AMQP

AMQP (Ilana Ifiranṣẹ Queuing Ifiranṣẹ to ti ni ilọsiwaju) jẹ ilana ṣiṣi fun gbigbe awọn ifiranṣẹ laarin awọn paati eto. Ero ipilẹ ni pe awọn eto iha-ara ẹni kọọkan (tabi awọn ohun elo ominira) le ṣe paṣipaarọ awọn ifiranṣẹ ni ọna lainidii nipasẹ alagbata AMQP, eyiti o ṣe ipa-ọna, o ṣee ṣe iṣeduro ifijiṣẹ, pinpin awọn ṣiṣan data, ati ṣe alabapin si awọn iru ifiranṣẹ ti o fẹ.

Ilana AMQP ṣafihan awọn imọran mẹta:

EhoroMQ. Apá 1. Ifihan. Erlang, AMQP

  • exchange (paṣipaarọ ojuami tabi paṣipaarọ) - awọn ifiranṣẹ ti wa ni rán si o. Aaye paṣipaarọ kaakiri ifiranṣẹ ninu ọkan tabi diẹ ẹ sii ti awọn ila. Arabinrin awọn ọna awọn ifiranṣẹ si isinyi da lori awọn asopọ ti o ṣẹda (binding) laarin on ati awọn ti isinyi
  • queue (isinyi) - eto data lori disk tabi ni Ramu pe tọju awọn ọna asopọ si awọn ifiranṣẹ ati fun awọn ẹda ti awọn ifiranṣẹ consumers (si awọn onibara)
  • binding (abuda) - ofin ti o sọ aaye paṣipaarọ eyi ti isinyi awọn ifiranṣẹ wọnyi yẹ ki o lọ sinu

Ilana naa nṣiṣẹ lori oke TCP / IP.

Ni ṣoki nipa Erlang

Awọn koodu orisun ti ise agbese wa ni ibi ipamọ ni GitHub. Faaji RabbitMQ-olupin da lori erlang ati BEAM.

Erlang ni idagbasoke nipasẹ awọn ile- Ericsson ni aarin-1980 bi pinpin, ọlọdun-aṣiṣe, eto akoko gidi fun awọn ohun elo ti o nilo 99,999% uptime. Erlang lo ni orisirisi ise ati igbalode ohun elo, f.eks. WhatsApp. O le ka diẹ sii ninu nkan naa WhatsApp faaji, eyi ti Facebook ra fun $19 bilionu

Ni ṣoki nipa RabbitMQ

EhoroMQ jẹ alagbata ifiranṣẹ orisun ṣiṣi. O ṣe itọsọna awọn ifiranṣẹ pẹlu gbogbo awọn ipilẹ ipilẹ ti ilana naa AMQP ṣàpèjúwe ninu ni pato. RabbitMQ awọn ohun elo ati ki o ṣe afikun ilana naa AMQP.

Ero akọkọ ti awoṣe fifiranṣẹ ni RabbitMQ nkan ni producer (olutẹwe) ko firanṣẹ taara si isinyi. Ni otitọ, ati ni igbagbogbo, olutẹjade ko paapaa mọ boya ifiranṣẹ naa yoo jẹ jiṣẹ si awọn isinyi eyikeyi rara.

Dipo, akede le fi awọn ifiranṣẹ ranṣẹ si paṣipaarọ nikan. Ni apa kan, paṣipaarọ gba awọn ifiranṣẹ lati ọdọ awọn olutẹwejade, ati ni apa keji, o firanṣẹ si awọn ila. Paṣipaarọ naa gbọdọ mọ gangan kini lati ṣe pẹlu ifiranṣẹ ti o gba. Ṣe o yẹ ki o fi kun si isinyi kan pato? Ṣe o yẹ ki o fi kun si awọn isinyi pupọ bi? Tabi ifiranṣẹ yẹ ki o foju pa.

EhoroMQ. Apá 1. Ifihan. Erlang, AMQP

Iṣẹ kukuru RabbitMQ le ṣe apejuwe bi atẹle:

  1. Olutẹwe naa fi ifiranṣẹ ranṣẹ si paṣipaarọ kan pato
  2. Paṣipaarọ, ti o ti gba ifiranṣẹ kan, o tọ si ọkan tabi diẹ sii awọn ila ni ibamu pẹlu awọn ofin abuda laarin rẹ ati isinyi.
  3. Awọn ti isinyi tọjú a tọka si yi ifiranṣẹ. Ifiranṣẹ funrararẹ wa ni ipamọ ni Ramu tabi lori disk
  4. Ni kete ti alabara ti ṣetan lati gba ifiranṣẹ kan lati isinyi, olupin naa ṣẹda ẹda ti ifiranṣẹ nipasẹ ọna asopọ kan ati firanṣẹ
  5. Onibara gba ifiranṣẹ naa ati fi ijẹrisi ranṣẹ si alagbata naa
  6. Awọn alagbata, lori gbigba ìmúdájú, yọ a daakọ ti awọn ifiranṣẹ lati awọn ti isinyi. Lẹhinna paarẹ lati Ramu ati disk

CPR

Ilana RPC (ipe ilana jijin) labẹ fere gbogbo awọn ibaraẹnisọrọ pẹlu arin RabbitMQ. Fun apẹẹrẹ, awọn ijiroro akọkọ nipa awọn ofin alabara pẹlu RabbitMQ, ṣe afihan ilana kan RPC. Ni kete ti ilana yii ba ti pari, RabbitMQ yoo ṣetan lati gba awọn ibeere lati ọdọ alabara:

EhoroMQ. Apá 1. Ifihan. Erlang, AMQP

Tun ni awọn sipesifikesonu AMQP mejeeji alabara ati olupin le fun awọn aṣẹ. Eyi tumọ si pe alabara n duro de ibaraẹnisọrọ pẹlu olupin naa. Awọn aṣẹ jẹ awọn kilasi ati awọn ọna. Fun apere, Connection.Start – ọna ipe Start kilasi Connection.

Asopọ ati awọn ikanni

Fun iru paṣipaarọ alaye laarin alabara ati olupin, awọn ikanni. Awọn ikanni ti wa ni da laarin pato asopọ. Ikanni kọọkan ti ya sọtọ lati awọn ikanni miiran. Ninu ọran amuṣiṣẹpọ, ko ṣee ṣe lati ṣiṣẹ pipaṣẹ atẹle titi ti idahun yoo fi gba.

Lati le fi awọn aṣẹ ranṣẹ ni afiwe, o ni lati ṣii awọn ikanni pupọ. Kọọkan ikanni ṣẹda lọtọ Erlang ilana. Isopọ kan le ni awọn ikanni pupọ (multiplexing). Fun ikanni kọọkan awọn ẹya kan wa ati awọn nkan ni iranti. Nitorina, awọn diẹ awọn ikanni ti o wa laarin a asopọ, awọn RabbitMQ nlo iranti diẹ sii lati ṣakoso iru asopọ kan.

EhoroMQ. Apá 1. Ifihan. Erlang, AMQP

Apeere ti o rọrun ti ṣiṣẹda asopọ ati ikanni lilo EhoroMQ.Obara:

// ...
private void TryConnect()
{
    var factory = new ConnectionFactory() 
    {
        HostName = "host_name",
        UserName = "user_name",
        Password = "p@ssword",
        // Включение автоматичекого восстановления
        // соединения после сбоев сети 
        AutomaticRecoveryEnabled = true
    };
    _connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
    _channel = _connection.CreateModel();
    // other options 
}

Ṣiṣii asopọ tuntun fun iṣiṣẹ kọọkan jẹ irẹwẹsi pupọ bi eyi yoo ja si ga owo. Awọn ikanni yẹ ki o tun jẹ itẹramọṣẹ, ṣugbọn ọpọlọpọ awọn aṣiṣe ilana jẹ ki ikanni tiipa, nitorina igbesi aye ikanni le kuru ju ti asopọ lọ.

Nibo ni RabbitMQ ti lo?

Ni o tọ ti microservices, Ilana AMQP ati imuse rẹ ni RabbitMQ igba ti a lo fun asynchronous ibaraenisepo laarin awọn iṣẹ.

Ninu ọrọ ọrọ IIOT Ilana AMQP ati imuse rẹ ni RabbitMQ ti a lo fun paṣipaarọ data laarin awọn olupin (olupin-olupin). Tun lo ohun itanna MQTT Plugin RabbitMQ eyi ti o jẹ ẹya imuse ti awọn bèèrè MQTT fun gbigbe data laarin sensọ ati olupin ni iyara kekere, awọn agbegbe lairi (akojọ kikun ti awọn ilana atilẹyin ti wa ni atokọ ni ise agbese aaye ayelujara).

Ninu nkan atẹle a yoo bẹrẹ lati loye Awọn paṣipaarọ ni awọn alaye diẹ sii.

jo

orisun: www.habr.com

Fi ọrọìwòye kun