Какие свойства из CAP-теоремы обеспечивает Apache Kafka?

«Какие свойства из CAP-теоремы обеспечивает Apache Kafka?» — вопрос из категории Брокеры сообщений, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Apache Kafka проектировалась как распределённая система, обеспечивающая свойства AP (Availability и Partition Tolerance) из CAP-теоремы.

  • Availability (Доступность): Kafka гарантирует высокую доступность за счёт репликации партиций между несколькими брокерами. Даже при отказе части узлов кластера, система продолжает принимать запись и чтение данных.
  • Partition Tolerance (Устойчивость к разделению): Архитектура Kafka изначально устойчива к разделению сети (network partitions), так как данные распределены и реплицированы по кластеру.

Согласованность (Consistency) в Kafka является eventual (конечной). Запись считается успешной после получения подтверждения от кворума реплик из набора ISR (In-Sync Replicas). Однако чтение может временно получать устаревшие данные, пока реплики синхронизируются.

Пример настройки топика с репликацией:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");

try (AdminClient admin = AdminClient.create(props)) {
    NewTopic newTopic = new NewTopic("my-topic", 3, (short) 2); // 3 партиции, фактор репликации 2
    admin.createTopics(Collections.singleton(newTopic));
}