Про Кафку
Судя по реакциям, посты вида "вопросы с собеседований" вам зашли. Не вижу повода не продолжить :)
На прошлом месте работы мы втаскивали Кафку рядом с кроликом (RabbitMQ). Мне понравились гарантии доставки Кафки, возможность перечитать топик и философия pull'а сообщений. То есть Кролик буквально ЗАПИХИВАЕТ сообщения в потребителя, даже если в него -- потребителя -- уже откровенно ничего не лезет. Это все равно что в вас после хорошего обеда попытаются запихнуть еще один обед. Неприятно ведь. Кафка более обходительная и позволяет потребителю читать сообщения по мере доступности.
// А еще один коллега придумал шутку, которая меня до сих пор веселит. Когда кто-то говорил "Кафка", он быстро добавлял "грефневая". Не знаю как вам, мне было (и до сих пор) смешно :)
У нас в Сбермаркете мы Кафку тоже используем, и на собеседованиях любим про нее поговорить. Один из первых моих вопросов: "Расскажи плиз про гарантии доставки Кафки".
Вы подумали, что это простой вопрос?
Нет.
Многие люди, которые работали с Кафкой в продакшне, на него не отвечают. Оставим этот факт на их совести. Правильный ответ: at-least-once. То есть: Кафка гарантирует доставку МИНИМУМ один раз, но так же гарантирует, что может доставить сообщение повторно. Если вы не учли этот момент в проектировании системы, на высоких нагрузках у вас появится очень интересный способ проводить вечера в попытках найти баг в распределенной системе.
А еще я для вас нашел статью, в которой есть картиночки и есть заход в идемпотентность. И объясняет автор хорошо. Делюсь: https://medium.com/@andy.bryant/processing-guarantees-in-kafka-12dd2e30be0e
(Кстати, если вас вдруг недавно на собесе завалили или удивили каким-нибудь вопросом, можете написать в комменты или мне в телегу. Разберу вопрос и напишу пост в канал.)
P.S. Если совсем докопаться, правильный ответ "а какие настройки у брокера, потребителя и продьюсера?". Кафка может работать в нескольких режимах доставки, нужно смотреть настройки. Из коробки у нее почти at-least-once. Почему "почти" я расскажу, но в следующих постах, все в один не залезет.
Post #34
1.26K