RabbitMQ. Vaega 1. Folasaga. Erlang, AMQP

Manuia le aoauli, Habr! Ou te manaʻo e faʻasoa se tusi tusi-tusi o le malamalama na mafai ona ou aoina mai RabbitMQ ma faapuupuu i fautuaga ma faaiuga pupuu.

Lisi o Mataupu

  • RabbitMQ. Vaega 1. Folasaga. Erlang, AMQP ma le RPC
  • RabbitMQ. Vaega 2. Malamalama i Fetufaaiga
  • RabbitMQ. Vaega 3. Malamalama i Tulaga ma Nonoa
  • RabbitMQ. Vaega 4. Malamalama po o a savali ma faavaa
  • RabbitMQ. Vaega 5: Fa'asalalau Fe'au ma Fa'atinoga Fa'aaogāina
  • RabbitMQ. Vaega 6. Iloiloga o le Federation ma Suo modules
  • RabbitMQ. Vaega 7. Fa'amatalaga e uiga i So'oga ma Chanel
  • RabbitMQ. Vaega 8. RabbitMQ i le .NET
  • RabbitMQ. Vaega 9. Mata'ituina

Fa'apuupuu e uiga i le AMQP

AMQP (Advanced Message Queuing Protocol) o se faʻasalalauga tatala mo le tuʻuina atu o feʻau i le va o vaega o le polokalama. O le manatu autu e faapea o subsystems taʻitasi (poʻo talosaga tutoʻatasi) e mafai ona fesuiaʻi feʻau i se faiga faʻapitoa e ala i le AMQP broker, lea e faʻatinoina le taʻavale, atonu e faʻamaonia le tuʻuina atu, tufatufaina atu o faʻamaumauga, ma lesitala i ituaiga savali e manaʻomia.

Tulafono Faʻavae AMQP fa'ailoa mai manatu e tolu:

