Dea-tráthnóna, Habr! Ba mhaith liom leabhar tagartha téacsleabhair a roinnt ar éirigh liom a bhailiú air RabbitMQ agus comhdhlúthú i moltaí agus conclúidí gearra.
Tábla na nÁbhar
RabbitMQ. Part 1. Réamhrá. Erlang, AMQP agus RPC
RabbitMQ. Cuid 2. Malartáin a Thuiscint
RabbitMQ. Cuid 3. Scuainí agus Ceangail a Thuiscint
RabbitMQ. Cuid 4. A thuiscint cad is teachtaireachtaí agus frámaí ann
RabbitMQ. Cuid 5: Foilsitheoireachta Teachtaireachta agus Feidhmíocht Tomhaltais
RabbitMQ. Cuid 6. Athbhreithniú ar mhodúil na Cónaidhme agus na Sluasaid
RabbitMQ. Cuid 7. Sonraí maidir le Ceangal agus Chanel
RabbitMQ. Cuid 8. RabbitMQ in .NET
RabbitMQ. Cuid 9. Faireachán
Go hachomair faoi AMQP
Is prótacal oscailte é AMQP (Ardphrótacal Ciúála Teachtaireachta) chun teachtaireachtaí a tharchur idir comhpháirteanna córais. Is é an bun-smaoineamh gur féidir le fochórais aonair (nó feidhmchláir neamhspleácha) teachtaireachtaí a mhalartú ar bhealach treallach trí bhróicéir AMQP, a fheidhmíonn ródú, b’fhéidir a ráthaíonn seachadadh, a dháileann sruthanna sonraí, agus a shíníonn do na cineálacha teachtaireachtaí atá ag teastáil.
Prótacal AMQP tugtar isteach trí choincheap:
exchange (pointe malairte nó malartú) - seoltar teachtaireachtaí chuige. Pointe malairte dáileann teachtaireacht i scuaine amháin nó níos mó. sí cuireann sé teachtaireachtaí chuig scuaine bunaithe ar na naisc chruthaithe (binding) idir é féin agus an scuaine
queue (scuaine) - struchtúr sonraí ar dhiosca nó i RAM a stórálann sé naisc le teachtaireachtaí agus tugann sé cóipeanna de theachtaireachtaí consumers (do thomhaltóirí)
binding (ceangailteach) - riail go insíonn sé an pointe malartaithe cén scuaine ar cheart do na teachtaireachtaí seo dul isteach ann
Erlang forbartha ag an gcuideachta Ericsson i lár na 1980idí mar chóras dáilte, fabht-fhulangach, fíor-ama d'iarratais a éilíonn 99,999% uptime. Erlang a úsáidtear i dtionscail éagsúla agus iarratais nua-aimseartha, m.sh. WhatsApp. Is féidir leat níos mó a léamh san alt Ailtireacht WhatsApp, a cheannaigh Facebook ar $19 billiún
Go hachomair faoi RabbitMQ
Coinín MQ is bróicéir teachtaireachtaí foinse oscailte é. Treoraíonn sé teachtaireachtaí feadh bhunphrionsabail uile an phrótacail AMQP cur síos orthu i sonraíochtaí. RabbitMQ cuireann agus forlíonann an prótacal AMQP.
An príomh-smaoineamh ar an tsamhail teachtaireachtaí i RabbitMQ is é an rud producer (foilsitheoir) teachtaireachtaí a sheoladh go díreach chuig an scuaine. Go deimhin, agus go minic, ní bhíonn a fhios ag an bhfoilsitheoir fiú an seachadfar an teachtaireacht chuig scuaine ar bith ar chor ar bith.
Ina áit sin, ní féidir leis an bhfoilsitheoir ach teachtaireachtaí a sheoladh chuig an malartú. Ar thaobh amháin, faigheann an malartú teachtaireachtaí ó fhoilsitheoirí, agus ar an láimh eile, cuireann sé chuig scuainí iad. Ní mór go mbeadh a fhios ag an malartú go díreach cad atá le déanamh leis an teachtaireacht a fhaigheann sé. Ar chóir é a chur le scuaine ar leith? Ar cheart é a chur le scuainí iolracha? Nó ba cheart neamhaird a dhéanamh den teachtaireacht.
Obair ghairid RabbitMQ is féidir cur síos a dhéanamh air mar seo a leanas:
Seolann an foilsitheoir teachtaireacht chuig malartán ar leith
Déanann malartán, tar éis teachtaireacht a fháil, é a sheoladh chuig scuaine amháin nó níos mó de réir na rialacha ceangailteacha idir é agus an scuaine
Stórálann an scuaine tagairt don teachtaireacht seo. Stóráiltear an teachtaireacht féin i RAM nó ar dhiosca
Nuair atá an tomhaltóir réidh le teachtaireacht a fháil ón scuaine, cruthaíonn an freastalaí cóip den teachtaireacht tríd an nasc agus seolann sé
Faigheann an tomhaltóir an teachtaireacht agus cuireann sé deimhniú chuig an mbróicéir
Nuair a fhaigheann an bróicéir dearbhú, baineann sé cóip den teachtaireacht as an scuaine. Ansin scriostar as RAM agus diosca
RPC
Процесс RPC (glaoch ar nós imeachta cianda) atá mar bhonn le beagnach gach idirghníomhú leis an núicléas RabbitMQ. Mar shampla, plé tosaigh faoi théarmaí an chliaint le RabbitMQ, léiríonn próiseas áirithe RPC. Nuair a bheidh an seicheamh seo críochnaithe, RabbitMQ réidh le glacadh le hiarratais ón gcliant:
Chomh maith leis sin sa tsonraíocht AMQP is féidir leis an gcliant agus leis an bhfreastalaí orduithe a eisiúint. Ciallaíonn sé seo go bhfuil an cliant ag fanacht le cumarsáid a dhéanamh leis an bhfreastalaí. Is ranganna agus modhanna iad orduithe. Mar shampla, Connection.Start – modh glao Start rang Connection.
Ceangal agus cainéil
Le haghaidh malartú faisnéise den sórt sin idir cliant agus freastalaí, cainéil. Cruthaítear cainéil laistigh de nasc ar leith. Tá gach cainéal scoite amach ó chainéil eile. Sa chás sioncronach, ní féidir an chéad ordú eile a rith go dtí go bhfaightear freagra.
D'fhonn a bheith in ann orduithe a sheoladh go comhthreomhar, caithfidh tú roinnt bealaí a oscailt. Cruthaíonn gach cainéal ar leith Erlang próiseas. Is féidir ilchainéil a bheith ag nasc amháin (chomhoiriúnachta). I gcás gach cainéal tá struchtúir agus rudaí áirithe sa chuimhne. Dá bhrí sin, na bealaí níos mó atá laistigh de nasc, an Úsáideann RabbitMQ níos mó cuimhne a leithéid de cheangal a bhainistiú.
Sampla simplí de nasc agus cainéal a chruthú ag baint úsáide as RabbitMQ.Cliant:
// ...
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
}
Moltar go láidir nasc nua a oscailt do gach oibríocht mar seo beidh costais arda mar thoradh air. Ba cheart go mbeadh cainéil leanúnach freisin, ach is cúis le go leor earráidí prótacail an cainéal a dhúnadh, agus mar sin d'fhéadfadh saolré an chainéil a bheith níos giorra ná saolré an cheangail.
Cá n-úsáidtear RabbitMQ?
I gcomhthéacs na microservices, an prótacal AMQP agus a chur i bhfeidhm i RabbitMQ a úsáidtear go minic le haghaidh idirghníomhaíocht asincrónach idir seirbhísí.
Sa chomhthéacs IIOT prótacal AMQP agus a chur i bhfeidhm i RabbitMQ a úsáidtear le haghaidh malartú sonraí idir freastalaithe (freastalaí-freastalaí). Bain úsáid as an breiseán freisin Breiseán MQTT RabbitMQ atá ina chur i bhfeidhm an phrótacail MQTT chun sonraí a tharchur idir braiteoir agus freastalaí i dtimpeallachtaí ísealluais, ard-latency (tá liosta iomlán de na prótacail tacaithe liostaithe ag suíomh Gréasáin an tionscadail).
Sa chéad alt eile cuirfimid tús le tuiscint níos mine a fháil ar Malartuithe.