Как стать автором
Обновить

Комментарии 5

Хранение сообщений внутри сервиса нужно, что бы уметь повторять сообщения, которые не получилось отправить (ретрай) или что бы поддерживать pull схему, когда к тебе приходят за данными. Но брокер для этих целей не используют ибо у сервиса уже есть что-то, что выполняет его функции. База или просто хранение в памяти. Дополнительно кролик - не нужная сложность, ибо еще придется решать вопрос ошибок записи в этот локальный кролик, т.е. все-равно потребуется какая-то вторая очередь в памяти.

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

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

Брокер же используют, когда нужна гибкость распределения одного сообщения по разным потребителям (кролик) или же когда нужен накопительный буфер для потоковой работы с данными (кафка).

И вот, для решения гибкого распределения сообщений вы говорите "давайте кролика заменим на сервис, который будет ходить в кролика". В принципе, такое даже делают, но не для того, что бы просто amqp на http заменить (у кролика есть http интерфейс, используйте если так amqp не любите), а решая более комплексные задачи от API композиции до сервис дискавери. А просто написать сервис, который конвертирует amqp кролика под капотом во внешний http - это какое-то усложнение не решающее никаких проблем.

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

Подождите, если у Вас consumer завис, то таким образом он завешивает и всех publisher'ов, потому, что они будут заниматься повторением отправки сообщений. В итоге всё лежит. Не вижу никаких плюсов в том, чтобы перекладывать доставку сообщений на сервис. Да и зачем каждому сервису очередь? Обычно очередь используется для доставки сообщений между сервисами, а не в пределах одного.

@miksir Возможно не правильно понял вашу мысль, но не согласен с утверждением

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

Брокера нужно рассматривать в данном случае как транспорт, такой же как и http запрос.

Возьмём пример, когда пользователь жме кнопку на сайте, она делает локальные изменения, а затем шлёт информацию в другой сервис. Если мы используем обычный http запрос в обработке нажатия кнопки, то вынуждено поймаем лаг в интерфейсе, пока отправим запрос и пока его отработает другой сервис... (в js это будет диалог со с прогрузкой, а где то в другом месте вплоть до повисания интерфейса (не весь мир радужный, есть старые системы не умеющие многопоток)).

Поэтому мы сохраняем сообщение в локальном сервисе (для истории или дальнейшей обработки после подтверждения другим сервисом). Отправляем в брокера сообщение возвращаем поток в интерфейс пользователя.

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

Что то напоминает? Мы практически сделали свой брокера, кривой, не функциональный, но очень похожий функционал. Вопрос, а зачем мы это сделали, и почему же бы нам не использовать готовые инструменты?

Автор путает базу и субд сервер.

У микросервисов даже когда базы разные очень часто шарится субд сервер.

С очередями так же история. Брокер шарится, а очереди разные

Если проводить аналогию с базами то, в том же кролике есть такое понятие как virtual host. И как раз брокер можно шарить, как и СУБД. А вот очереди и виртуальный хост нежелательно, так же как и бд с таблицами.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории