Из каких основных компонентов состоит система Apache Kafka?

Ответ

Архитектура Apache Kafka состоит из следующих ключевых компонентов:

Основные компоненты:

  1. Брокеры (Brokers) – Серверы, которые хранят данные, обрабатывают запросы на запись и чтение. Несколько брокеров образуют кластер.
  2. Топики (Topics) – Логические категории или именованные потоки, в которые публикуются сообщения (например, user-events, payment-logs).
  3. Партиции (Partitions) – Топики физически разделяются на партиции для обеспечения параллелизма, масштабируемости и отказоустойчивости. Каждая партиция хранится на одном брокере.
  4. Производители (Producers) – Клиентские приложения, которые публикуют (пишут) сообщения в топики Kafka.
  5. Потребители (Consumers) – Клиентские приложения, которые подписываются на топики и читают сообщения. Часто объединяются в Consumer Groups для распределения нагрузки.
  6. 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+ 🔞

А, слушай, смотри, как эта штука устроена, блядь! Кафка, сука, не та, что с замком, а та, что данные гоняет. Ёпта, сейчас разложу по полочкам, чтоб ты не ебал мозг.

Вот смотри, главные детали этой конструкторской хуйни:

Что там внутри крутится-вертится:

  1. Брокеры (Brokers) – Это, блядь, такие серваки-работяги. На них всё и лежит, как на складе. Они принимают записи, отдают на чтение. Один – лох, а когда их куча вместе – это уже кластер, сила, блядь.
  2. Топики (Topics) – Ну, типа каналов или рубрик. Туда все свои сообщения суют. Ну, например, user-events – кто куда кликнул, или payment-logs – кто кому и сколько должен, блядь.
  3. Партиции (Partitions) – А вот это, сука, самое интересное! Чтобы не было одной огромной очереди, где все друг другу ебло оттопчут, топик режут на куски – партиции. Так и быстрее, и надёжнее. Каждый кусок на своём брокере сидит.
  4. Производители (Producers) – Ну, те, кто пишет. Приложения-писаки. Подошли к топику и – хуяк! – сообщение в него засунули.
  5. Потребители (Consumers) – А эти, наоборот, читатели. Подписались на топик и сосут из него данные. А чтобы совсем быстро было, их в Consumer Groups сбивают – как стая пираний, блядь, всё сожрут.
  6. ZooKeeper / KRaft – О, ёпта, начальство! Раньше был отдельный такой надсмотрщик – ZooKeeper, который всем заправлял. А теперь, с версии 3.x, сделали свою внутреннюю систему управления – KRaft. Сказали ZooKeeper'у: «Иди нахуй, мы сами с усами!». Упростили жизнь, короче.

Ну и примерчик, чтобы не быть пиздаболом. Вот команда, чтобы создать топик orders на три партиции, и чтоб каждая данные в двух экземплярах хранила (на случай, если один брокер накроется медным тазом):

bin/kafka-topics.sh --create 
  --topic orders 
  --partitions 3 
  --replication-factor 2 
  --bootstrap-server localhost:9092

Вот и вся архитектура, блядь. Ничего сложного, если не придумывать.