I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP

Sawubona, Habr! Ngifuna ukwabelana ngencwadi eyisithenjwa yencwadi yolwazi engikwazile ukuqoqa kuyo RabbitMQ bese ufinyela kube izincomo neziphetho ezimfushane.

Uhlu lokuqukethwe

  • I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP kanye ne-RPC
  • I-RabbitMQ. Ingxenye 2. Ukuqonda Ukuhwebelana
  • I-RabbitMQ. Ingxenye 3. Ukuqonda Imigqa Nezibopho
  • I-RabbitMQ. Ingxenye 4. Ukuqonda ukuthi iyini imilayezo namafreyimu
  • I-RabbitMQ. Ingxenye 5: Ukushicilelwa Komlayezo kanye Nokusebenza Kokusetshenziswa
  • I-RabbitMQ. Ingxenye 6. Ukubuyekezwa kwe-Federation kanye namamojula weFosholo
  • I-RabbitMQ. Ingxenye 7. Imininingwane mayelana Nokuxhumana kanye ne-Chanel
  • I-RabbitMQ. Ingxenye 8. RabbitMQ in .NET
  • I-RabbitMQ. Ingxenye 9. Ukuqapha

Kafushane nge-AMQP

I-AMQP (I-Advanced Message Queuing Protocol) iyiphrothokholi evulekile yokudlulisa imilayezo phakathi kwezingxenye zohlelo. Umbono oyisisekelo ukuthi amasistimu angaphansi angawodwana (noma izinhlelo zokusebenza ezizimele) zingashintshanisa imilayezo ngendlela engafanele ngomthengisi we-AMQP, owenza umzila, okungenzeka aqinisekise ukulethwa, asabalalisa ukusakazwa kwedatha, futhi abhalisele izinhlobo zemilayezo efunekayo.

Isivumelwano AMQP yethula imiqondo emithathu:

I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP

  • exchange (iphoyinti lokushintshisana noma ukushintshaniswa) - imilayezo ithunyelwa kuyo. Iphoyinti lokushintshanisa ihambisa umlayezo kulayini owodwa noma ngaphezulu. Yena ithumela imilayezo kulayini ngokusekelwe ekuxhumaneni okudaliwe (binding) phakathi kwakhe nolayini
  • queue (umugqa) - isakhiwo sedatha kudiski noma ku-RAM lokho igcina izixhumanisi zemiyalezo futhi inikeze amakhophi emilayezo consumers (kubathengi)
  • binding (ukubopha) - umthetho wokuthi itshela indawo yokushintshisana ukuthi yimuphi umugqa okufanele ungene kuwo le milayezo

Iphrothokholi isebenza phezulu I-TCP / IP.

Kafushane ngo-Erlang

Ikhodi yomthombo wephrojekthi isendaweni yokugcina ngo GitHub. Izakhiwo RabbitMQ-server ngokusekelwe ku U-Erlang kanye ne-BEAM.

Erlang ithuthukiswe yinkampani Ericsson maphakathi nawo-1980 njengohlelo olusabalalisiwe, olubekezelela amaphutha, lwesikhathi sangempela lwezinhlelo zokusebenza ezidinga isikhathi sokuphumula esingu-99,999%. Erlang esetshenziswa ezimbonini ezihlukahlukene kanye nezinhlelo zokusebenza zesimanje, isib. WhatsApp. Ungafunda okwengeziwe esihlokweni I-WhatsApp Architecture, i-Facebook eyithenge ngamaRandi ayizigidi eziyizinkulungwane ezingu-19

Kafushane mayelana ne-RabbitMQ

RabbitMQ iwumthengisi womlayezo ovulekile. Ithumela imilayezo kuzo zonke izimiso eziyisisekelo zephrothokholi I-AMQP kuchazwe ku Ukucaciswa. RabbitMQ isebenzisa futhi yengeze iphrothokholi AMQP.

Umqondo oyinhloko wemodeli yemiyalezo ku RabbitMQ into ukuthi producer (umshicileli) akathumeli imilayezo ngokuqondile kulayini. Eqinisweni, futhi kaningi, umshicileli akazi nokuthi umlayezo uzolethwa yini kunoma yimuphi ulayini nhlobo.

Kunalokho, umshicileli angathumela kuphela imilayezo ekushintshanisweni. Ngakolunye uhlangothi, ukuhwebelana kuthola imilayezo evela kubashicileli, kanti ngakolunye uhlangothi, kubathumela emigqeni. I-exchange kumele yazi kahle ukuthi izokwenzani ngomlayezo ewutholayo. Ingabe kufanele yengezwe kulayini othile? Ingabe kufanele yengezwe kolayini abaningi? Noma umlayezo kufanele uzibe.

