Как безопасно удалить журнал истории в рафте, когда все записи журнала узлов были зафиксированы

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
194
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

Однако обратите внимание, что при перезапуске узла все еще будет некоторое воспроизведение журналов, что технически неизбежно, поскольку применение записей и сохранение индекса lastApplied не может выполняться атомарно, поэтому воспроизведение записей журнала все еще необходимо учитывать в постоянном конечном автомате. .

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

См. Раздел о машинах с постоянным состоянием в диссертации Raft.

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

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