Maayong hapon, Habr! Gusto nakong ipaambit ang usa ka libro nga pakisayran nga libro sa kahibalo nga akong nakolekta RabbitMQ ug mubu ngadto sa mugbo nga mga rekomendasyon ug mga konklusyon.
Mga sulud sa sulud
RabbitMQ. Bahin 1. Pasiuna. Erlang, AMQP ug RPC
RabbitMQ. Bahin 2. Pagsabot sa Pagbayloay
RabbitMQ. Bahin 3. Pagsabot sa mga Pila ug Pagbugkos
RabbitMQ. Bahin 4. Pagsabut unsa ang mga mensahe ug mga frame
RabbitMQ. Bahin 5: Pagmantala ug Pagkonsumo sa Pagganap sa Mensahe
RabbitMQ. Bahin 6. Kinatibuk-ang Pagtan-aw sa Federation ug Mga Module sa Pala
RabbitMQ. Bahin 7. Mga Detalye bahin sa Koneksyon ug Chanel
RabbitMQ. Bahin 8. RabbitMQ sa .NET
RabbitMQ. Bahin 9. Pagmonitor
Sa mubo bahin sa AMQP
Ang AMQP (Advanced Message Queuing Protocol) usa ka bukas nga protocol alang sa pagpasa sa mga mensahe tali sa mga sangkap sa sistema. Ang sukaranan nga ideya mao nga ang indibidwal nga mga subsystem (o independente nga mga aplikasyon) mahimong magbinayloay sa mga mensahe sa usa ka arbitraryong paagi pinaagi sa usa ka AMQP broker, nga nagpahigayon sa pagruta, posible nga garantiya sa pagpadala, pag-apod-apod sa mga sapa sa datos, ug pag-subscribe sa gusto nga mga tipo sa mensahe.
Protokol AMQP nagpaila sa tulo ka mga konsepto:
exchange (exchange point o exchange) - ang mga mensahe gipadala niini. Ibaylo nga punto nag-apod-apod sa mensahe sa usa o daghang pila. Siya rota sa mga mensahe ngadto sa usa ka pila base sa gibuhat nga mga link (binding) tali niya ug sa pila
queue (pila) - usa ka istruktura sa datos sa disk o sa RAM nga nagtipig og mga link sa mga mensahe ug naghatag og mga kopya sa mga mensahe consumers (sa mga konsumidor)
binding (nagbugkos) - usa ka lagda nga nagsulti sa exchange point kung asa nga pila kini nga mga mensahe moadto
Ang source code sa proyekto anaa sa repository sa GitHub. Arkitektura RabbitMQ-server base sa erlang ug BEAM.
Erlang gipalambo sa kompanya Ericsson sa tunga-tunga sa 1980s isip usa ka gipang-apod-apod, fault-tolerant, real-time nga sistema alang sa mga aplikasyon nga nagkinahanglan og 99,999% nga uptime. Erlang gigamit sa lain-laing mga industriya ug modernong mga aplikasyon, e.g. WhatsApp. Mahimo nimong mabasa ang dugang sa artikulo Ang arkitektura sa WhatsApp, nga gipalit sa Facebook sa kantidad nga $19 bilyon
Sa mubo bahin sa RabbitMQ
RabbitMQ mao ang usa ka open source nga mensahe broker. Gi-ruta niini ang mga mensahe sa tanan nga sukaranan nga mga prinsipyo sa protocol AMQP gihulagway sa mga detalye. RabbitMQ nagpatuman ug nagdugang sa protocol AMQP.
Ang panguna nga ideya sa modelo sa pagmemensahe sa RabbitMQ butang mao ang producer (magmantala) dili magpadala sa mga mensahe direkta sa pila. Sa tinuud, ug sa kasagaran, ang magmamantala wala gani mahibal-an kung ang mensahe ipadala sa bisan unsang pila.
Hinuon, ang magmamantala mahimo ra magpadala mga mensahe sa pagbinayloay. Sa usa ka bahin, ang pagbinayloay nakadawat mga mensahe gikan sa mga magmamantala, ug sa laing bahin, kini nagpadala kanila sa mga pila. Ang pagbinayloay kinahanglan mahibal-an kung unsa ang buhaton sa mensahe nga nadawat niini. Kinahanglan ba kini idugang sa usa ka piho nga pila? Kinahanglan ba kini idugang sa daghang mga pila? O ang mensahe kinahanglang ibaliwala.
Mubo nga trabaho RabbitMQ mahimong gihulagway sa mosunod:
Ang magmamantala nagpadala ug mensahe sa usa ka espesipikong pagbinayloay
Ang usa ka pagbinayloay, nga nakadawat usa ka mensahe, nag-ruta niini sa usa o daghan pa nga mga pila uyon sa mga nagbugkos nga mga lagda tali niini ug sa pila.
Ang pila nagtipig usa ka pakisayran sa kini nga mensahe. Ang mensahe mismo gitipigan sa RAM o sa disk
Kung ang konsumedor andam na nga makadawat usa ka mensahe gikan sa pila, ang server maghimo usa ka kopya sa mensahe pinaagi sa link ug ipadala
Ang konsumidor nakadawat sa mensahe ug nagpadala sa kumpirmasyon sa broker
Ang broker, sa dihang nakadawat og kumpirmasyon, nagtangtang sa kopya sa mensahe gikan sa pila. Unya tangtangon gikan sa RAM ug disk
CPR
proseso RPC (remote procedure call) nagpailalom sa halos tanang interaksyon sa nucleus RabbitMQ. Pananglitan, ang mga inisyal nga diskusyon bahin sa mga termino sa kliyente sa RabbitMQ, nagpakita sa usa ka piho nga proseso RPC. Kung nahuman na kini nga pagkasunod-sunod, RabbitMQ andam sa pagdawat sa mga hangyo gikan sa kliyente:
Usab sa espesipikasyon AMQP ang kliyente ug server mahimong mag-isyu ug mga mando. Kini nagpasabot nga ang kliyente naghulat sa pagpakigsulti sa server. Ang mga sugo kay mga klase ug pamaagi. Pananglitan, Connection.Start - tawag sa pamaagi Start grade Connection.
Koneksyon ug mga kanal
Alang sa ingon nga pagbinayloay sa kasayuran tali sa kliyente ug server, mga agianan. Ang mga channel gihimo sa sulod espesipikong koneksyon. Ang matag channel nahimulag gikan sa ubang mga channel. Sa dungan nga kaso, dili posible nga ipatuman ang sunod nga mando hangtod nga madawat ang tubag.
Aron makahimo sa pagpadala sa mga sugo nga managsama, kinahanglan nimo nga ablihan ang daghang mga channel. Ang matag channel nagmugna og bulag Erlang proseso. Ang usa ka koneksyon mahimong adunay daghang mga channel (multiplexing). Alang sa matag channel adunay piho nga mga istruktura ug mga butang sa memorya. Busa, ang mas daghang mga kanal adunay sulod sa usa ka koneksyon, ang Ang RabbitMQ naggamit og dugang nga memorya sa pagdumala sa ingon nga koneksyon.
Usa ka yano nga pananglitan sa paghimo og koneksyon ug paggamit sa channel RabbitMQ.Kliyente:
Ang pag-abli sa usa ka bag-ong koneksyon alang sa matag operasyon kusganong nawad-an sa kadasig sama niini mosangpot sa taas nga gasto. Ang mga channel kinahanglan usab nga magpadayon, apan daghang mga sayup sa protocol ang hinungdan sa pagsira sa channel, mao nga ang kinabuhi sa channel mahimong mas mubo kaysa sa koneksyon.
Asa gigamit ang RabbitMQ?
Sa konteksto sa microservices, ang protocol AMQP ug ang pagpatuman niini sa RabbitMQ sagad gigamit alang sa asynchronous nga interaksyon tali sa mga serbisyo.
Sa konteksto IIOT protokol AMQP ug ang pagpatuman niini sa RabbitMQ gigamit alang sa data exchange tali sa mga server (server-server). Gamita usab ang plugin MQTT Plugin RabbitMQ nga usa ka pagpatuman sa protocol MQTT alang sa pagpadala sa data tali sa sensor ug server sa ubos nga tulin, taas nga latency nga mga palibot (usa ka kompleto nga listahan sa gisuportahan nga mga protocol gilista sa website sa proyekto).
Sa sunod nga artikulo magsugod kita sa pagsabut sa mga Pagbinayloay sa mas detalyado.