RabbitMQ. Fizarana 1. Fampidirana. Erlang, AMQP

Arahaba ry Habr! Te-hizara boky fianarana momba ny fahalalana azoko angonina aho RabbitMQ ary ampifanaraho ho tolo-kevitra sy fehin-kevitra fohy.

Lohahevitra misy

  • RabbitMQ. Fizarana 1. Fampidirana. Erlang, AMQP ary RPC
  • RabbitMQ. Fizarana 2. Fahatakarana ny fifanakalozana
  • RabbitMQ. Fizarana 3. Fahatakarana ny filaharana sy ny fatorana
  • RabbitMQ. Fizarana 4. Fahatakarana ny atao hoe hafatra sy frame
  • RabbitMQ. Fizarana 5: Famoahana Hafatra sy Fampiasana Fanjifana
  • RabbitMQ. Fizarana 6. Famerenana ny maody Federasiona sy angady
  • RabbitMQ. Fizarana 7. Ny antsipiriany momba ny fifandraisana sy ny Chanel
  • RabbitMQ. Fizarana 8. RabbitMQ ao amin'ny .NET
  • RabbitMQ. Fizarana 9. Fanaraha-maso

Fohy momba ny AMQP

AMQP (Advanced Message Queuing Protocol) dia protocole misokatra ho an'ny fandefasana hafatra eo amin'ny singa rafitra. Ny hevitra fototra dia ny hoe ny subsystems tsirairay (na ny fampiharana tsy miankina) dia afaka mifanakalo hafatra amin'ny fomba tsy misy dikany amin'ny alΓ lan'ny broker AMQP, izay manatanteraka fampandehanana, mety miantoka ny fandefasana, mizara data streams, ary misoratra anarana amin'ireo karazana hafatra irina.

fifanarahana AMQP mampiditra hevitra telo:

