Каков хороший способ сохранить состояние при перезапуске аварийного процесса?
У меня есть супервизор в приложении OTP, который следит за несколькими «подсистемами» gen_servers.
Например, одна из них представляет собой подсистему «погоды», которая генерирует новое состояние погоды каждые 15 минут и обрабатывает запросы о текущем состоянии погоды. (Вспомните игру на стенде с лимонадом)
Если этот gen_server выйдет из строя, я хочу, чтобы он был перезапущен, но он должен быть перезапущен с самым последним состоянием погоды, а не с каким-то произвольным состоянием, жестко запрограммированным в init()
. Было бы бессмысленно, если бы состояние симуляции внезапно изменилось от «града» к «приятному и свежему» только из-за крушения.
Я не решаюсь использовать mnesia или ETS для хранения состояния после каждого обновления из-за дополнительной сложности; есть ли способ проще?