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

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

5 ответов

11 просмотров

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

Клиент должен ходить по 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

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

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

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
8
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
🙋 Ребята, всем привет. Поправил задачу: Нужно каждому новому сообщению (1 раз по каждому юзеру) в чате прибавлять снизу кнопку с предложением подписаться на канал. Как добавит...
Alexander
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
Карта сайта