Úvod
Každý zkušený správce systému ví, že někdy je odkládání úkolů na později velmi užitečné a dokonce nutné, zvláště pokud je úkol časově náročný a spotřebovává mnoho zdrojů. K tomu potřebujete zprostředkovatele zpráv – program, který přijímá zprávy (úkoly) od různých odesílatelů (webových aplikací), vytváří z nich frontu a následně je rozděluje mezi pracovní procesy.
Tento článek se zaměří na projekt RabbitMQ – spoustu otevřených aplikací pro implementaci funkcí zprostředkovatele zpráv, který implementuje Advanced Message Queuing Protocol (AMQP).
Zprávy, zprostředkovatelé zpráv a sekvence
Zasílání zpráv je způsob výměny určitých dat mezi procesy, aplikacemi, virtuálními a fyzickými servery. Tyto zprávy, které provádějí některé výpočetní funkce, mohou obsahovat téměř cokoli, od prostého textu až po velké bloky binárních dat. Pro správné provedení tohoto procesu je zapotřebí program třetí strany – to je zprostředkovatel zpráv.
Zprostředkovatel zpráv je obvykle skupina aplikací, jejichž každá jednotlivá součást je navržena tak, aby zpracovala určitou fázi zasílání zpráv:přijmout zprávu, definovat ji ve frontě a přenést zprávu do pracovního procesu odpovědného za její provedení. Často se místo plnohodnotných řešení používají programy, které pro tuto práci původně nebyly určeny (databáze, cron daemon apod.); jednoduše vytvoří frontu zpráv (která technicky představuje nekonečné buffery) a poté je předají k automatickému zpracování nebo k dotazování.
Proč potřebujete zprostředkovatele zpráv?
Zprostředkovatelé zpráv fungují jako prostředník mezi různými službami (webovými aplikacemi). Výrazně snižují zátěž a zkracují dobu doručení zpráv, protože úlohy, jejichž zpracování nějakou dobu trvá, jsou rozděleny mezi pracovní postupy určené výhradně k provádění těchto úloh. Poskytují spolehlivý kanál pro přenos zpráv z jedné aplikace do druhé.
Kdy potřebujete zprostředkovatele zpráv?
Obecně platí, že základní funkce zprostředkovatelů zpráv pokrývají mnoho oblastí, včetně, ale nejen:
- Snížení doby odezvy webových serverů na požadavky (protože nemusí provádět úkoly náročné na zdroje).
- Distribuce zprávy několika příjemcům (například pro zpracování).
- Uživatelé offline mohou později načíst všechna data.
- Zcela asynchronní režim provozu se serverovými systémy.
- Řazení a prioritizace úkolů;
- Vyrovnávání zátěže mezi pracovními procesy.
- Zlepšení spolehlivosti a provozuschopnosti aplikace.
A mnohem více.
Krátká recenze RabbitMQ
RabbitMQ (vydáno v roce 2007) je jedním z nejpopulárnějších zprostředkovatelů zpráv s otevřeným zdrojovým kódem licencovaným pod licencí Mozilla Public License v1.1 jako implementace protokolu Advanced Message Queuing Protocol. RabbitMQ, navržený v Erlangu, se poměrně snadno používá a instaluje.
Jak RabbitMQ funguje?
RabbitMQ poskytuje rozhraní, které spojuje odesílatele (Publishers) s příjemci (Consumers) pomocí brokera, který distribuuje data v příslušných seznamech – Message Queues.
APPLICATION EXCHANGE TASK LIST WORKER [DATA] -------> [DATA] ------> [D]+[D][D][D] ---> [DATA] Publisher EXCHANGE Queue Consumer
Výhody RabbitMQ
Na rozdíl od jiných řešení je RabbitMQ plnohodnotným aplikačním zásobníkem a ne jednoduchým základem pro aplikaci dle vašeho výběru. Poskytuje všechny potřebné nástroje v komplexu.
Krátká recenze AMQP
AMQP (Advanced Message Queuing Protocol) je rozšířený otevřený standard pro distribuci a přenos zpráv. Jako protokol a standard vytváří společný rámec pro interakci různých aplikací a zprostředkovatelů zpráv a odstraňuje problémy způsobené návrhem jednotlivých programů.
Instalace RabbitMQ
Balíčky RabbitMQ poskytují CentOS / RHEL a Ubuntu / Debian. Takové balíčky jsou však zpravidla zastaralé. Proto se doporučuje stáhnout a nainstalovat RabbitMQ ručně.
Poznámka :Doporučuje se, aby byly všechny ruční akce prováděny na novém serveru, aby nedošlo k narušení provozu dříve spuštěných aplikací a nedošlo k selhání konfigurace.Nainstalujte RabbitMQ v CentOS/RHEL
Než začnete instalovat RabbitMQ, musíte nainstalovat závislosti programu, z nichž jedna je Erlang. Nejprve je však nutné aktualizovat systém a standardní aplikace; Chcete-li to provést, spusťte:
# yum -y update
Pro instalaci Erlang můžete použít:
# Add and enable relevant application repositories: # Note: We are also enabling third party remi package repositories. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm # Finally, download and install Erlang: yum install -y erlang
nyní můžete nainstalovat RabbitMQ:
# Download the latest RabbitMQ package using wget: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm # Add the necessary keys for verification: rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc # Install the .RPM package using YUM: yum install rabbitmq-server-3.2.2-1.noarch.rpm
Nainstalujte RabbitMQ na Ubuntu
Proces instalace RabbitMQ v Ubuntu/Debianu je téměř stejný jako na CentOS. Nejprve musíte aktualizovat software:
# apt-get update # apt-get -y upgrade
Přidat klíč rabbitmq:
# curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
Proveďte aktualizaci balíčku:
# apt-get update
Nyní můžete nainstalovat rabbitmq RabbitMQ:
$ sudo apt-get install rabbitmq-server
Správa RabbitMQ
Jak již bylo zmíněno, broker RabbitMQ se velmi snadno používá. Tato část obsahuje pokyny pro správu a konfiguraci RabbitMQ.
Povolení konzoly pro správu
RabbitMQ Management Console (RabbitMQ Management Console) je jedním z dostupných zásuvných modulů, které vám umožňují sledovat procesy na RabbitMQ serveru prostřednictvím grafického webového uživatelského rozhraní.
Pomocí této konzole můžete:
- spravovat zasílání zpráv, fronty zpráv, připojení a uživatele;
- Sledujte fronty zpráv, připojení a sazby za zprávy
- Posílat a přijímat zprávy;
- Sledování procesů Erlang a využití paměti;
A mnohem více.
Chcete-li povolit správu RabbitMQ, spusťte příkaz:
$ sudo rabbitmq-plugins enable rabbitmq_management
Nyní můžete otevřít konzolu pro správu v prohlížeči na adrese your_ip:15672.
Default rabbitmq user – guest. Default rabbitmq password – guest
Správa RabbitMQ v CentOS/RHEL
Chcete-li povolit automatické spuštění RabbitMQ, musíte spustit:
# chkconfig rabbitmq-server on
Chcete-li spustit, zastavit, restartovat a zkontrolovat stav, použijte níže uvedené příkazy:
# start: /sbin/service rabbitmq-server start # stop: /sbin/service rabbitmq-server stop # restart: /sbin/service rabbitmq-server restart # status: /sbin/service rabbitmq-server status
Správa RabbitMQ v Ubuntu/Debian
Chcete-li spustit, zastavit, restartovat a zkontrolovat stav rabbitmq na Ubuntu/Debianu, použijte níže uvedené příkazy:
# start: service rabbitmq-server start # stop: service rabbitmq-server stop # restart: service rabbitmq-server restart # status: service rabbitmq-server status
Nyní je váš server rabbitmq připraven k použití!
Konfigurace RabbitMQ
RabbitMQ přichází se standardním nastavením. Obecně jsou docela spolehlivé a nevyžadují žádné úpravy.