Виктор Гамов - Один раз в год сады цветут: разбор семантики «exactly once» Apache Kafka
HTML-код
- Опубликовано: 6 сен 2024
- Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Ypf1HW
- -
. . . . Disclaimer: Если вас триггерит от слов «exactly-once delivery», то этот доклад обязателен к просмотру!
Рост популярности Apache Kafka как потоковой платформы потребовал пересмотра традиционной «как минимум один раз» (at least once) семантики доставки сообщений. В этом докладе Виктор расскажет, что означает семантика «exactly once» в контексте Apache Kafka, какие изменения в протоколе и формате сообщений потребовались, как устроены транзакции и идемпотентные функции Kafka-клиентов. Также поговорим о том, как эти нововведения нашли свое отражение в смежных фреймворках - Kafka Streams и Kafka Connect.
Коротко: 1 обновите кафку, 2 используйте транзакции - весь доклад.
А про вычитывание по 500 сообщений по дефолту и перечитывании до полной обработки и коммите офсета всех 500 - да кому оно нужно!
Внимание! На слайдах в районе 25:00 перепутаны at least once и at most once
Мне кажется или минимум один раз и максимум один раз перепутаны местами? На 25.39
25:13 Не понимаю, что мешает вести уникальные id-шники сообщений от каждого Producer?
Послал Producer сообщение с id 188, ack не получил, делает retry. А Kafka получив его второй раз видит, что с id=188 сообщение уже есть и отправляет ack без повторной записи...
Неужто настолько сложная логика, что сильно затормозит систему?
29:38 - Собственно, что и сделали... ProducerID и SequenceID - очевидные решения.
Очень тяжело рассказывает…
May be you do know kafka, but explaining things is not your asset. This was terrible, sorry mate.
❤️
Механизм транзакций похож на то, что в postgres используется.
До того как изобрели велосипед-kafka уже был JMS
не путайте теплое с мягким.. очереди сообщений не делают персистент и не перезапускают процессинг.. кафка же позволяет и сохранить сообщения.. и перезапустить процессинг с любого момента времени..
Это разные вещи немного. Хотя поверх кафки можно попробовать реализовать cпеку jms.
@@user-gw6df6ns7e Confluent Kafka JMS Client как раз такое умеет)
enable.idempotence=true ставит кафку(4 ноды 32Гб RAM, min isr 2) версии 3.0 раком, даже при микроскопическом RPS порядка 300 штучек