RabbitMQ. Mahele 1. Hoolauna. Erlang, AMQP

Aloha ahiahi, Habr! Makemake au e kaʻana like i kahi puke ʻike puke o ka ʻike i hiki iaʻu ke ʻohi RabbitMQ a hoʻopili i nā manaʻo pōkole a me nā hopena.

Ka papa o nā mea

  • RabbitMQ. Mahele 1. Hoolauna. ʻO Erlang, AMQP a me RPC
  • RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi
  • RabbitMQ. Māhele 3. Ka Hoʻomaopopo ʻana i nā Līlani a me nā Paʻa
  • RabbitMQ. Māhele 4. Ka hoʻomaopopo ʻana i ke ʻano o nā memo a me nā kiʻi
  • RabbitMQ. Mahele 5: Hoʻopuka ʻana i nā leka a me nā hana hoʻohana
  • RabbitMQ. Mahele 6. Nānā i nā modules Federation a me Shovel
  • RabbitMQ. Mahele 7. Nā kikoʻī e pili ana i ka pilina a me Chanel
  • RabbitMQ. Mahele 8. RabbitMQ ma .NET
  • RabbitMQ. Mahele 9. Nānā

ʻO ka pōkole e pili ana iā AMQP

ʻO AMQP (Advanced Message Queuing Protocol) kahi protocol wehe no ka hoʻouna ʻana i nā leka ma waena o nā ʻāpana ʻōnaehana. ʻO ka manaʻo maʻamau, hiki i nā subsystems (a i ʻole nā ​​noi kūʻokoʻa) ke hoʻololi i nā memo ma ke ʻano kūʻokoʻa ma o kahi broker AMQP, e hana ana i ke ala ala, e hōʻoiaʻiʻo paha i ka lawe ʻana, e puʻunaue i nā kahawai ʻikepili, a kau inoa i nā ʻano memo i makemake ʻia.

Pūnaewele AMQP hoʻolauna i ʻekolu manaʻo:

RabbitMQ. Mahele 1. Hoolauna. Erlang, AMQP

  • exchange (wahi hoʻololi a hoʻololi paha) - hoʻouna ʻia nā memo iā ia. Lae hoololi hoʻolaha i ka leka i hoʻokahi a ʻoi aku paha nā pila. ʻO ia alai i nā memo i kahi pila ma muli o nā pilina i hana ʻia (binding) ma waena ona a me ka laina
  • queue (queue) - kahi hoʻolālā ʻikepili ma ka disk a i ʻole RAM kēlā mālama i nā loulou i nā memo a hāʻawi i nā kope o nā memo consumers (i nā mea kūʻai)
  • binding (ka hoʻopaʻa ʻana) - he lula e haʻi i ka wahi hoʻololi i ka laina e komo ai kēia mau memo

Holo ka protocol ma luna TCP / IP.

E pili ana iā Erlang

Aia ke code kumu o ka papahana ma ka waihona ma GitHub. Hoʻolālā RabbitMQ-server ma muli o ʻO Erlang a me BEAM.

Erlang hoʻomohala ʻia e ka hui Ericsson i ka waena o 1980s ma ke ʻano he ʻōnaehana hoʻolaha, hoʻomanawanui hewa, ʻōnaehana manawa maoli no nā noi e koi ana i ka 99,999% uptime. Erlang hoʻohana ʻia i nā ʻoihana like ʻole a me nā noi hou, e.g. WhatsApp. Hiki iā ʻoe ke heluhelu hou aku ma ka ʻatikala ʻO WhatsApp architecture, a Facebook i kūʻai ai no $ 19 biliona

ʻO ka pōkole e pili ana iā RabbitMQ

ʻO RabbitMQ he mea hoʻolaha memo open source. Hoʻouna ʻo ia i nā memo ma nā loina kumu a pau o ka protocol AMQP wehewehe ʻia ma hoakaka. RabbitMQ hoʻokō a hoʻohui i ka protocol AMQP.

ʻO ka manaʻo nui o ke kumu hoʻohālike i RabbitMQ mea he producer (mea hoʻopuka) ʻaʻole hoʻouna pololei i nā memo i ka pila. ʻOiaʻiʻo, a pinepine, ʻaʻole ʻike ka mea hoʻopuka inā e hāʻawi ʻia ka leka i kekahi pila.

Akā, hiki i ka mea hoʻopuka ke hoʻouna wale i nā memo i ka hoʻololi. Ma kekahiʻaoʻao, loaʻa ka hoʻololi i nā leka mai nā mea hoʻopuka, a ma kekahiʻaoʻao, hoʻouna iā lākou i nā queues. Pono ka hoʻololi e ʻike pono i ka mea e hana ai me ka memo i loaʻa iā ia. Pono e hoʻohui ʻia i kahi pila kikoʻī? Pono e hoʻohui ʻia i nā pila he nui? A i ʻole e mālama ʻia ka leka.

RabbitMQ. Mahele 1. Hoolauna. Erlang, AMQP

