RabbitMQ обяснено за 5 минути или по-малко

Днес ще видим как да ускорите времето за зареждане на вашите страници, като изпълните най-тежката обработка асинхронно, като всичко се управлява много лесно, благодарение на RabbitMQ.

Стабилността и скоростта на приложението или уебсайта със сигурност са сред най-важните фактори за потребителите. Кой никога не е напускал сайт, преди дори да е видял първата страница, защото е отнело твърде много време?

Какво е RabbitMQ

RabbitMQ е разпределен и мащабируем брокер за съобщения с отворен код, който служи като посредник за ефективна комуникация между производители и потребители.

RabbitMQ внедрява протокола за съобщения на приложния слой AMQP, който е фокусиран върху комуникирането на асинхронни съобщения с гаранция за доставка чрез потвърждения за получаване на съобщения от брокера до производителя и от потребителите до производителя.

Как работи RabbitHQ

По опростен начин RabbitMQ дефинира опашки, които ще съхраняват съобщенията, изпратени от производителите, докато използващите приложения не получат съобщението и го обработят. Тя ни позволява да проектираме и внедряваме разпределени системи, в които системата е разделена на независими модули, които комуникират помежду си чрез съобщения.

Както всяка комуникация, имаме нужда от производител, съобщение и получател. В средата на тортата е RabbitMQ, което би било мястото, където съобщението чака получателя.

Нека разберем по-добре как работи, като знаем видовете обмен, представляващ обмен на съобщения.

Видове обмен

Чрез борси, когато изпратим съобщение чрез RabbitMQ, ние не го изпращаме директно на опашка; за да могат други системи да го прочетат, ние го изпращаме до обмен, който отговаря за препращането на съобщения към различни опашки.

Кредит за изображение: CloudAQMP

Видовете обмен са Директен, Fanout, Тема и Читатели.

Директен обмен

Да предположим, че един производител трябва да изпрати съобщение за потвърждение на покупката до трима потребители. Тоест системата трябва да комуникира с три други различни системи, за да направи покупката.

Тъй като RabbitMQ изпраща съобщението отделно до всяка опашка, има импулс, за да накарате тези други системи да получат съобщението директно.

Обикновено обменът препраща съобщението към опашките, но често не искаме нашите съобщения да се изпращат до всички опашки. Следователно има няколко условия, които можем да приложим, за да работи обменът.

  Как да хакнете своя Wii U, за да стартирате домашни игри и приложения

Така че вашето съобщение може да бъде изпратено само до един потребител; вместо да се изпраща на всички.

Ключ за обвързване: За да свържете опашка към обмен, трябва да създадете свързване, връзка между опашка и обмен, като конектор.

Ключ за маршрутизиране: В това обвързване можем също така да създадем елемент, наречен ключ за маршрутизиране, който с други думи е ключ за препращане на нашите съобщения към определена опашка.

Ако имате ключ за маршрутизиране X, ключ за маршрутизиране Y и ключ за маршрутизиране Z, съобщението с ключ за маршрутизиране Y, например, ще премине през опашка Y и ще бъде доставено директно на потребителя, който сте определили да получи съобщението.

По този начин можем да имаме няколко опашки, свързани с една борса, но в същото време те също могат да имат различни взаимоотношения с борсите, използвайки ключовете за маршрутизиране.

Размяна на Fanout

Когато съобщението се изпрати до борсата, то се изпраща до всички опашки, свързани с нея. Така че, ако имате 10 опашки, свързани към fanout exchange, всички опашки ще получат изпратеното съобщение.

Обмен на теми

Това е един от най-гъвкавите обмени, който ни позволява да изпращаме съобщения според темата. И въз основа на начина, по който именувате ключовете за маршрутизиране, е възможно да създадете модели на правила и връзки между системите.

Например: ключ за маршрутизиране (x.*); ключ за маршрутизиране (*.z); ключ за маршрутизиране (*.y.*).

Какво е AQMP в RabbitMQ

AMQP (Advanced Message Queuing Protocol) е отворен протокол за съобщения, използван за дефиниране на транспортирането на съобщения между множество приложения. Той е подобен на протоколите HTTP и TCP по това, че е протокол на ниво кабел, с изключение на това, че позволява асинхронен транспорт.

RabbitMQ избра да внедри AMQP по няколко причини. Първият е, че този протокол е описан като стандарт за междинен софтуер, за разлика от JMS, който дефинира API.

Международен консорциум, включващ големи компании като Red Hat, Cisco Systems и Microsoft, написа тази AMQP спецификация. Второто е оперативната съвместимост на този протокол, който позволява на всяко приложение, прилагащо AMQP, да комуникира с AMQP брокер.

AMQP не е единственият протокол, използван от RabbitMQ. Изображението по-долу представя всички протоколи, езици и API, внедрени и/или поддържани от RabbitMQ.

  Как да активирате автоматично режим на ниска мощност на iPhone

Най-добри характеристики на RabbitMQ

Освен че позволява интегрирането на различни приложения чрез съобщения асинхронно и от различни местоположения, RabbitMQ ни предлага и други функции, които го правят много популярен в света на брокерите за съобщения:

Надеждно съхранение

