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

В Kafka есть два свойства брокера, которые управляют сбросом.
1.log.flush.interval.messages — количество сообщений, накопленных в разделе журнала, прежде чем сообщения будут сброшены на диск.
2.log.flush.interval.ms — максимальное время в мс, в течение которого сообщение в любой теме хранится в памяти перед его записью на диск. Если не установлено, используется значение из log.flush.scheduler.interval.ms.
Kafka рекомендует не изменять эти свойства.
Также Kafka зависит от кэша страниц файловой системы. Kafka не создает свои собственные сообщения в памяти, внутри он использует файловую систему. Поэтому в случае сбоя Kafka теряет сообщения, которые еще не очищены.
Да, ты прав.
Спасибо! Вроде как лучше развернуть kafka в мульти-аз, иначе будет потенциальная потеря данных, если весь аз потеряет электричество.