RabbitMK объяснил за 5 минут или меньше

RabbitMK объяснил за 5 минут или меньше

Сегодня мы увидим, как ускорить загрузку вашей страницы, выполнив самую сложную обработку асинхронно, и все это очень просто благодаря RabbitMK.

Стабильность и скорость приложения или веб-сайта, безусловно, являются одними из наиболее важных факторов для пользователей. Кто никогда не покидал сайт, не увидев первую страницу, потому что это занимало слишком много времени?

Что такое КроликМК?

RabbitMK — это распределенный и масштабируемый брокер обмена сообщениями с открытым исходным кодом, который выступает в качестве посредника для эффективного общения между производителями и потребителями.

RabbitMK реализует протокол обмена сообщениями на уровне приложений AMKP, который ориентирован на передачу асинхронных сообщений с гарантией доставки посредством подтверждений сообщений от брокера к производителю и от потребителя к производителю.

Как работает RabbitHK

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

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

Давайте лучше поймем, как это работает, зная типы обмена, которые представляют обмен сообщениями.

Виды обмена

Через Exchange всякий раз, когда мы отправляем сообщение через RabbitMK, мы не отправляем его прямо в очередь; для того, чтобы другие системы его прочитали, мы отправляем его на биржу, которая отвечает за передачу сообщений в разные очереди.

Изображение предоставлено: CloudAKMP

Типы обмена: Direct, Fanout, Thread и Readers.

Прямой обмен

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

Поскольку RabbitMK отправляет сообщение отдельно в каждую очередь, есть импульс, чтобы заставить эти другие системы получать сообщение напрямую.

Обычно exchange пересылает сообщение в очереди, но часто мы не хотим, чтобы наши сообщения отправлялись во все очереди. Таким образом, есть несколько условий, которые мы можем применить, чтобы обмен работал.

Таким образом, вы можете отправить свое сообщение только одному потребителю; вместо того, чтобы отправить его всем.

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

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

Если у вас есть ключ маршрутизации X, ключ маршрутизации I и ключ маршрутизации Z, сообщение с ключом маршрутизации I, например, пройдет через очередь I и будет доставлено непосредственно потребителю, который вы определили для получения сообщения.

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

Разветвленная биржа

Когда сообщение отправляется на биржу, оно отправляется во все подключенные к ней очереди. Таким образом, если у вас есть 10 очередей, подключенных к разветвленному обмену, все очереди получат отправленное сообщение.

Обмен темами

Это одна из самых гибких бирж, позволяющая отправлять сообщения по теме. И в зависимости от того, как вы называете ключи маршрутизации, можно создавать шаблоны правил и отношений между системами.

Например: ключ маршрутизации (k.*); корневой ключ (*.z); корневой ключ (*.i.*).

Что такое АКМП в RabbitMK

AMKP (Advanced Message Queuing Protocol) — это открытый протокол обмена сообщениями, используемый для определения транспорта сообщений между несколькими приложениями. Он похож на протоколы HTTP и TCP в том, что это протокол уровня проводной сети, за исключением того, что он допускает асинхронный транспорт.

RabbitMK решил внедрить AMCP по нескольким причинам. Во-первых, этот протокол описывается как стандарт промежуточного программного обеспечения, в отличие от JMS, который определяет API.

Эту спецификацию AMCP написал международный консорциум, в который вошли такие крупные компании, как Red Hat, Cisco Systems и Microsoft. Во-вторых, это функциональная совместимость этого протокола, которая позволяет любому приложению, реализующему AMKP, взаимодействовать с брокером AMKP.

AMKP — не единственный протокол, используемый RabbitMK. На изображении ниже представлены все протоколы, языки и API, реализованные и/или поддерживаемые RabbitMK.

Лучшие возможности RabbitMK

Помимо асинхронной интеграции различных приложений с помощью сообщений из разных мест, RabbitMK предлагает нам другие функции, которые сделали его очень популярным в мире брокеров обмена сообщениями:

Надежное хранилище

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

Если обработка завершается сбоем, RabbitMK позволяет повторно поставить сообщение в очередь для использования другим экземпляром потребителя или снова обработать тем же потребителем, который первоначально дал сбой при восстановлении.

RabbitMK также гарантирует порядок доставки сообщений; то есть они потребляются в том же порядке, в котором они поступили в ряды RabbitMK.

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

Хотя RabbitMK обеспечивает отличную производительность, обрабатывая тысячи сообщений в секунду, иногда ему необходимо обрабатывать большее количество сообщений, не влияя на производительность приложения.

Для этого RabbitMK позволяет создавать кластеры для горизонтального масштабирования решения, прозрачного как для производителей, так и для потребителей.

Высокодоступные очереди

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

Гибкая маршрутизация

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

Поддержка нескольких протоколов

Помимо поддержки протокола AMKP, RabbitMK поддерживает STOMP, MKTT и HTTP через плагины. Он также включает механизмы аутентификации и контроля доступа для каждого компонента брокера.

Реальные варианты использования RabbitMK

Наиболее важные варианты использования RabbitMK обеспечивают гарантию асинхронности между приложениями, уменьшение связи между приложениями, распространение предупреждений и управление очередью фоновых заданий.

Однако практические варианты использования RabbitMK относятся к электронной коммерции, где t используется для манипулирования, обработки и пересылки ваших заказов на продажу в системы в других секторах, таких как распределение и выставление счетов.

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

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

И поскольку каждый из этих секторов представляет собой отдельную систему, цель RabbitMK — перенаправить все эти сообщения в соответствующие системы.

Альтернативы МК кролика:

RabbitMK намного проще, чем кажется, и есть несколько альтернатив, в том числе:

№1. Железный МК

IronMK — это сверхбыстрая программа для работы с очередью сообщений. Он очень доступен, долговечен по дизайну и предпочтителен для одноразовой доставки. IronMK — самое мощное облачное решение для современной архитектуры приложений.

Он поддерживает push-очереди, pull-очереди и длинные опросы, благодаря чему запросы опроса остаются открытыми дольше. Кроме того, он может использовать несколько центров обработки данных с высокой доступностью, что облегчает масштабирование.

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

№ 2. Апач Кафка

Kafka — это платформа с сильным присутствием в распределенной потоковой передаче событий. По своей сути Kafka спроектирован как реплицированный, распределенный, постоянный журнал фиксации.

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

№3. Апач АктивМК

ActiveMK — это многопротокольный брокер сообщений на основе Java. С его помощью мы можем интегрировать приложения, использующие протокол AMCP для ожидающих сообщений на прикладном уровне.

Он реализует несколько протоколов интеграции, таких как JMS (собственная Java) и Stomp (который может использоваться приложениями PHP), среди прочих.

Кроме того, у Amazon есть собственная «управляемая» версия под названием Amazon MK, что значительно упрощает использование сервиса.

Заключительные слова

Брокеры сообщений традиционно были важной частью архитектуры организаций. Однако с увеличением числа пользователей, входящих в системы компании по различным каналам, необходимы продукты, позволяющие масштабировать их по горизонтали с низкими затратами. Включение обработки большого количества сообщений в секунду.

Именно здесь новое поколение брокеров, таких как RabbitMK, становится все более актуальным в современных приложениях, которые стремятся предложить нашим клиентам высокий уровень доступности, надежности, совместимости и производительности.

Вы также можете изучить несколько надежных хостинговых платформ RabbitMK для своего приложения.

Поделиться в соцсетях