Size: a a a

2020 January 16

НИ

Николай Ижиков in pro.kafka
насколько я понял Рому, он просто хочет записать данны сначала в кафку или локальный файлик, а потом уже дать клиенту отмашку, что данные сохранены.

Если данные из локального файлика не быстро доедут до обработчика(через кафку) его не пугает
источник

AK

Alexander Kovalev in pro.kafka
Roman Sharkov
нет, не cache, а reliable buffer. Cache это про ускорение чтение, а здесь речь про надёжную запись и асинхронную запись в stream.
кеш уже лет десять как про буферизацию записи тоже
источник

AK

Alexander Kovalev in pro.kafka
см любой нормальный инмемори датагрид - хейзел, инфиниспан, игнайт, etc
источник

AK

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

AK

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

AK

Alexander Kovalev in pro.kafka
хоть и будет это хуже)
источник

RS

Roman Sharkov in pro.kafka
Николай Ижиков
насколько я понял Рому, он просто хочет записать данны сначала в кафку или локальный файлик, а потом уже дать клиенту отмашку, что данные сохранены.

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

НИ

Николай Ижиков in pro.kafka
Alexander Kovalev
см любой нормальный инмемори датагрид - хейзел, инфиниспан, игнайт, etc
in memory грид, внезапно, тоже может упасть.
Да и зачем плодить сущности сверх меры?
источник

НИ

Николай Ижиков in pro.kafka
Roman Sharkov
сначала в локальный файлик, потом уже в кафку асинхронно ибо не так важно когда события получать остальные сервисы в экосистеме, важно то что событие надёжно записано внутри сервиса, он не должен зависить от внешних систем и в любом случае должен продолжать работать
А если второй раз из файлика доставишь в кафку это не страшно?
источник

AK

Alexander Kovalev in pro.kafka
Николай Ижиков
in memory грид, внезапно, тоже может упасть.
Да и зачем плодить сущности сверх меры?
плодить сущности - топикстартер
инмемори кеш можно хоть embedded запускать, упадет только с сервисом
источник

RS

Roman Sharkov in pro.kafka
Alexander Kovalev
вы хотите писать кеш перед кафкой по сути
я предлагаю быть практиком и взять техническое решение, которое может быть этим кешом
можно хоть с кажым сервисом монгу сайдкаром поднимать, будет лучше, чем самописное решение
mongodb будет менее практичным решением, ведь в таком случае за реализацию event log’а теперь отвечает сам сервис и это очевидно нехорошо
источник

НИ

Николай Ижиков in pro.kafka
Alexander Kovalev
плодить сущности - топикстартер
инмемори кеш можно хоть embedded запускать, упадет только с сервисом
Если упадет сервис - сохраненные в локальный буфер данные терять не хочется.
источник

AD

Alex Dev in pro.kafka
для логов есть seq
источник

RS

Roman Sharkov in pro.kafka
Alexander Kovalev
кеш уже лет десять как про буферизацию записи тоже
buffer != cache // true
источник

AK

Alexander Kovalev in pro.kafka
Николай Ижиков
Если упадет сервис - сохраненные в локальный буфер данные терять не хочется.
выбирайте любой из доступных режимов работы кешей, за 10 лет их придумали дохрена)
источник

AK

Alexander Kovalev in pro.kafka
хоть с синком на диск, хоть с синком с диска, любой
источник

RS

Roman Sharkov in pro.kafka
Alexander Kovalev
не нравится бд, попробуйте логстеш
не выйдет, API специфичная 😐
источник

AK

Alexander Kovalev in pro.kafka
Roman Sharkov
buffer != cache // true
я практик, но хорошо
берите любой ин мемори сторадж со стримингом и персистентным бэкендом
источник

RS

Roman Sharkov in pro.kafka
Николай Ижиков
А если второй раз из файлика доставишь в кафку это не страшно?
страшно, грубое нарушение согласованности.
источник

НИ

Николай Ижиков in pro.kafka
Roman Sharkov
страшно, грубое нарушение согласованности.
Тогда тебе надо четко знать, что удалось записать в кафку а что не удалось.

Но это все равно от всех случаев, скорее всего, не спасет и контроль double delivery придется делать на стороне приемника
источник