RabbitMQ включва няколко функции, които му позволяват да гарантира доставка на съобщения. Сред тях той осигурява съхранение, когато никой потребител не може да получи съобщението. Той позволява на потребителите да приемат доставката на съобщението, за да се уверят, че то е обработено успешно.

Ако обработката е неуспешна, RabbitMQ позволява съобщението да бъде поставено отново в опашката, за да бъде използвано от различен екземпляр на потребителя или да бъде обработено отново от същия потребител, който първоначално се е провалил, когато се възстанови.

RabbitMQ също така гарантира реда на доставка на съобщенията; тоест, те се консумират в същия ред, в който са пристигнали в опашките на RabbitMQ.

Създаване на клъстери

Въпреки че RabbitMQ осигурява страхотна производителност чрез обработка на хиляди съобщения в секунда, понякога трябва да може да обработва по-голям брой съобщения, без това да повлияе на производителността на приложението.

За тази цел RabbitMQ позволява създаването на клъстери за хоризонтално мащабиране на решението, което е прозрачно както за производителите, така и за потребителите.

Високодостъпни опашки

В RabbitMQ опашките могат да бъдат копирани в множество възли в клъстер, като се гарантира, че в случай на повреда на възел или прекъсване, брокерът може да продължи да получава съобщения от производителите и да ги доставя на подходящите потребители.

Гъвкаво маршрутизиране

В RabbitMQ могат да се дефинират гъвкави правила за маршрутизиране, дори следвайки определен модел, за маршрутизиране на съобщения между борси и опашки чрез свързвания.

Поддръжка на множество протоколи

Освен че поддържа протокола AMQP, RabbitMQ поддържа STOMP, MQTT и HTTP чрез добавки. Той също така включва механизми за удостоверяване и контрол на достъпа за компонентите на всеки брокер.

Реални случаи на използване на RabbitMQ

Най-важните случаи на използване на RabbitMQ правят възможна гаранцията за асинхронност между приложенията, намаляване на свързването между приложенията, разпространение на предупреждения и контролиране на опашката от задачи във фонов режим.

Въпреки това практическите случаи на използване на RabbitMQ са в електронната търговия, където t се използва за манипулиране, обработка и препращане на вашите поръчки за продажба към системи в други сектори, като дистрибуция и издаване на фактури.

  Как да активирате известия с висок приоритет за Gmail

Когато обработвате поръчки, можете да препратите съобщението си за продажба до центъра за разпространение и зона за фактури. В тази схема всичко работи хоризонтално, следвайки асинхронния модел за изпращане на съобщения, но често е възможно да се изпрати действие към няколко опашки.

Следвайки предишния пример, тази функция може да бъде много полезна, когато клиентът прави покупка и продуктът трябва да бъде подготвен за дистрибуция, транспорт и фактури.

И тъй като всеки от тези сектори е различна система, целта на RabbitMQ е да препрати всички тези съобщения към съответните системи.

Заек MQ алтернативи:

RabbitMQ е много по-прост, отколкото изглежда, и има няколко алтернативи за него, които включват:

#1. IronMQ

IronMQ е супер бърз софтуер за опашка за съобщения. Той е много достъпен, издръжлив по дизайн и за предпочитане за еднократна доставка. IronMQ е най-мощното облачно решение за модерна архитектура на приложения.

Той поддържа опашки за насочване, опашки за изтегляне и дълги анкети, което държи заявките за анкети отворени по-дълго. Освен това може да използва множество центрове за данни с висока наличност, което улеснява скалируемостта.

Можете да разположите в облака, на споделен или специален хардуер или на място. Освен това има набор от клиентски библиотеки с лесна за четене документация.

#2. Апаш Кафка

Kafka е платформа със силно присъствие в разпределения поток на събития. В основата си Kafka е проектиран като репликиран, разпределен, постоянен дневник на ангажименти.

Неговата най-голяма използваемост е за захранване на управлявани от събития микроуслуги или широкомащабни приложения за обработка на потоци, автоматично репликиране на събития асинхронно в рамките на клъстера за толерантност към грешки и висока достъпност.

#3. Apache ActiveMQ

ActiveMQ е базиран на Java многопротоколен посредник за съобщения. С него можем да интегрираме приложения, използвайки AMQP протокола за опашка за съобщения на приложния слой.

Той изпълнява няколко протокола за интеграция, като JMS (родна Java) и Stomp (който може да се използва от PHP приложения), между другото.

В допълнение, Amazon има своята „управлявана“ версия, наречена Amazon MQ, което прави много по-лесно използването на услугата.

Заключителни думи

Брокерите за съобщения традиционно са важна част от архитектурите на организациите. И все пак, с увеличаването на потребителите, които навлизат в фирмените системи през различни канали, са необходими продукти, които им позволяват да бъдат хоризонтално мащабирани на ниска цена. Позволява обработката на голям брой съобщения в секунда.

Това е мястото, където ново поколение брокери, като RabbitMQ, стават все по-актуални в съвременните приложения, които се стремят да предложат високи нива на достъпност, надеждност, оперативна съвместимост и производителност на нашите клиенти.

Можете също така да проучите някои надеждни RabbitMQ хостинг платформи за вашето приложение.