Kafka и Transactional Outbox. Есть ли альтернативы? / Сергей Попов (Синимекс)

  Рет қаралды 2,133

Cinimex

Cinimex

Күн бұрын

Есть стандартная задача: сохранять изменения в БД и отправлять об этом сообщение в Кафку. Причём хочется, чтобы было честно: успешно отправили и успешно сохранили, либо же - ничего не отправили и ничего не сохранили.
Во всех учебниках предлагают использовать паттерн Transactional Outbox. Но так ли он хорош? Есть ли альтернативы? И что лучше?
Обо всём этом рассказал Сергей Попов, Tech Expert IT-компании "Cinimex"
Таймкоды:
00:00 - Начало
00:49 - Перейдем к задачке. Какая есть проблема?
02:32 - Решение проблем. Transactional outbox + Polling Publisher и...
06:36 - Какие еще есть варианты? Kafka Transactional из spring-kafka, семантики в kafka?
10:52 - Синхронный REST. Какие минусы?
12:37 - Одна база и Kafka - источник правды?
15:10 - Что же использовать? Зависит от...
17:24 - Вопросы к спикеру
Habr: habr.com/ru/companies/cinimex...
Наша жизнь и новости в Telegram: t.me/cinimex
Наш сайт: www.cinimex.ru/career/

Пікірлер: 8
@city-dweller
@city-dweller Ай бұрын
Я так и не понял, зачем пытаться избавиться от дублей на Продюсере, если Консъюмер всё равно должен быть идемпотентным (а он должен быть, т.к. из-за сетевых ошибок и падений приложения Консъюмера возможны повторные доставки - acknowledgement получения сообщения может быть не послан или не дойти до брокера Кафки). Интересна идея "mirrored outbox pattern", которая родилась при просмотре этого видео (когда сообщение сначала отправляется в Кафку, а затем Консъюмер этого же приложения читает Кафку и пишет из неё в свою БД).
@sergeipopov788
@sergeipopov788 Ай бұрын
Ответ на вопрос "зачем?" - перфекционизм. 30-40 лет назад такие задачи имели простое (хоть и низкопроизводительное - хотя стоило бы произвести замер на современном оборудовании) решение, а сейчас?! Ресурсов в разы больше, а мы их бездарно (на мой взгляд, конечно) тратим на хранение дублей и дедупликацию на каждом сервисе... По поводу "mirrored outbox pattern". Консьюмер естественно должен быть индепотентен и да, будет работать.
@city-dweller
@city-dweller Ай бұрын
UPD для интересующихся: обнаружил, что для названного мною "mirrored outbox pattern" есть общепринятое название - Listen to Yourself pattern
@neshkeev
@neshkeev Ай бұрын
Не тратьте свое время, доклад пустой, решения проблемы нет, в минусы докладчик записывает At-Least-Once семантику, что говорит об уровне подготовки докладчика. 10 лет опыта - плохой показатель, каждый может потратить этот срок с разной степенью эффективности
@sergeipopov788
@sergeipopov788 Ай бұрын
Спасибо за мнение. Но я всё равно буду стоять на том, что at-least-once лишь маскирует проблему, а не решает. А решения в докладе всё же были. Только у каждого свои плюсы и минусы.
@endaksi_channel
@endaksi_channel 2 ай бұрын
@TransactionalEventListener
@city-dweller
@city-dweller Ай бұрын
А если сразу после коммита в БД приложение ляжет? Или случится сбой при отправке сообщения в Кафку? In-memory ненадёжно.
@sergeipopov788
@sergeipopov788 Ай бұрын
Как заметил предыдущий комментатор, также могут возникать проблемы. И transactional outbox выглядит надёжней.
Which one is the best? #katebrush #shorts
00:12
Kate Brush
Рет қаралды 27 МЛН
Super gymnastics 😍🫣
00:15
Lexa_Merin
Рет қаралды 106 МЛН
Патерн  "Transactional Outbox"
22:18
RND PHP
Рет қаралды 1,5 М.
Implementing the Transactional Outbox pattern with Hangfire
14:28
Milan Jovanović
Рет қаралды 9 М.
Cinimex TECH VRN meetup
2:22:30
Cinimex
Рет қаралды 244
Про Kafka (основы)
49:23
Владимир Богдановский
Рет қаралды 365 М.
Микросервисная архитектура для собеседования: Transactional outbox | Эйч Навыки
43:14
Эйч Навыки — менторская программа
Рет қаралды 13 М.
Transactional Outbox Pattern
5:30
CockroachDB
Рет қаралды 12 М.