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

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

5 ответов

6 просмотров

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

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

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

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

Всем привет. Подскажите, почему не меняется значение поля при переключении сайта?
Alexander Peterikov
11
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Добрый день! Кто-нибудь знает как подключить твиг в контроллеры плагина?
Николай Афанасенко
5
@dblackCat Привет. Это же твой плагин? https://octobercms.com/plugin/catdesign-productbundle
Alexey Yakimov
5
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
привет, а расскажите как бэкапите свой vault raft cluster CE? я немного почитал и понял, что нужно как-то выполнять vault operator raft snapshot save backup.snapshot подсовыва...
[DBST] Dmitry Knyazev
5
коллеги, делаю для себя, небольшой сайт-справочник. в основе контента Blog. имеет смысл с ним продолжать или переезжать на tailor сразу? Я не спец, так, больше для самообразов...
Pirate LeChuk
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Карта сайта