I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP

Umsebenzi omfushane RabbitMQ ingachazwa kanje:

  1. Umshicileli uthumela umlayezo ekushintshaneni okuthile
  2. Ukushintshisana, uma sekuthole umlayezo, kuwuhambisa kulayini owodwa noma ngaphezulu ngokuhambisana nemithetho ebophayo phakathi kwakho nolayini.
  3. Ulayini ugcina ireferensi yalo mlayezo. Umlayezo ngokwawo ugcinwa ku-RAM noma kudiski
  4. Uma umthengi eselungele ukuthola umlayezo ovela kulayini, iseva idala ikhophi yomlayezo ngesixhumanisi bese ithumela.
  5. Umthengi uthola umlayezo futhi athumele isiqinisekiso kumthengisi
  6. Umthengisi, lapho ethola isiqinisekiso, ususa ikhophi yomlayezo kulayini. Bese isusa ku-RAM nakudiski

I-RPC

Inqubo I-RPC (ucingo lwenqubo yesilawuli kude) cishe konke ukuxhumana ne-nucleus RabbitMQ. Isibonelo, izingxoxo zokuqala mayelana nemibandela yeklayenti ne RabbitMQ, ibonisa inqubo ethile RPC. Uma lokhu kulandelana sekuqediwe, RabbitMQ izolungela ukwamukela izicelo ezivela kuklayenti:

I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP

Futhi ekucacisweni AMQP kokubili iklayenti neseva bangakhipha imiyalo. Lokhu kusho ukuthi iklayenti lilinde ukuxhumana neseva. Imiyalo ngamakilasi nezindlela. Ngokwesibonelo, Connection.Start – indlela call Start class Connection.

Ukuxhumana namashaneli

Ngokwabelana ngolwazi olunjalo phakathi kweklayenti neseva, iziteshi. Iziteshi zidalwe ngaphakathi uxhumano oluthile. Isiteshi ngasinye sihlukanisiwe kwezinye iziteshi. Esimeni esivumelanayo, akwenzeki ukwenza umyalo olandelayo kuze kutholwe impendulo.

Ukuze ukwazi ukuthumela imiyalo ngokuhambisana, kufanele uvule iziteshi ezimbalwa. Isiteshi ngasinye sidala esehlukile Erlang inqubo. Ukuxhumana okukodwa kungaba neziteshi eziningi (ukuphindaphinda). Esiteshini ngasinye kunezakhiwo nezinto ezithile ezisememori. Ngakho-ke, uma kukhona iziteshi eziningi ngaphakathi koxhumano, i I-RabbitMQ isebenzisa inkumbulo eyengeziwe ukuphatha ukuxhumana okunjalo.

I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP

Isibonelo esilula sokudala ukuxhumana nokusebenzisa isiteshi RabbitMQ.Client:

// ...
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 
}

Ukuvula uxhumano olusha lomsebenzi ngamunye akukhuthazwa kakhulu njengoba lokhu kuzoholela ezindlekweni eziphezulu. Iziteshi kufanele futhi ziphikelele, kodwa amaphutha amaningi ephrothokholi abangela ukuthi isiteshi sivalwe, ngakho-ke isikhathi sokuphila sesiteshi singase sibe sifushane kuneso sokuxhuma.

Isetshenziswa kuphi iRabbitMQ?

Kumongo we-microservices, iphrothokholi AMQP kanye nokuqaliswa kwayo ku RabbitMQ ngokuvamile esetshenziselwa ukusebenzisana kwe-asynchronous phakathi kwamasevisi.

Kumongo IIOT umthetho olandelwayo AMQP kanye nokuqaliswa kwayo ku RabbitMQ esetshenziselwa ukushintshanisa idatha phakathi kwamaseva (iseva-iseva). Futhi sebenzisa i-plugin I-MQTT Plugin RabbitMQ okuwukuqaliswa kwephrothokholi I-MQTT yokudlulisa idatha phakathi kwenzwa neseva ezindaweni ezinesivinini esiphansi, ezibambezeleke kakhulu (uhlu olugcwele lwezivumelwano ezisekelwayo lufakwe kuhlu ku- iwebhusayithi yephrojekthi).

Esihlokweni esilandelayo sizoqala ukuqonda Ukuhwebelana ngokuningiliziwe.

izithenjwa

Source: www.habr.com

Engeza amazwana