UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP

Molo emva kwemini, Habr! Ndifuna ukwabelana ngencwadi yesikhokelo yolwazi endiye ndakwazi ukuyiqokelela RabbitMQ kwaye udibanise kwiingcebiso ezimfutshane kunye nezigqibo.

Uluhlu lomxholo

  • UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP kunye neRPC
  • UmvundlaMQ. Icandelo 2. Ukuqonda Utshintshiselwano
  • UmvundlaMQ. Isiqendu 3. Ukuqonda iMigcele kunye nezibophelelo
  • UmvundlaMQ. Icandelo 4. Ukuqonda ukuba yintoni imiyalezo kunye nezakhelo
  • UmvundlaMQ. Icandelo 5: Upapasho loMyalezo kunye nokuSetyenziswa kokuSebenza
  • UmvundlaMQ. Icandelo 6. Uphononongo lweemodyuli zeManyano kunye neMihlaba
  • UmvundlaMQ. Icandelo 7. Iinkcukacha malunga noQhagamshelwano kunye neChanel
  • UmvundlaMQ. Icandelo 8. RabbitMQ kwi.NET
  • UmvundlaMQ. Icandelo 9. Ukubeka iliso

Ngokufutshane malunga ne-AMQP

I-AMQP (iProtocol ye-Advanced Message Queuing) yinkqubo evulekileyo yokudlulisa imiyalezo phakathi kwamacandelo enkqubo. Ingcamango esisiseko kukuba ii-subsystems zomntu ngamnye (okanye izicelo ezizimeleyo) zinokutshintshiselana ngemiyalezo ngendlela engafanelekanga ngomthengisi we-AMQP, owenza umzila, mhlawumbi uqinisekisa ukuhanjiswa, ukusasaza imilambo yedatha, kwaye ubhalisele kwiintlobo zemiyalezo efunwayo.

Inkqubo AMQP yazisa iikhonsepthi ezintathu:

UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP

  • exchange (indawo yokutshintshiselana okanye utshintshiselwano) - imiyalezo ithunyelwa kuyo. Indawo yotshintshiselwano ihambisa umyalezo kumgca omnye okanye ngaphezulu. Yena Ihambisa imiyalezo emgceni isekelwe kumakhonkco adaliweyo (binding) phakathi kwakhe nomgca
  • queue (umgca) - ulwakhiwo lwedatha kwidiski okanye kwi-RAM leyo igcina amakhonkco kwimiyalezo kwaye inika iikopi zemiyalezo consumers (kubathengi)
  • binding (ebopha) - umthetho ukuba ixelela indawo yotshintshiselwano ngomgca ekufuneka ingene kuwo le miyalezo

Iprothokholi iqhuba phezulu TCP / IP.

Ngokufutshane malunga no-Erlang

Ikhowudi yemvelaphi yeprojekthi ikwindawo yokugcina GitHub. Uyilo lwezakhiwo RabbitMQ-umncedisi ngenxa ye erlang kunye neBEAM.

Erlang iphuhliswe yinkampani Ericsson phakathi kwe-1980s njengenkqubo esasazwayo, enyamezelayo, yexesha langempela kwizicelo ezifuna i-99,999%. Erlang isetyenziswe kumashishini ahlukeneyo kunye nezicelo zanamhlanje, umz. WhatsApp. Unokufunda ngakumbi kwinqaku Uyilo lwe-WhatsApp, apho i-Facebook ithenge i-19 yeebhiliyoni zeedola

Ngokufutshane malunga neRabbitMQ

UmvundlaMQ ngumthengisi womyalezo ovulelekileyo. Ihambisa imiyalezo kunye nayo yonke imigaqo esisiseko yeprotocol AMQP ichazwe kwi Ukubalula. RabbitMQ sebenzisa kwaye yongeza iprothokholi AMQP.

Umbono ophambili wemodeli yemiyalezo kwi RabbitMQ into yile producer (umpapashi) akathumeli imiyalezo ngokuthe ngqo emgceni. Ngapha koko, kwaye rhoqo, umshicileli akazi nokuba umyalezo uza kuhanjiswa kuwo nawuphi na umgca kwaphela.

Endaweni yoko, umshicileli unokuthumela kuphela imiyalezo kutshintshiselwano. Kwelinye icala, utshintshiselwano lufumana imiyalezo evela kubapapashi, kwaye kwelinye icala, lubathumela emigceni. Utshintshiselwano kufuneka lwazi ngokuthe ngqo ukuba lenze ntoni ngomyalezo olufumanayo. Ngaba kufuneka yongezwe kumgca othile? Ngaba kufuneka yongezwe kwimigca emininzi? Okanye umyalezo kufuneka ungahoywa.

UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP

Umsebenzi omfutshane RabbitMQ inokuchazwa ngolu hlobo lulandelayo:

  1. Umshicileli uthumela umyalezo kutshintshiselwano oluthile
  2. Utshintshiselwano, emva kokuba ufumene umyalezo, uwuhambisa kumgca omnye okanye ngaphezulu ngokuhambelana nemigaqo ebophelelayo phakathi kwayo kunye nomgca.
  3. Umgca ugcina ireferensi yalo myalezo. Umyalezo ngokwawo ugcinwe kwi-RAM okanye kwidiski
  4. Nje ukuba umthengi alungele ukufumana umyalezo ovela emgceni, umncedisi wenza ikopi yomyalezo ngekhonkco kwaye athumele.
  5. Umthengi ufumana umyalezo kwaye athumele isiqinisekiso kumthengisi
  6. Umthengisi, xa efumana isiqinisekiso, ususa ikopi yomyalezo ukusuka kumgca. Emva koko icima kwi-RAM kunye nediski

CPP

Inkqubo I-RPC (umnxeba wenkqubo ekude) isekela phantse lonke unxibelelwano kunye ne-nucleus RabbitMQ. Umzekelo, iingxoxo zokuqala malunga nemiqathango yomxhasi kunye RabbitMQ, ibonisa inkqubo ethile RPC. Nje ukuba olu landelelwano lugqityiwe, RabbitMQ iya kuba ikulungele ukwamkela izicelo ezivela kumxhasi:

UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP

Kwakhona kwingcaciso AMQP bobabini umxhasi kunye nomncedisi banokukhupha imiyalelo. Oku kuthetha ukuba umxhasi ulinde ukunxibelelana nomncedisi. Imiyalelo ziiklasi kunye neendlela. Umzekelo, Connection.Start – indlela yokufowuna Start класса Connection.

Uqhagamshelwano kunye nemijelo

Ngotshintshiselwano olunjalo lolwazi phakathi komthengi kunye nomncedisi, amajelo. Imijelo yenziwa ngaphakathi uqhagamshelwano oluthile. Ijelo ngalinye libekwe lodwa kwamanye amajelo. Kwimeko ye-synchronous, akunakwenzeka ukwenza umyalelo olandelayo de kufunyenwe impendulo.

Ukuze ukwazi ukuthumela imiyalelo ngokuhambelanayo, kufuneka uvule amajelo amaninzi. Ijelo ngalinye lidala elahlukileyo Erlang inkqubo. Uqhagamshelo olunye lunokuba namajelo amaninzi (ukuphindaphinda). Kwitshaneli nganye kukho izakhiwo kunye nezinto ezithile kwimemori. Ngoko ke, amajelo amaninzi akhona ngaphakathi koqhagamshelwano, i I-RabbitMQ isebenzisa imemori eninzi ukulawula uqhagamshelwano olunjalo.

UmvundlaMQ. Icandelo 1. Intshayelelo. Erlang, AMQP

Umzekelo olula wokudala uqhagamshelo kunye netshaneli usebenzisa 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 umdibaniso omtsha kumsebenzi ngamnye akukhuthazwa ngamandla njengale kuya kukhokelela kwiindleko eziphezulu. Iziteshi kufuneka ziqhubeke, kodwa iimpazamo ezininzi zeprotocol zibangela ukuba itshaneli ivalwe, ngoko ke ubomi bomjelo bunokuba bufutshane kunonxibelelwano.

Isetyenziswa phi iRabbitMQ?

Kumxholo wee-microservices, iprotocol AMQP kunye nokuphunyezwa kwayo kwi RabbitMQ rhoqo esetyenziselwa intsebenziswano engavumelaniyo phakathi kweenkonzo.

Kumxholo IIOT umthetho olandelwayo AMQP kunye nokuphunyezwa kwayo kwi RabbitMQ isetyenziselwa utshintshiselwano lwedatha phakathi kweeseva (umncedisi-umncedisi). Kwakhona sebenzisa i-plugin Iplagi ye-MQTT ye-Plugin RabbitMQ olukukuphunyezwa kweprotocol I-MQTT yokuhambisa idata phakathi koluvo kunye neseva kwisantya esisezantsi, i-high-latency bume (uluhlu olupheleleyo lweeprothokholi ezixhaswayo zidweliswe apha iwebhusayithi yeprojekthi).

Kwinqaku elilandelayo siza kuqala ukuqonda Utshintshiselwano ngokweenkcukacha ngakumbi.

iimbekiselo

umthombo: www.habr.com

Yongeza izimvo