Hana pōkole RabbitMQ hiki ke wehewehe penei:

  1. Hoʻouna ka mea hoʻopuka i kahi leka i kahi hoʻololi kikoʻī
  2. ʻO kahi hoʻololi, i ka loaʻa ʻana o kahi memo, e alakaʻi iā ia i hoʻokahi a ʻoi aku paha nā laina e like me nā lula paʻa ma waena o ia a me ka pila.
  3. Mālama ka queue i kahi kuhikuhi i kēia memo. Mālama ʻia ka memo ma RAM a i ʻole ma ka disk
  4. Ke mākaukau ka mea kūʻai aku e loaʻa i kahi leka mai ka pila, hana ke kikowaena i kope o ka leka ma o ka loulou a hoʻouna
  5. Loaʻa ka mea kūʻai i ka leka a hoʻouna i ka hōʻoia i ka mea hoʻolimalima
  6. ʻO ka mea hoʻolimalima, i ka loaʻa ʻana o ka hōʻoia, e wehe i kahi kope o ka leka mai ka pila. A laila holoi ʻia mai ka RAM a me ka disk

Ka RPC

kaʻina RPC (kahea kaʻina hana mamao) ma lalo o nā pilina a pau me ka nucleus RabbitMQ. No ka laʻana, nā kūkākūkā mua e pili ana i nā ʻōlelo a ka mea kūʻai aku me RabbitMQ, hōʻike i kekahi kaʻina hana RPC. Pau kēia kaʻina, RabbitMQ e mākaukau e ʻae i nā noi mai ka mea kūʻai mai:

RabbitMQ. Mahele 1. Hoolauna. Erlang, AMQP

Eia kekahi ma ka kikoʻī AMQP hiki i ka mea kūʻai a me ke kikowaena ke hoʻopuka i nā kauoha. ʻO ke ʻano kēia e kali ana ka mea kūʻai aku e kamaʻilio me ke kikowaena. ʻO nā kauoha nā papa a me nā ʻano. ʻo kahi laʻana, Connection.Start – kahea ala Start keka Connection.

Hoʻohui a me nā kahawai

No kēlā hoʻololi ʻike ma waena o ka mea kūʻai aku a me ke kikowaena, nā kahawai. Hoʻokumu ʻia nā kaha i loko pili pono. Hoʻokaʻawale ʻia kēlā me kēia ala mai nā ala ʻē aʻe. Ma ka hihia synchronous, ʻaʻole hiki ke hoʻokō i ke kauoha aʻe a hiki i ka loaʻa ʻana o kahi pane.

I mea e hiki ai ke hoʻouna i nā kauoha i ka like, pono ʻoe e wehe i kekahi mau kahawai. Hoʻokumu kēlā me kēia channel i kahi kaʻawale Erlang kaʻina hana. Hiki ke loaʻa nā ala he nui i hoʻokahi pilina (ka hoʻonui ʻana). No kēlā me kēia kanal aia kekahi mau hale a me nā mea i ka hoʻomanaʻo. No laila, ʻoi aku ka nui o nā kahawai i loko o kahi pilina, ʻo ka Hoʻohana ʻo RabbitMQ i ka hoʻomanaʻo hou aku e hooponopono ia pili.

RabbitMQ. Mahele 1. Hoolauna. Erlang, AMQP

He laʻana maʻalahi o ka hana ʻana i kahi pilina a me ka hoʻohana ʻana 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 ka wehe ʻana i kahi pilina hou no kēlā me kēia hana ʻaʻole ikaika e like me kēia e alakaʻi i nā kumukūʻai kiʻekiʻe. Pono nō hoʻi e hoʻomau i nā ala, akā nui nā hewa protocol e pani ai ke kahawai, no laila ʻoi aku ka pōkole o ke ola o ke kahawai ma mua o ka pili.

Ma hea kahi i hoʻohana ʻia ai ʻo RabbitMQ?

Ma ka pōʻaiapili o nā microservices, ka protocol AMQP a me kona hoʻokō ʻana ma RabbitMQ hoʻohana pinepine ʻia no launa like ole ma waena o nā lawelawe.

Ma ka pōʻaiapili IIOT protocol AMQP a me kona hoʻokō ʻana ma RabbitMQ hoʻohana ʻia no ka hoʻololi ʻikepili ma waena o nā kikowaena (server-server). E hoʻohana pū i ka plugin MQTT Plugin RabbitMQ ʻo ia kahi hoʻokō o ka protocol MQTT no ka hoʻouna ʻana i ka ʻikepili ma waena o ka sensor a me ke kikowaena ma nā wahi haʻahaʻa haʻahaʻa a me ka latency kiʻekiʻe (kahi papa inoa piha o nā protocol i kākoʻo ʻia ma pūnaewele papahana).

Ma ka ʻatikala aʻe e hoʻomaka mākou e hoʻomaopopo i nā Exchange i nā kikoʻī hou aku.

kūmole

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka