Подтвердить что ты не робот

RESTful v/s MQ. Различия и другие ключевые особенности, кроме гарантированной доставки

Хорошо. Итак, я начал изучать MQ и его цель /usecase и т.д.... Мое существующее приложение (веб-приложение, использующее JSP и т.д.) Использует интерфейс RestFUL для связи с удаленным сервером и для отправки/получения данных с сервера.

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

Сообщение отправлено с нашего конца. Но удаленный сервер опустился. Или наоборот.

Я наткнулся на MQ и нашел, что он надежный при доставке и получении сообщений с удаленного сервера.

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

Я читал в другом блоге, что с появлением растущих исследований в домене RestFUL MQ будет медленно ускоряться.

У меня нет большой идеи о MQ, поэтому ничего не комментируйте, но, безусловно, работать с RestFUL - это весело.

Поймите, если кто-то предоставит различия между использованием RestFUL и MQ.

4b9b3361

Ответ 1

Одно из самых больших различий заключается в том, что REST подразумевает синхронную обработку, тогда как MQ чаще асинхронно. Как вы уже упоминали, MQ - это способ отделить производителя и потребителя, чтобы они не могли быть в сети одновременно, но система все еще функционировала бы в целом. Если ваш случай использования подразумевает ответ с малой задержкой (например, пользователь с браузером), вам нужна синхронная семантика, и в этом случае MQ - это просто другой протокол. Если латентность не вызывает беспокойства или обмен сообщениями идет только в одном направлении, MQ может быть очень жизнеспособной альтернативой. Одна вещь, которую MQ предоставляет бесплатно, - это балансировка нагрузки (и некоторый уровень HA) на стороне потребителя.

REST намного более гибкий с точки зрения совместимости клиент/сервер. Вы можете запустить клиент REST почти на каждой платформе, что не соответствует MQ. Думаю, именно по этой причине некоторые люди утверждают, что MQ устаревает. По этой причине MQ не подходит для публичных API. Однако для связи между двумя серверными системами MQ по-прежнему остается очень хорошим вариантом. Уникальной особенностью REST является то, что она позволяет полностью имитировать WEB-поведение ваших ресурсов (гипермедиа), то есть один ресурс содержит ссылку на другую и так далее. MQ не может предоставить ничего подобного.

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

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

Подводя итог, как правило, я бы использовал REST

  • для общедоступных API или
  • где требуется синхронная обработка.

MQ

  • когда задействовано только ограниченное количество серверных систем и
  • приемлема асинхронная обработка или
  • Недостаточная производительность REST

Ответ 2

Оба REST и MQ обеспечивают связь между удаленными системами (и локальными).

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

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

Это лишь некоторые основные моменты, которые их различают. В SO есть достаточно сообщений, которые рассказывают о REST и MQ.

Ответ 3

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

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

Вы можете быть смущены RPC, но в веб-контексте это не то же самое, что MQ.