Что такое Kafka и как она работает
Что проверяют
Понимаете ли вы, что Kafka это журнал, а не очередь, и что из этого следует для данных, которые вы потом считаете. Аналитику она обычно достаётся как источник событий, и вопросы будут про порядок, дубли и полноту.
Как отвечать
Kafka это распределённый журнал сообщений: запись всегда добавляется в конец, прочитанное никуда не девается и хранится заданный срок. Читатель держит собственное смещение и может перечитать историю с любой точки, что и делает её удобной для пересчёта витрин.
Устройство:
- топик это именованный поток, разбитый на партиции;
- партиция это упорядоченная последовательность записей, лежащая на брокере и реплицированная на соседние;
- продюсер выбирает партицию по ключу, одинаковый ключ всегда попадает в одну и ту же;
- потребители объединяются в группу, и каждую партицию читает ровно один участник группы, поэтому параллелизм чтения упирается в число партиций.
Гарантии, о которых важно сказать вслух: порядок соблюдается внутри партиции, глобального порядка по топику нет; доставка по умолчанию не реже одного раза, значит приёмник обязан переживать дубли; время события и время его записи это разные величины, и оконные агрегаты считают по времени события, иначе опоздавшие данные теряются.
Где спотыкаются
Называют Kafka очередью и говорят, что сообщение пропадает после чтения. Удаляет запись политика хранения по времени или размеру либо уплотнение по ключу, а не факт того, что кто-то её прочитал.
Обещают строгий порядок событий по всему топику. Порядок есть только внутри партиции, поэтому ключ выбирают так, чтобы связанные события, например по идентификатору пользователя или заказа, оказались в одной партиции.
Игнорируют дубли. Режим однократной обработки существует, но работает при определённых условиях и внутри самой платформы, а не в произвольном внешнем приёмнике; без ключа идемпотентности задвоенные события просто попадут в отчёт.