Size: a a a

2020 January 16

RS

Roman Sharkov in pro.kafka
Николай Ижиков
Если тебе нужно парсить события из БД, то в случае, к пример binlog’ов от mysql есть возможность группировать изменения произошедшие в одной транзакции.
> писать переводчик WAL->AppLogic неоправдано дорого, проще и безопаснее хранить бд (аггрегат) и лог отдельно

добавлю ещё то, что в другом сервисе который тоже является источником событий не обязательно будут использовать MySQL, они могут взять условный Dgraph и тут будет проблема
источник

AK

Alexander Kovalev in pro.kafka
Николай Ижиков
Может быть ты в курсе про дополнительные требования Романа. Но я про клауд и другое не слышал)

А в файлик локальный писать - да, это просто, что может быть проще?
деталей много
файлика наверное два делать - данные, и номер строки, с которой продолжать
файл кто-то будет ротировать, данных мало-много, или он убьет весь диск вместе с тачкой?
и так далее

а так, обычно кафку юзают модные парни, с куберами и так далее, там файл - дополнительная боль
источник

RS

Roman Sharkov in pro.kafka
Alexander Kovalev
деталей много
файлика наверное два делать - данные, и номер строки, с которой продолжать
файл кто-то будет ротировать, данных мало-много, или он убьет весь диск вместе с тачкой?
и так далее

а так, обычно кафку юзают модные парни, с куберами и так далее, там файл - дополнительная боль
нет, нельзя.

изменения должны применяться атомарно, а это с 2 файликами не получится.

тут можно взять ACID KV бд и использовать её в качестве хранилища
источник

IG

Igor Gabaydulin in pro.kafka
Roman Sharkov
нет, нельзя.

изменения должны применяться атомарно, а это с 2 файликами не получится.

тут можно взять ACID KV бд и использовать её в качестве хранилища
Атомарность разве достижима в данном случае? Если БД захочет откатить транзакцию, что делать?
источник

RS

Roman Sharkov in pro.kafka
Igor Gabaydulin
Атомарность разве достижима в данном случае? Если БД захочет откатить транзакцию, что делать?
если бд откатывает транзакцию то микросервис понимает, что событие не записано и реагирует соответственно
источник

NR

Nikita Ryanov in pro.kafka
Roman Sharkov
в том, что условный ROW_INSERT(table: users, values: {bla,foo,bar}) это не UserCreated{foo, bar}

я уже молчу про события, которые могут пораждать множество изменений в разных частях бд, которые тем не менее рассматриваются 1 логическим изменением состояния приложения

есть разница между WAL’ом бд и логическими логами самого приложения. Мы не хотим использовать implementation detail миксервиса как сыботия для других сервисов, ибо оно может меняться, а логические события это относительно простой протокол коммуникации

писать переводчик WAL->AppLogic неоправдано дорого, проще и безопаснее хранить бд (аггрегат) и лог отдельно
Чем тогда запись в один файл будет отличаться от записи в аппенд онли таблицу?
источник

RS

Roman Sharkov in pro.kafka
Nikita Ryanov
Чем тогда запись в один файл будет отличаться от записи в аппенд онли таблицу?
ничем. Главное чтобы это была не таблица бд микросервиса а таблица бд side-car event log’а
источник

IR

Ivan Rasikhin in pro.kafka
почему не взять тогда обычный логгер и не писать на диск
источник

RS

Roman Sharkov in pro.kafka
Ivan Rasikhin
почему не взять тогда обычный логгер и не писать на диск
что значит обычный логер?
источник

IR

Ivan Rasikhin in pro.kafka
log4j2
источник

AK

Alexander Kovalev in pro.kafka
не нравится бд, попробуйте логстеш
источник

AK

Alexander Kovalev in pro.kafka
он умеет в буфер
источник

IR

Ivan Rasikhin in pro.kafka
например
источник

RS

Roman Sharkov in pro.kafka
тем что:
- у него нельзя попросить логи с определённого offset’а
- он не версионируется
- его нельзя попросить атомарно проверить версию прежде чем append’ить event
источник

IR

Ivan Rasikhin in pro.kafka
хм
источник

RS

Roman Sharkov in pro.kafka
я уже и так и сяк думал но выходит что придётся писать самому небольшой бинарь со встроенным ACID KV и присобачивать его side-car’ом к сервисам, которые являются источником событий
источник

IR

Ivan Rasikhin in pro.kafka
кстати еще вопрос
источник

IR

Ivan Rasikhin in pro.kafka
если все же будет проблема с сетью
источник

IR

Ivan Rasikhin in pro.kafka
как ты гарантируешь что от клиента(например из браузера) до тебя сообщения долетит
источник

IR

Ivan Rasikhin in pro.kafka
?
источник