Feasgar math, Habr! Tha mi airson leabhar fiosrachaidh leabhar-teacsa a cho-roinn a fhuair mi air cruinneachadh RabbitMQ agus dlùthachadh ann am molaidhean goirid agus co-dhùnaidhean.
Clàr-innse
CoineanachMQ. Pàirt 1. Ro-ràdh. Erlang, AMQP agus RPC
CoineanachMQ. Pàirt 2. Tuigse iomlaidean
CoineanachMQ. Pàirt 3. Tuigsinn ciudha agus ceanglachan
CoineanachMQ. Pàirt 4. A 'tuigsinn dè na teachdaireachdan agus frèaman
CoineanachMQ. Pàirt 5: Foillseachadh Teachdaireachd agus Coileanadh Consumtion
CoineanachMQ. Pàirt 6. Sealladh farsaing air a 'Chaidreachas agus Modalan Sluasaid
CoineanachMQ. Pàirt 7. Mion-fhiosrachadh mu Ceangal agus Chanel
CoineanachMQ. Pàirt 8. RabbitMQ ann an .NET
CoineanachMQ. Pàirt 9. Sgrùdadh
Beagan mu dheidhinn AMQP
Tha AMQP (Pròtacal Ciudha Teachdaireachd Adhartach) na phròtacal fosgailte airson teachdaireachdan a chuir eadar co-phàirtean siostam. Is e am beachd bunaiteach gum faod fo-shiostaman fa leth (no tagraidhean neo-eisimeileach) teachdaireachdan iomlaid ann an dòigh neo-riaghailteach tro broker AMQP, a bhios a’ coileanadh slighe, is dòcha a ’gealltainn lìbhrigeadh, a’ cuairteachadh sruthan dàta, agus a ’fo-sgrìobhadh do na seòrsaichean teachdaireachd a tha thu ag iarraidh.
Pròtacal AMQP toirt a-steach trì bun-bheachdan:
exchange (puing iomlaid no iomlaid) - thèid teachdaireachdan a chuir thuige. Puing iomlaid a 'sgaoileadh an teachdaireachd ann an aon no barrachd ciudha. Tha i slighean teachdaireachdan gu ciudha stèidhichte air ceanglaichean cruthaichte (binding) eadar e agus an ciudha
queue (ciudha) - structar dàta air diosc no ann an RAM a tha a’ stòradh cheanglaichean ri teachdaireachdan agus a’ toirt seachad lethbhric de theachdaireachdan consumers (do luchd-cleachdaidh)
binding (ceangailteach) - riaghailt a tha ag innse don phuing iomlaid air am bu chòir na teachdaireachdan sin a dhol a-steach
Tha am protocol a 'ruith air a' mhullach TCP / IP.
Erlang air a leasachadh leis a’ chompanaidh Ericsson ann am meadhan nan 1980n mar shiostam sgaoilte, fulangach, fìor-ùine airson tagraidhean a dh’ fheumas 99,999% uptime. Erlang air a chleachdadh ann an diofar ghnìomhachasan agus iarrtasan an latha an-diugh, m.e. WhatsApp. Faodaidh tu barrachd a leughadh san artaigil Ailtireachd WhatsApp, a cheannaich Facebook airson $ 19 billean
Beagan mu dheidhinn RabbitMQ
CoineanachMQ na broker teachdaireachd stòr fosgailte. Bidh e a’ stiùireadh teachdaireachdan a rèir prionnsapalan bunaiteach a’ phròtacal AMQP air a mhìneachadh ann an sònrachaidhean. RabbitMQ a’ cur an gnìomh agus a’ cur ris a’ phròtacal AMQP.
Am prìomh bheachd air a 'mhodail teachdaireachd ann an RabbitMQ rud a th ’ann producer (foillsichear) nach cuir teachdaireachdan gu dìreach chun ciudha. Gu dearbh, agus gu math tric, chan eil fios aig an fhoillsichear an tèid an teachdaireachd a lìbhrigeadh gu ciudha sam bith idir.
An àite sin, chan urrainn don fhoillsichear ach teachdaireachdan a chuir chun iomlaid. Air an aon làimh, bidh an iomlaid a 'faighinn teachdaireachdan bho fhoillsichearan, agus air an làimh eile, bidh e gan cur gu ciudhaichean. Feumaidh fios a bhith aig an iomlaid dè dìreach a nì e leis an teachdaireachd a gheibh e. Am bu chòir a chur ri ciudha sònraichte? Am bu chòir a chur ri ioma ciudha? No bu chòir an teachdaireachd a leigeil seachad.
Obair ghoirid RabbitMQ faodar a mhìneachadh mar a leanas:
Bidh am foillsichear a’ cur teachdaireachd gu iomlaid sònraichte
Bidh iomlaid, às deidh dha teachdaireachd fhaighinn, ga stiùireadh gu aon ciudha no barrachd a rèir nan riaghailtean ceangail eadar e agus an ciudha
Bidh an ciudha a’ stòradh iomradh air a’ bhrath seo. Tha an teachdaireachd fhèin air a stòradh ann an RAM no air diosc
Cho luath ‘s a bhios an neach-cleachdaidh deiseil airson teachdaireachd fhaighinn bhon ciudha, cruthaichidh am frithealaiche leth-bhreac den teachdaireachd tron cheangal agus cuiridh e
Bidh an neach-cleachdaidh a 'faighinn an teachdaireachd agus a' cur dearbhadh chun a 'bhròcair
Bidh am broker, nuair a gheibh e dearbhadh, a’ toirt air falbh leth-bhreac den teachdaireachd bhon ciudha. An uairsin cuir às do RAM agus diosc
RPC
phròiseas RPC (gairm modh-obrach iomallach) Tha e na bhunait airson cha mhòr a h-uile eadar-obrachadh leis an niuclas RabbitMQ. Mar eisimpleir, còmhraidhean tùsail mu theirmean an neach-dèiligidh le RabbitMQ, a 'sealltainn pròiseas sònraichte RPC. Nuair a bhios an t-sreath seo deiseil, RabbitMQ bidh e deiseil airson gabhail ri iarrtasan bhon neach-dèiligidh:
Cuideachd anns an t-sònrachadh AMQP faodaidh an dà chuid an neach-dèiligidh agus an fhrithealaiche òrdughan a thoirt seachad. Tha seo a 'ciallachadh gu bheil an neach-dèiligidh a' feitheamh gus conaltradh leis an fhrithealaiche. Is e òrdughan clasaichean agus modhan. Mar eisimpleir, Connection.Start - gairm modh Start clas Connection.
Ceangal agus sianalan
Airson iomlaid fiosrachaidh mar sin eadar teachdaiche agus frithealaiche, seanalan. Tha sianalan air an cruthachadh taobh a-staigh ceangal sònraichte. Tha gach sianal air leth bho sheanalan eile. Anns a’ chùis sioncronaich, chan eil e comasach an ath àithne a chuir an gnìomh gus am faighear freagairt.
Gus an urrainn dhut òrdughan a chuir ann an co-shìnte, feumaidh tu grunn shianalan fhosgladh. Bidh gach sianal a 'cruthachadh fa leth Erlang phròiseas. Faodaidh iomadh seanal a bhith aig aon cheangal (iomadachadh). Airson gach sianal tha cuid de structaran agus nithean mar chuimhneachan. Mar sin, mar as motha de shianalan a tha taobh a-staigh ceangal, bidh an Bidh RabbitMQ a’ cleachdadh barrachd cuimhne gus a leithid de cheangal a riaghladh.
Eisimpleir shìmplidh de bhith a 'cruthachadh ceangal agus sianal a' cleachdadh 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
}
Thathas a’ dì-mhisneachadh gu làidir ceangal ùr fhosgladh airson gach gnìomh mar seo bheir sin gu cosgaisean àrda. Bu chòir seanalan a bhith seasmhach cuideachd, ach tha mòran mhearachdan protocol ag adhbhrachadh gun dùin an t-sianal, agus mar sin faodaidh beatha an t-seanail a bhith nas giorra na beatha a’ cheangail.
Càite an cleachdar RabbitMQ?
Ann an co-theacsa microservices, tha am protocol AMQP agus a bhuileachadh ann an RabbitMQ gu tric air a chleachdadh airson eadar-obrachadh asyncronach eadar seirbheisean.
Ann an co-theacsa IIOT protocol AMQP agus a bhuileachadh ann an RabbitMQ air a chleachdadh airson iomlaid dàta eadar frithealaichean (server-server). Cleachd am plugan cuideachd Plugin MQTT RabbitMQ a tha na bhuileachadh air a’ phròtacal MQTT airson dàta a thar-chuir eadar sensor agus frithealaiche ann an àrainneachdan aig astar ìosal, àrd-latency (tha làn liosta de phròtacalan le taic air an liostadh aig làrach a ’phròiseict).
Anns an ath artaigil bidh sinn a 'tòiseachadh a' tuigsinn Exchanges ann am barrachd mionaideachd.