Event Sourcing пришел из финтеха и gambling, кстати. С "реальным

энтерпрайзом" основная проблема - это люди а не техника, тк энтерпрайз не любит всякие инновации (если обычно проще тушками закидать).
> в невозможность высокопроизводительной гарантии отправки сообщения в очередь
а можно пример привести ?
> Впрочем, через CDC может и можно решить эту задачу, надо глубже в реализацию посмотреть.
CDC это просто техника интеграции данных.
Сама по-себе она не может обеспечить успех или неудачу реализации Event Sourcing architecture.
И сам по-себе Event Sourcing не является универсальной архитекурой, напротив изолируется в определенных частях системы, в том время как другие части ( например UI ) продолжают использовать более привычные, императивные подходы.

1 ответов

7 просмотров

Про гарантии отправки в очередь. Стандартная ситуация: нужно по внешнему вызову записать что-то осмысленное в базу, отправить после этого соответствующее событие и подтвердить обработку вызова. В синхронной модели (а внешний мир все равно синхронный обычно, там http) тут все просто - транзакция в бд, отправка сообщения и конец обработки вызова. Беда в том, что "отправка сообщения в очередь" или асинхронна (и может не сработать в случае падения кафки и, вслед за тем, падения producer с пропаданием буфера на отправку) или синхронная (при этом может быть долгой в случае перестройки кластера, да и вообще ждать ACK после каждого сообщения плохо для производительности). Упаковывать отправку синхронного сообщения внутрь транзакции нельзя (можно быстро съесть коннекции к БД на длинных транзакциях), делать отправку синхронного сообщения вне транзакции тоже нельзя (а если кафка недоступна и не отправим), делать асинхронную тоже нельзя (может не дойти). Еще и в некоторых библиотеках-обвязках ты не знаешь, какая реально отправка - синхронная или асинхронная. Вот и приходится придумывать всякие схемы сверок, все ли сообщения были отправлены и т.п. Для CDC можно событие писать в базу (в той же транзакции), а отправку в очередь сделать на основе transactin log. Но надо (мне) разобраться, можно ли гарантировать отправку сообщения в течении, например, 0.1sec после коммита (конечно, если ничего не сломалось). И работает ли CDC для Oracle с блобами )

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

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

Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
А как заставить поиск искать? Есть такая формочка <select class="form-control custom-select" name="brand_id" data-handler="onGetBrands"></select>
Денис Александрович
5
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
с помощью чего можно бота добавить как админа в чат? (условно в боте есть кнопка, нажатие на которую приводит тебя к выбору чата и выдаче прав боту)
ηє νєямσяє
5
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Добрый день, подскажите как правильно сделать filter в backend-e. Есть модель (товар) у который связь belongsToMany (компания), компаний > 4k, поэтому выборку типа ->all(); н...
Max Dubovsky
7
Или зателаешь в Шелл контейнера ?
Vladimir 
3
А цены чем оправданы?
Lencore
7
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
Карта сайта