Понимание внутренней работы архитектуры Apache Kafka: хранение данных, секционирование, транзакции и целостность данных

Здравствуйте, ребята! В сфере распределенных систем Apache Kafka стала надежной и масштабируемой платформой для обмена сообщениями. Благодаря способности обрабатывать большие объемы данных в режиме реального времени Kafka стала популярным выбором для построения конвейеров данных, приложений потоковой обработки и архитектур, управляемых событиями.

Kafka также очень важен с точки зрения интервью, и поэтому я поделился различием между Apache Kafka и RabbitMQ в своей последней статье, а в этой статье мы углубимся во внутреннюю работу Apache Kafka. , исследуя, как он хранит данные, управляет разделами, транзакциями и поддерживает целостность данных.

Кстати, если вы не являетесь участником Medium, я настоятельно рекомендую вам присоединиться к Medium и читать отличные истории от великих авторов из реальной области без перерывов. Вы можете присоединиться к Medium здесь



Как работает Apache Kafka?

Теперь давайте углубимся в архитектуру Apache Kafka и попробуем понять, как она работает? Как он может обрабатывать триллионы сообщений и при этом обеспечивать целостность и скорость данных. Мы подробно рассмотрим, как Apache Kafka хранит свои данные, как он управляет транзакциями, как он работает с разделами и, самое главное, как он обеспечивает целостность данных.

1. Хранение данных в Apache Kafka

По своей сути Apache Kafka предназначен для сохранения и распределения потоков записей, известных как темы, по кластеру серверов. Kafka хранит эти записи в распределенном, отказоустойчивом и только для добавления виде.

Вместо того, чтобы полагаться на традиционную файловую систему, Kafka использует собственную абстракцию хранилища под названием «журнал». Журнал — это упорядоченная последовательность записей, где каждая запись представляет собой пару «ключ-значение» вместе с дополнительными метаданными.