RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP

Barka da rana, Habr! Ina so in raba littafin karatu-littafin ilimin da na yi nasarar tattarawa a kai RabbitMQ kuma tattara cikin gajerun shawarwari da ƙarshe.

Abubuwan da ke ciki

  • RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP da RPC
  • RabbitMQ. Kashi na 2. Fahimtar Musanya
  • RabbitMQ. Kashi na 3. Fahimtar Layi da Dauri
  • RabbitMQ. Sashe na 4. Fahimtar menene saƙonni da firam ɗin
  • RabbitMQ. Sashe na 5: Bugawa da Ci Gaban Ayyukan Saƙo
  • RabbitMQ. Sashe na 6. Bayyani na Tarayya da Modulolin Shebur
  • RabbitMQ. Sashe na 7. Cikakken bayani game da Connection da Chanel
  • RabbitMQ. Sashe na 8. RabbitMQ a cikin NET
  • RabbitMQ. Sashe na 9. Sa Ido

A taƙaice game da AMQP

AMQP (Advanced Message Queuing Protocol) buɗaɗɗen yarjejeniya ce don isar da saƙon tsakanin abubuwan tsarin. Babban ra'ayin shi ne cewa ɗayan tsarin (ko aikace-aikace masu zaman kansu) na iya yin musayar saƙonni ta hanyar da ba ta dace ba ta hanyar dillali na AMQP, wanda ke yin tuƙi, mai yuwuwa ba da garantin isarwa, rarraba rafukan bayanai, da biyan kuɗi zuwa nau'ikan saƙon da ake so.

ПротокоР» AMQP ya gabatar da dabaru guda uku:

RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP

  • exchange (maganin musayar ko musayar) - ana aika saƙo zuwa gare shi. Wurin musanya rarraba sakon a cikin layi daya ko fiye. Ta hanyoyin saƙonni zuwa jerin gwano bisa ga mahaɗan da aka ƙirƙira (binding) tsakaninsa da jerin gwano
  • queue (layin layi) - tsarin bayanai akan faifai ko a cikin RAM wanda yana adana hanyoyin haɗi zuwa saƙonni kuma yana ba da kwafin saƙonni consumers (ga masu amfani)
  • binding (dauri) - ka'idar cewa ya gaya wa wurin musayar waɗanne jerin gwano ya kamata waɗannan saƙonnin su shiga

Yarjejeniyar tana gudana a saman TCP / IP.

A taƙaice game da Erlang

Lambar tushen aikin tana cikin ma'ajiyar a GitHub. Gine-gine RabbitMQ-uwar garken bisa erlang da BEAM.

Erlang kamfanin ya bunkasa Ericsson a tsakiyar 1980s a matsayin rarraba, rashin haƙuri, tsarin lokaci na ainihi don aikace-aikacen da ke buƙatar 99,999% uptime. Erlang ana amfani da su a masana'antu daban-daban da aikace-aikacen zamani, misali; WhatsApp. Kuna iya karanta ƙarin a cikin labarin Gine-ginen WhatsApp, wanda Facebook ya saya akan dala biliyan 19

A taƙaice game da RabbitMQ

RabbitMQ dillalin saƙo ne na buɗaɗɗen tushe. Yana tafiyar da saƙonni tare da duk ƙa'idodin ƙa'idodin ƙa'idar AMQP aka bayyana a cikin bayani dalla-dalla. RabbitMQ aiwatar da kari ga yarjejeniya AMQP.

Babban ra'ayin samfurin saƙon a RabbitMQ abu shine producer (Mawallafin) ba ya aika saƙonni kai tsaye zuwa jerin gwano. A gaskiya ma, kuma sau da yawa, mawallafin ba ya san ko za a isar da saƙon zuwa kowane jerin gwano kwata-kwata.

Madadin haka, mai wallafa zai iya aika saƙonni kawai zuwa musayar. A gefe guda, musayar yana karɓar saƙonni daga masu wallafawa, kuma a daya bangaren, yana aika su zuwa jerin gwano. Dole ne musanya ya san ainihin abin da zai yi da saƙon da yake karɓa. Shin ya kamata a ƙara shi zuwa takamaiman jerin gwano? Shin ya kamata a kara shi cikin layukan da yawa? Ko kuma a yi watsi da sakon.

RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP

Takaitaccen aiki RabbitMQ ana iya siffanta su kamar haka:

  1. Mai bugawa yana aika saƙo zuwa takamaiman musayar
  2. Musayar, bayan samun saƙo, ta tura shi zuwa layi ɗaya ko fiye bisa ga ƙa'idodin ɗaure tsakaninsa da layin.
  3. Layin yana adana bayanin wannan sakon. Ana adana saƙon da kansa a cikin RAM ko a faifai
  4. Da zarar mabukaci ya shirya don karɓar saƙo daga jerin gwano, uwar garken ya ƙirƙiri kwafin saƙon ta hanyar haɗin yanar gizo kuma ya aika.
  5. Mabukaci yana karɓar saƙon kuma ya aika da tabbaci ga dillali
  6. Dillali, da samun tabbaci, yana cire kwafin saƙon daga jerin gwano. Sannan yana gogewa daga RAM da faifai

CPR

aiwatar RPC (kiran hanya mai nisa) yana ƙarƙashin kusan dukkanin hulɗa tare da tsakiya RabbitMQ. Misali, tattaunawar farko game da sharuɗɗan abokin ciniki tare da RabbitMQ, yana nuna wani tsari RPC. Da zarar wannan jerin ya cika, RabbitMQ zai kasance a shirye don karɓar buƙatun daga abokin ciniki:

RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP

Hakanan a cikin ƙayyadaddun bayanai AMQP duka abokin ciniki da uwar garken suna iya ba da umarni. Wannan yana nufin cewa abokin ciniki yana jira don sadarwa tare da uwar garken. Umurnai darussa ne da hanyoyi. Misali, Connection.Start – hanyar kira Start aji Connection.

Haɗin kai da tashoshi

Don irin wannan musayar bayanai tsakanin abokin ciniki da uwar garken, tashoshi. Ana ƙirƙirar tashoshi a ciki takamaiman haɗi. Kowane tashoshi an keɓe shi daga wasu tashoshi. A cikin yanayin aiki tare, ba zai yiwu a aiwatar da umarni na gaba ba har sai an karɓi amsa.

Domin samun damar aika umarni a layi daya, dole ne ku buɗe tashoshi da yawa. Kowane tashoshi yana ƙirƙirar daban Erlang tsari. Haɗin kai ɗaya na iya samun tashoshi da yawa (multixing). Ga kowane tashoshi akwai wasu sifofi da abubuwa a cikin ƙwaƙwalwar ajiya. Saboda haka, yawancin tashoshi suna cikin haɗin gwiwa, da RabbitMQ yana amfani da ƙarin ƙwaƙwalwar ajiya don sarrafa irin wannan haɗin.

RabbitMQ. Part 1. Gabatarwa. Erlang, AMQP

Misali mai sauƙi na ƙirƙirar haɗi da tashoshi ta amfani da shi 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 
}

Bude sabon haɗin gwiwa don kowane aiki yana da ƙarfi sosai kamar wannan zai haifar da tsada mai tsada. Hakanan ya kamata tashoshi su kasance dagewa, amma yawancin kurakuran yarjejeniya suna haifar da rufe tashar, don haka rayuwar tashar na iya zama gajarta fiye da na haɗin.

Ina ake amfani da RabbitMQ?

A cikin mahallin microservices, yarjejeniya AMQP da aiwatar da shi a cikin RabbitMQ sau da yawa amfani da asynchronous hulda tsakanin ayyuka.

A cikin mahallin IIOT yarjejeniya AMQP da aiwatar da shi a cikin RabbitMQ ana amfani da su don musayar bayanai tsakanin sabar (uwar garken-uwar garken). Hakanan amfani da plugin MQTT Plugin RabbitMQ wanda shine aiwatar da yarjejeniya MQTT don watsa bayanai tsakanin firikwensin da uwar garken a cikin ƙananan sauri, mahalli masu tsayi (cikakkun jerin ka'idoji masu goyan baya an jera su a gidan yanar gizon aikin).

A cikin labarin na gaba za mu fara fahimtar Musanya dalla-dalla.

nassoshi

source: www.habr.com

Add a comment