RabbitMQ. Fizarana 1. Fampidirana. Erlang, AMQP

  • exchange (toerana fifanakalozam-bola na fifanakalozam-bola) - alefa any aminy ny hafatra. Toerana fifanakalozana mizara hafatra amin'ny filaharana iray na maromaro. Izy mandefa hafatra mankany amin'ny filaharana mifototra amin'ny fifandraisana natao (binding) eo anelanelany sy ny filaharana
  • queue (filaharana) - rafitra angon-drakitra amin'ny kapila na amin'ny RAM izay mitahiry rohy mankany amin'ny hafatra ary manome dika mitovy amin'ny hafatra consumers (ho an'ny mpanjifa)
  • binding (mamatotra) - fitsipika izay milaza ny toerana fifanakalozana izay filaharana tokony hidiran'ireo hafatra ireo

Ny protocol dia mihazakazaka eo ambony TCP / IP.

Fohy momba an'i Erlang

Ny kaody loharanon'ny tetikasa dia ao amin'ny tahiry at GitHub. Architecture RabbitMQ-server miankina amin'ny erlang ary BEAM.

Erlang novolavolain’ny orinasa Ericsson tamin'ny tapaky ny taona 1980 ho toy ny rafitra mizara, mandefitra amin'ny fahadisoana, amin'ny fotoana tena izy ho an'ny fampiharana mitaky 99,999% ny ora fiasana. Erlang ampiasaina amin'ny indostria isan-karazany sy ny fampiharana maoderina, ohatra. WhatsApp. Afaka mamaky bebe kokoa ianao ao amin'ny lahatsoratra WhatsApp architecture, izay novidin'ny Facebook ho $19 lavitrisa

Fohy momba ny RabbitMQ

Ny bitro MQ dia mpikirakira hafatra open source. Izy io dia mandefa hafatra amin'ny fitsipika fototra rehetra amin'ny protocol AMQP voalaza ao amin'ny fepetra arahana. RabbitMQ mampihatra sy manampy ny protocol AMQP.

Ny hevi-dehibe amin'ny maodely hafatra amin'ny RabbitMQ zavatra izany producer (mpamoaka) dia tsy mandefa hafatra mivantana amin'ny filaharana. Raha ny marina, ary matetika, ny mpamoaka lahatsoratra dia tsy mahalala akory raha ho tonga any amin'ny filaharana ny hafatra.

Ny mpanonta kosa dia tsy afaka mandefa hafatra amin'ny fifanakalozana. Amin'ny lafiny iray, ny fifanakalozana dia mandray hafatra avy amin'ny mpamoaka, ary amin'ny lafiny iray, mandefa azy ireo amin'ny filaharana. Ny fifanakalozana dia tsy maintsy mahafantatra tsara ny tokony hatao amin'ny hafatra azony. Tokony ampiana filaharana manokana ve izany? Tokony ampiana filaharana maromaro ve izany? Na tsy tokony hiraharaha ny hafatra.

RabbitMQ. Fizarana 1. Fampidirana. Erlang, AMQP

Asa fohy RabbitMQ azo faritana toy izao:

  1. Mandefa hafatra amin'ny fifanakalozana manokana ny mpanonta
  2. Ny fifanakalozam-bola, rehefa nahazo hafatra, dia mandefa izany amin'ny filaharana iray na maromaro mifanaraka amin'ny fitsipika mifamatotra eo aminy sy ny filaharana.
  3. Ny filaharana dia mitahiry reference amin'ity hafatra ity. Ny hafatra mihitsy dia voatahiry ao amin'ny RAM na amin'ny kapila
  4. Rehefa vonona handray hafatra avy amin'ny filaharana ny mpanjifa dia mamorona dika mitovy amin'ny hafatra amin'ny alΓ lan'ny rohy ny mpizara ary mandefa
  5. Ny mpanjifa dia mandray ny hafatra ary mandefa fanamafisana amin'ny broker
  6. Ny broker, rehefa nahazo fanamafisana, dia manala ny dika mitovy amin'ny hafatra amin'ny filaharana. Avy eo dia mamafa ny RAM sy ny kapila

ny famelomana

dingana RPC (antsoina amin'ny fomba lavitra) Saika ny fifandraisana rehetra amin'ny nucleus no fototry ny fifandraisana rehetra RabbitMQ. Ohatra, fifanakalozan-kevitra voalohany momba ny fepetran'ny mpanjifa amin'ny RabbitMQ, mampiseho dingana iray RPC. Rehefa vita io filaharana io, RabbitMQ dia ho vonona ny hanaiky ny fangatahana avy amin'ny mpanjifa:

RabbitMQ. Fizarana 1. Fampidirana. Erlang, AMQP

Ao amin'ny specification ihany koa AMQP na ny mpanjifa na ny mpizara dia afaka mamoaka baiko. Midika izany fa miandry hifandray amin'ny mpizara ny mpanjifa. Ny baiko dia kilasy sy fomba. Ohatra, Connection.Start - fomba fiantsoana Start kilasy Connection.

Fifandraisana sy fantsona

Ho an'ny fifanakalozana vaovao toy izany eo amin'ny mpanjifa sy ny mpizara, fantsona. Ny fantsona dia noforonina ao anatiny fifandraisana manokana. Ny fantsona tsirairay dia mitokana amin'ny fantsona hafa. Amin'ny tranga synchronous, tsy azo atao ny manatanteraka ny baiko manaraka raha tsy misy valiny.

Mba hahafahana mandefa baiko mifanitsy dia mila manokatra fantsona maromaro ianao. Ny fantsona tsirairay dia mamorona manokana Erlang dingana. Ny fifandraisana iray dia mety manana fantsona maromaro (multiplexing). Ho an'ny fantsona tsirairay dia misy rafitra sy zavatra sasany ao anaty fitadidiana. Noho izany, ny bebe kokoa ny fantsona ao anatin'ny fifandraisana, ny Mampiasa fitadidiana bebe kokoa ny RabbitMQ mba hitantana fifandraisana toy izany.

RabbitMQ. Fizarana 1. Fampidirana. Erlang, AMQP

Ohatra tsotra amin'ny famoronana fifandraisana sy fampiasana fantsona 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 
}

Ny fanokafana fifandraisana vaovao ho an'ny fandidiana tsirairay dia tena kivy toy izany hitarika ho amin`ny lafo vidy. Tokony haharitra ihany koa ny fantsona, fa ny hadisoan'ny protocole maro no mahatonga ny fantsona hikatona, ka ny androm-piainan'ny fantsona dia mety ho fohy kokoa noho ny an'ny fifandraisana.

Aiza no ampiasaina ny RabbitMQ?

Ao amin'ny tontolon'ny microservices, ny protocol AMQP sy ny fampiharana azy ao RabbitMQ matetika ampiasaina amin'ny fifandraisana asynchronous eo anelanelan'ny serivisy.

Ao amin'ny contexte IIOT fifanarahana AMQP sy ny fampiharana azy ao RabbitMQ ampiasaina amin'ny fifanakalozana angona eo amin'ny mpizara (server-server). Ampiasao koa ny plugin MQTT Plugin RabbitMQ izay fampiharana ny protocole MQTT ho an'ny fampitana angon-drakitra eo amin'ny sensor sy ny mpizara amin'ny tontolo haingam-pandeha avo lenta (misy lisitra feno amin'ny protocols tohanana voatanisa ao amin'ny tranokalan'ny tetikasa).

Ao amin'ny lahatsoratra manaraka dia hanomboka hahatakatra bebe kokoa ny Exchanges.

soratra masina

Source: www.habr.com

Add a comment