RabbitMQ. Vaega 1. Folasaga. Erlang, AMQP

  • exchange (fetufa'aiga po'o le fa'afesuia'iga) - e lafo atu i ai fe'au. Fetufaaiga tulaga tufaina savali i se tasi pe sili atu laina. O ia auala savali i se laina faʻavae i luga o fesoʻotaʻiga na faia (binding) i le va o ia ma le laina
  • queue (queue) - o se fausaga faʻamaumauga i luga o le tisiki poʻo le RAM lena teuina sootaga i savali ma tuuina atu kopi o savali consumers (i tagata fa'atau)
  • binding (fusi) - o se tulafono e faapea ta'u atu i le mea e fesuia'i ai le laina e tatau ona alu i ai nei fe'au

O loʻo taʻavale le protocol i luga TCP / IP.

Faapuupuu e uiga ia Erlang

O lo'o i totonu ole fale teu oloa ile GitHub. Fa'ataina RabbitMQ-server e fua i luga erlang ma BEAM.

Erlang atiae e le kamupani Ericsson i le ogatotonu o le 1980 e avea o se tufatufaina, fa'apalepale fa'aletonu, faiga moni-taimi mo talosaga mana'omia 99,999% uptime. Erlang fa'aaogaina i alamanuia eseese ma fa'aoga fa'aonaponei, eg. WhatsApp. E mafai ona e faitau atili i le tusiga WhatsApp architecture, lea na faʻatau e Facebook mo le $ 19 piliona

Fa'apuupuu e uiga i RabbitMQ

LapitiMQ ose faife'au puna'oa tatala. E fa'asalalauina fe'au i fa'avae uma o le protocol AMQP faamatalaina i auiliiliga. RabbitMQ fa'atino ma fa'aopoopo i le protocol AMQP.

Le manatu autu o le faʻataʻitaʻiga feʻau i RabbitMQ mea o le producer (fa'asalalau) e le lafo sa'o savali i le laina. O le mea moni, ma e masani lava, e le iloa e le tagata talaʻi pe o le a tuʻuina atu le feʻau i soʻo se laina.

Nai lo lena, e mafai e le tagata talaʻi ona auina atu feʻau i le fefaʻatauaʻiga. I le tasi itu, o le fefaʻatauaʻiga e maua ai feʻau mai tagata talaʻi, ma i le isi itu, e auina atu i latou i laina. E tatau ona iloa lelei e le fesuiaiga le mea e fai i le feʻau na te mauaina. E tatau ona fa'aopoopo i se laina fa'apitoa? E tatau ona fa'aopoopo i le tele o laina? Pe tatau foi ona le amanaiaina le savali.

RabbitMQ. Vaega 1. Folasaga. Erlang, AMQP

Galuega puupuu RabbitMQ e mafai ona faamatalaina e faapea:

  1. E auina atu e le tagata talaʻi se feʻau i se fefaʻatauaiga patino
  2. O se fesuiaiga, ina ua maua se feʻau, faʻafeiloaʻi i se tasi pe sili atu laina e tusa ai ma tulafono faʻavae i le va o le laina ma le laina.
  3. O lo'o teuina e le laina se fa'amatalaga i lenei fe'au. O le savali lava ia e teuina i le RAM poʻo luga ole disk
  4. O le taimi lava e sauni ai le tagata faʻatau e talia se feʻau mai le laina, e faia e le server se kopi o le feʻau e ala i le fesoʻotaʻiga ma auina atu.
  5. E maua e le tagata faʻatau le feʻau ma tuʻuina atu le faʻamaoniga i le tagata fai pisinisi
  6. O le tagata fai pisinisi, pe a maua le faʻamaoniga, aveese se kopi o le feʻau mai le laina. Ona tape lea mai le RAM ma le disk

RPC

Le faagasologa RPC (valaau mamao) e fa'avae toetoe lava o fegalegaleai uma ma le nucleus RabbitMQ. Mo se fa'ata'ita'iga, ulua'i talanoaga e uiga i aiaiga a le kalani ma RabbitMQ, fa'aalia se faiga fa'apitoa RPC. A mae'a loa lea fa'asologa, RabbitMQ o le a sauni e talia talosaga mai le kalani:

RabbitMQ. Vaega 1. Folasaga. Erlang, AMQP

Faʻapea foʻi i le faʻamatalaga AMQP e mafai e le kalani ma le server ona tu'uina atu ni fa'atonuga. O lona uiga o lo'o fa'atali le kalani e feso'ota'i ma le server. O poloaiga o vasega ma metotia. Faataitaiga, Connection.Start - auala valaau Start taʻiala Connection.

So'oga ma alavai

Mo ia fa'amatalaga fa'afesuia'i i le va o tagata o tausia ma le 'au'aunaga, alaata. Ua faia ala i totonu feso'ota'iga fa'apitoa. E vavae'ese ala ta'itasi mai isi alalaupapa. I le synchronous case, e le mafai ona faʻatino le isi poloaiga seʻi vagana ua maua se tali.

Ina ia mafai ona tuʻuina atu faʻatonuga tutusa, e tatau ona e tatalaina ni auala. O alalaupapa ta'itasi e faia ai se va'aiga eseese Erlang faiga. E tasi le feso'ota'iga e mafai ona tele auala (multiplexing). Mo auala taʻitasi o loʻo i ai ni fausaga ma mea faitino e manatua. O le mea lea, o le tele o auala o loʻo i totonu o se fesoʻotaʻiga, o le RabbitMQ fa'aoga tele le manatua e pulea sea sootaga.

RabbitMQ. Vaega 1. Folasaga. Erlang, AMQP

O se faʻataʻitaʻiga faigofie o le fatuina o se fesoʻotaʻiga ma auala faʻaoga 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 
}

O le tatalaina o se feso'ota'iga fou mo ta'aloga ta'itasi e matua fa'avaivai ona o lenei o le a taitai atu ai i tau maualuga. E tatau fo'i ona fa'aauau pea ala, ae o le tele o fa'aletonu fa'atulafono e mafua ai ona tapuni le alalaupapa, o lona uiga o le olaga o le ala e ono pupuu nai lo le feso'ota'iga.

O fea e fa'aoga ai RabbitMQ?

I le tulaga o microservices, o le protocol AMQP ma lona faatinoina i RabbitMQ masani ona faaaoga mo fegalegaleaiga asynchronous va o auaunaga.

I le talaaga IIOT maliega faʻavae AMQP ma lona faatinoina i RabbitMQ fa'aoga mo fefa'ataua'iga i le va o 'au'aunaga (server-server). Faʻaaoga foi le plugin MQTT Plugin RabbitMQ lea o se faatinoga o le protocol MQTT mo le lafoina o faʻamatalaga i le va o le masini ma le 'auʻaunaga i le maualalo-saoasaoa, maualuga-latency siosiomaga (o se lisi atoa o protocols lagolagoina o loʻo lisiina i upegatafa'ilagi o galuega).

I le isi mataupu o le a amata ona tatou malamalama i le Fetufaaiga i nisi auiliiliga.

mau

puna: www.habr.com

Faaopoopo i ai se faamatalaga