Коллеги, сейчас вроде как модно микросервисы между собой коммуницировать через

kafka.
Есть идея сделать что-то типа data-provider-service который бы отдавал данные что в БД лежат а все остальные чтобы в него ходили. Но как то не оч понятно как это все асинхронно будет работать. Типа клиентский сервис кинул сообщение в топик типа дай User по id.
data-provider-service его поймал и отправил ответ. Клиентский сервис его поймал и показал профиль.
Насколько это вообще работоспособоно, есть ли у кого то практический опыт такой реализации?

5 ответов

12 просмотров

Это больше на паб-саб похоже

Клиент должен ходить по REST, Kafka как внутренняя шина для общения между микросервисами. Вот пример такой архиетктуры https://www.confluent.io/blog/building-a-microservices-ecosystem-with-kafka-streams-and-ksql/ это типа хелоу ворд, в реальной жизни очень много подводных камней

> Типа клиентский сервис кинул сообщение в топик типа дай User по id. data-provider-service его поймал и отправил ответ. Клиентский сервис его поймал и показал профиль. Это звучит как обычный request-response. Зачем для этого брокер использовать? gRPC в помощь, если хочешь модно-молодёжно 🙂 Я кафку пытаюсь использовать между микросервисами, но только тогда, когда продьюсер плюёт сообщение и не ждёт ничего в ответ.

можно через кафку != кинь запрос Дай юзера, получи ответ

Мы реализовывали такую схему на вебсокетах и кафке, клиент шлет по ws сообщение в котором есть отдельное поле sequence_id, сервер обрабатывает месседж и отправляет клиенту ответ с тем же sequence_id, а клиент по этому id понимает что за ответ ему пришел, но сразу скажу, сапортать это дело адок и в последствии от этого подхода отказались в пользу инструментов имеющих нормальную request/response семантику, из полюсов пожалуй только то что процесс не блокирующий и имеет backpressure из коробки. В целом если вам не нужна гарантированная доставка то я бы сейчас смотрел в сторону RSocket он тоже не блокирующий и имеет backpressure из коробки, но при этом поддерживает request/response

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта