169 похожих чатов

Выглянул за пределы akka и глянул в сторону zio. Возник

вопрос, он больше абстрактный, архитектурный, но возник как результат. А как организовать общение между микросервисами? Проблема в гарантиях. Когда akka давал cqrs "из коробки", вопросов не было. А тут чистое поле. Предположим, записал результат вычислений в бд, а как гарантированно (без потерь) сообщить об этом "наружу"?

14 ответов

25 просмотров

Конкретно в zio можно использовать zio-flow для организации таких гарантированных взаимодействий: https://zio.dev/zio-flow/ Но насколько он продакшн-реди — сложно сказать

Вы акку какую библиотеку подразумеваете? Стримы? А то просто акка это актеры и там нет цкрс

Вам нужна оркестрация микросервисов? Тогда возможно подойдет уже упомянутый https://zio.dev/zio-flow/ либо https://github.com/vitaliihonta/zio-temporal Еще вариант сами сервисы могут быть на Scala, а их оркестрация на другом стеке. Или вообще подумать может быть стоит отказаться от оркестрации и сделать общение между сервисами напрямую (хореография) и через PubSub (уже упомянутая кафка).

Андрей-Ладний Автор вопроса
Ivan
Вам нужна оркестрация микросервисов? Тогда возможн...

Нет. Вопрос не про оркестрацию. Вопрос про данные, которые гарантированно должны уйти из микросервиса. Выше был ответ, вариант решения понятен.

Андрей-Ладний Автор вопроса
Ivan
Вам нужна оркестрация микросервисов? Тогда возможн...

Интересное решение получили в akka. На базе persistence + projection сделали так, что и Kafka по сути не нужна. Pubsub между микросервисами.

Андрей Ладний
Интересное решение получили в akka. На базе persis...

а как это работает? во я севрис А хчу запаблишить в топик X и сервисы Б и В и Г хотят подписаться на X что в сценарии с аккой будет происходить?

Андрей-Ладний Автор вопроса

Это работает в режиме "подписки". Сервис А никуда ничего не хочет отправлять. Сервис Б хочет получать. Поэтому Б подписывается и получает поток сообщений. При этом остаётся только менеджмент смещения. Могу ошибаться (не успел попользоваться), но потоку Б надо только сохранять offset до которого он сообщения обработал. А так как в А есть вся история сообщений, то он может отправлять каждому спросившему сообщения с нужного offset

Андрей-Ладний Автор вопроса
Artem Sokolov
а персистенс был поверх постгреса?

По идее любой. Все время продвигали Cassandra а сейчас упор на postgres

Андрей Ладний
Это работает в режиме "подписки". Сервис А никуда ...

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

Андрей-Ладний Автор вопроса
Artem Sokolov
понятно если проводить сравнение с кафкой (чтобы п...

Не совсем. Встроенная кафка : да. Персистенс в akka шардируется по нодам сколько хочешь. В случае с Cassandra тоже имеем шардинг. Клиенты, если они на akka, имеют из коробки все что нужно для таких подписок и поддержки offset

Андрей Ладний
Не совсем. Встроенная кафка : да. Персистенс в akk...

я там переписал, потому что слова персистенс использовал в значении БД (постгрес или касандра)

Андрей-Ладний Автор вопроса
Artem Sokolov
я там переписал, потому что слова персистенс испол...

Понятно. Про разное говорили. Я в терминах akka. Persistence это некоторый слой который не только пишет в базу, но и поток сообщений формирует (pubsub + poll)

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
11
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта