Как Кафка использует отложенную запись?

Насколько я понимаю, Кафка использует технику «записи» при записи данных. Это означает, что он сначала записывает данные в страничный кеш (как грязные страницы), а затем сбрасывает эти грязные страницы на диск.

Когда происходит этот прилив? Происходит ли это до того, как я получу подтверждение от Кафки? Если нет, то, по моему мнению, надлежащей отказоустойчивости не существует, поскольку мы можем потерять данные, которые все еще находятся в оперативной памяти и не были сброшены.

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Kafka есть два свойства брокера, которые управляют сбросом.

1.log.flush.interval.messages — количество сообщений, накопленных в разделе журнала, прежде чем сообщения будут сброшены на диск.

2.log.flush.interval.ms — максимальное время в мс, в течение которого сообщение в любой теме хранится в памяти перед его записью на диск. Если не установлено, используется значение из log.flush.scheduler.interval.ms.

Kafka рекомендует не изменять эти свойства.

Также Kafka зависит от кэша страниц файловой системы. Kafka не создает свои собственные сообщения в памяти, внутри он использует файловую систему. Поэтому в случае сбоя Kafka теряет сообщения, которые еще не очищены.

Спасибо! Вроде как лучше развернуть kafka в мульти-аз, иначе будет потенциальная потеря данных, если весь аз потеряет электричество.

Pavel Orekhov 20.05.2024 09:02

Да, ты прав.

manjunath 20.05.2024 09:38

Другие вопросы по теме