Как плот добивается сильной согласованности, когда им не требуется fsync при каждой записи

Я понимаю базовый протокол плота и как его достичь сильной согласованности. Однако, по моему мнению, для достижения реальной согласованности вам нужно использовать fsync для каждой записи (не только для лидера, но и для последователей), поскольку, если вы этого не сделаете, даже если вы подумали, что находитесь в безопасной зоне Большинство "зафиксированных", эти журналы потенциально могут быть потеряны в будущем, так как они все еще находятся в кэше страниц.

Но использование fsync при каждой записи ухудшит производительность системы на несколько порядков.

Поэтому мне интересно, как они решают компромисс или объясняют мне, если мое понимание неверно.

0 ответов

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

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