Ответ
Архитектура Apache Kafka состоит из следующих ключевых компонентов:
Основные компоненты:
- Брокеры (Brokers) – Серверы, которые хранят данные, обрабатывают запросы на запись и чтение. Несколько брокеров образуют кластер.
- Топики (Topics) – Логические категории или именованные потоки, в которые публикуются сообщения (например,
user-events,payment-logs). - Партиции (Partitions) – Топики физически разделяются на партиции для обеспечения параллелизма, масштабируемости и отказоустойчивости. Каждая партиция хранится на одном брокере.
- Производители (Producers) – Клиентские приложения, которые публикуют (пишут) сообщения в топики Kafka.
- Потребители (Consumers) – Клиентские приложения, которые подписываются на топики и читают сообщения. Часто объединяются в Consumer Groups для распределения нагрузки.
- ZooKeeper / KRaft – Служба координации. В Kafka до версии 3.x использовался внешний Apache ZooKeeper для управления метаданными кластера. Начиная с Kafka 3.x, представлен встроенный консенсус-протокол KRaft, который устраняет зависимость от ZooKeeper.
Практический пример: Создание топика с 3 партициями и фактором репликации 2.
bin/kafka-topics.sh --create
--topic orders
--partitions 3
--replication-factor 2
--bootstrap-server localhost:9092 Ответ 18+ 🔞
А, слушай, смотри, как эта штука устроена, блядь! Кафка, сука, не та, что с замком, а та, что данные гоняет. Ёпта, сейчас разложу по полочкам, чтоб ты не ебал мозг.
Вот смотри, главные детали этой конструкторской хуйни:
Что там внутри крутится-вертится:
- Брокеры (Brokers) – Это, блядь, такие серваки-работяги. На них всё и лежит, как на складе. Они принимают записи, отдают на чтение. Один – лох, а когда их куча вместе – это уже кластер, сила, блядь.
- Топики (Topics) – Ну, типа каналов или рубрик. Туда все свои сообщения суют. Ну, например,
user-events– кто куда кликнул, илиpayment-logs– кто кому и сколько должен, блядь. - Партиции (Partitions) – А вот это, сука, самое интересное! Чтобы не было одной огромной очереди, где все друг другу ебло оттопчут, топик режут на куски – партиции. Так и быстрее, и надёжнее. Каждый кусок на своём брокере сидит.
- Производители (Producers) – Ну, те, кто пишет. Приложения-писаки. Подошли к топику и – хуяк! – сообщение в него засунули.
- Потребители (Consumers) – А эти, наоборот, читатели. Подписались на топик и сосут из него данные. А чтобы совсем быстро было, их в Consumer Groups сбивают – как стая пираний, блядь, всё сожрут.
- ZooKeeper / KRaft – О, ёпта, начальство! Раньше был отдельный такой надсмотрщик – ZooKeeper, который всем заправлял. А теперь, с версии 3.x, сделали свою внутреннюю систему управления – KRaft. Сказали ZooKeeper'у: «Иди нахуй, мы сами с усами!». Упростили жизнь, короче.
Ну и примерчик, чтобы не быть пиздаболом. Вот команда, чтобы создать топик orders на три партиции, и чтоб каждая данные в двух экземплярах хранила (на случай, если один брокер накроется медным тазом):
bin/kafka-topics.sh --create
--topic orders
--partitions 3
--replication-factor 2
--bootstrap-server localhost:9092
Вот и вся архитектура, блядь. Ничего сложного, если не придумывать.