Message Broker против MOM (Message-Oriented Middleware)
Я немного сбит с толку относительно разницы между брокером сообщений, например, RabbitMQ и Middleware, ориентированным на сообщения. Я не могу найти много информации, кроме того, что в Википедии. При поиске MOM я нахожу информацию о AMQP, в которой говорится, что это протокол для MOM. Что это значит? Что такое мама тогда? Я также читал, что RabbitMQ реализует протокол AMPQ. Так почему же он делает RabbitMQ брокером сообщений? Брокер сообщений и MOM - это одно и то же?
Надеюсь, что некоторые могут разгадать мое замешательство. Спасибо
3 ответа
Обзор -
- Протокол - это набор правил.
- AMQP - AMQP - это открытый интернет-протокол для надежной отправки и получения сообщений.
- MOM (промежуточное программное обеспечение, ориентированное на сообщения) - это подход, архитектура для распределенной системы, то есть промежуточный уровень для всей распределенной системы, где много внутренней коммуникации (компонент запрашивает данные, а затем должен отправить их другому). компонент, который будет выполнять некоторую обработку данных), поэтому компоненты должны обмениваться информацией / данными между ними.
- Брокер сообщений - это любая система (в MOM), которая обрабатывает сообщения (как отправка, так и получение) или, если быть более точным, маршрутизирует сообщения конкретному потребителю / получателю. Message Broker обычно строится на MOM. MOM обеспечивает базовую связь между приложениями и такие вещи, как постоянство сообщений и гарантированная доставка. "Посредники сообщений являются строительным блоком промежуточного программного обеспечения, ориентированного на сообщения".
- Rabbitmq - брокер сообщений; реализация MOM; реализация AMQP с открытым исходным кодом; согласно Википедии:
RabbitMQ - это программное обеспечение брокера сообщений с открытым исходным кодом (иногда называемое промежуточным программным обеспечением, ориентированным на сообщения), которое реализует расширенный протокол очереди сообщений (AMQP).
Как вы и просили:
При поиске MOM я нахожу информацию о AMQP, в которой говорится, что это протокол для MOM. Что это значит?
MOM - это наличие промежуточного программного обеспечения для обмена сообщениями (среднего уровня) между (распределенными) компонентами системы, а AMQP - это протокол (набор правил) для надежной отправки и получения сообщений. Таким образом, реализация MOM (т.е. Rabbitmq) может использовать AMQP.
Что такое мама тогда?
Message-Oriented-Middleware - это подход, архитектура для распределенной системы, т. Е. Промежуточный уровень для всей распределенной системы, где много внутренней коммуникации (компонент запрашивает данные, а затем должен отправить их другому компоненту, который будет выполнять некоторую обработку данных), поэтому компоненты должны обмениваться информацией / данными между ними. Короче говоря, это способ проектирования системы, например: в зависимости от общих требований нам необходимо разработать распределенную систему с некоторой внутренней связью. Самым большим преимуществом архитектуры / решения MOM является разделение компонентов, т.е. если мы собираемся изменить компонент запроса данных, это не повлияет на компоненты обработки данных, так как они взаимодействуют через MOM (например, Rabbitmq Cluster) - компонент обработки данных получает данные в сообщениях формы, которые затем анализирует и обрабатывает их.
В конце концов, MOM - это просто дизайнерское решение: мы используем промежуточное программное обеспечение для склеивания наших системных (распределенных) компонентов, промежуточное программное обеспечение для обработки связи между ними в форме сообщений (например, JSON). Для реализации промежуточного программного обеспечения, ориентированного на сообщения, нам нужно больше - набор конкретных правил, например, как сообщения будут публиковаться, потребляться, как будет работать подтверждение, время жизни сообщения до его использования, постоянство сообщения и т. Д. AMQP - это в основном набор правил, то есть стандарт / протокол для реализации MOM, то есть система обмена сообщениями, использующая AMQP, что означает, что он ограничивается указанными правилами. Из Википедии:
AMQP предписывает поведение поставщика и клиента обмена сообщениями в той степени, в которой реализации от разных поставщиков являются функционально совместимыми, так же как SMTP, HTTP, FTP и т. Д. Создали совместимые системы.
Я также прочитал, что RabbitMQ реализует протокол AMPQ. Так почему же это делает RabbitMQ брокером сообщений?
Да, Rabbitmq - брокер сообщений (издатель -> обмен -> очередь -> потребитель). Это реализация AMQP с открытым исходным кодом, т.е. система обмена сообщениями / брокер, которая ограничивается AMQP (правила AMQP) - в качестве промежуточного программного обеспечения можно использовать Rabbitmq, а следовательно, MOM.
AMQP - это просто набор правил, т. Е. Как сообщения будут публиковаться, храниться (в очередях), потребляться, подтверждаться доставкой и т. Д.
Брокер сообщений и MOM - это одно и то же?
Проще говоря, да. Если нам нужно разработать MOM для нашей распределенной системы, мы можем просто использовать Rabbitmq (брокер сообщений; реализация AMQP) в качестве промежуточного программного обеспечения.
"MOM" в широком смысле означает любую технологию, которая может доставлять "сообщения" из одного пользовательского приложения в другое. Под сообщением обычно понимают отдельную часть информации по сравнению с потоком.
Раньше продукты MOM были довольно большими и сложными: CORBA, JMS, TIBCO, WebsphereMQ и т. Д. И пытались сделать гораздо больше, чем просто доставлять сообщения.
Брокер - это особый набор шаблонов маршрутизации и очередей, и мы обычно используем термин "брокер" специально в MOM (по сравнению с HTTP, электронной почтой, XMPP и т. Д.). Маршрутизация означает, что одно сообщение отправляется одному узлу, одному из многие одноранговые узлы, всем одноранговым узлам и т. д. Очередь означает, что сообщения хранятся в памяти или на диске до тех пор, пока они не будут доставлены (и в некоторых случаях подтверждены).
AMQP использовался для определения этих паттернов брокера, поэтому приложение могло полагаться на согласованное поведение любого AMQP-совместимого брокера (таким образом, RabbitMQ и OpenAMQ выглядели почти одинаково для клиентского приложения, как два HTTP или два сервера XMPP будут выглядеть одинаково). AMQP/1.0 определяет только соединение между узлами, поэтому у вас нет гарантий поведения. Это значительно упрощает внедрение AMQP / 1.0 для компаний, но не обеспечивает совместимость.
ZeroMQ - это промежуточное программное обеспечение, ориентированное на сообщения, которое, как и AMQP/1.0, определяет связи между компонентами, а не поведение центрального брокера. Однако относительно просто написать MOM-брокеров, используя 0MQ, и мы сделали несколько из них (например, Majordomo).
Посредники сообщений - один (довольно популярный) вид MOM. Другим видом MOM будет MOM без брокера, как ZeroMQ. С MOM на основе брокера все сообщения отправляются в одно центральное место: брокер, и оттуда распространяются. MOM без посредников обычно допускает обмен сообщениями между равноправными узлами (но также не исключает возможности центрального сервера).
AMQP - это определение протокола MOM на основе брокера (по крайней мере, все версии до 1.0, которые переходят на более общие MOM), и существует несколько различных брокеров сообщений, реализующих этот протокол, RabbitMQ является лишь одним из них.