Что такое Kafka

Apache Kafka — распределённая платформа потоковой передачи событий: прочный дописываемый журнал, в который одновременно пишут и из которого читают множество программ. Её построили в LinkedIn около 2010 года для потоков кликов, а в 2011 году она стала проектом Apache. Простая аналогия — почта, которая ничего не выбрасывает: отправители кладут сообщения в именные ящики, а читатели забирают их, когда удобно, — через минуты или через месяцы.

Основные понятия за минуту

Событие — один неизменяемый факт: ключ, значение и метка времени. Топик — именованный поток событий, разбитый на партиции: упорядоченные журналы на разных машинах, за счёт чего и достигается пропускная способность. Порядок гарантируется только внутри одной партиции, но никогда — по топику в целом.

Брокеры — серверы, образующие кластер; современные кластеры координируются встроенным протоколом KRaft (ZooKeeper удалён в Kafka 4.0, новым установкам он не нужен). Продюсеры дописывают события, консюмеры читают их в своём темпе и фиксируют офсеты — закладки прочитанного. Консюмеры с общим id группы делят партиции топика между собой, поэтому добавление воркеров линейно ускоряет чтение.

Где подходит, а где — нет

Kafka подходит высоконагруженным потокам событий между несвязанными сервисами: сбор логов и метрик, событийные микросервисы, обработка потоков в реальном времени. Главная возможность — повторное чтение: новый консюмер может перечитать историю с начала, не прося продюсеров отправить что-то заново.

Не подходит для вызовов запрос/ответ (там HTTP или RPC), крошечных нагрузок, которые потянет любая очередь, и данных со строгим глобальным порядком от многих писателей. Один брокер ради трёх сообщений в день — операционный театр; установки ниже рассчитаны на настоящий трафик.

Сценарии и установки

Конкретные установки, от простой к полной, — на странице сценариев:

  1. Централизованный сбор логов — каждый сервис складывает логи в Kafka вместо локальных файлов.
  2. Событийные микросервисы — сервис заказов рассылает события, а склад и рассылка реагируют независимо.
  3. Потоковая обработка в реальном времени — подсчёт и окна поверх живого потока событий.
  4. Многоконтейнерная установка в Docker Compose — продюсер, консюмер и Kafka как контейнеры, общающиеся через топики.

Search this site

Channel @aofeed Chat @aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: