Распределённая потоковая передача событий в Kafka работает по принципу «издатель/подписчик». 1 Приложения-продюсеры отправляют сообщения в топик, откуда их считывают приложения-потребители, подписанные на этот топик. 1 Всё это происходит в режиме почти реального времени. 1
Топик в Kafka — это не физическое, а логическое хранилище сообщений, которые публикует продюсер, чтобы их считали потребители. 1 Топик позволяет сгруппировать потоки сообщений по категориям, например, по сущностям домена: в один топик будут отправляться события пользовательского поведения, в другой — системные данные с «умных часов» или других устройств носимой электроники и т.д.. 1
Каждый топик может быть разбит на разделы (партиции). 1 Раздел является единицей параллелизма и представляет собой журнал (лог) сообщений от одного и только одного приложения-продюсера, упорядоченных в порядке их поступления в Kafka. 1 Порядковый номер сообщения под названием смещение (offset) определяет, когда приложения-потребители считают данные. 1 Лог устроен по принципу FIFO (First In, First Out): первыми считываются сообщения, которые отправлены в Kafka раньше. 1
Чтобы потребитель не «захлебнулся» от данных, в Kafka есть механизм объединения потребителей в группы для равномерного распределения разделов между несколькими приложениями-потребителями. 1
Для обеспечения отказоустойчивости события реплицируются в нескольких брокерах, что гарантирует высокую доступность даже в случае сбоев узлов. 3