@kirillgrachoff нет, просто в голову пришло.
@kirillgrachoff это немного упрощенный взгляд на конечные автоматы, сам по себе эрланговский процесс не является таковым из коробки
@mudasobwa @3draven
На чистом Erlang не писал. Не разбираюсь.
В Elixir всё очень похоже.
@kirillgrachoff эликсир — это набор макросов над эрлангом, он выполняется на эрланговой виртуальной машине и процессы в нем чисто эрланговские.
Процесс может упасть, и будет перезапущен супервизором в начальном состоянии, это ломает контракт конечного автомата.
Моя библиотека https://hexdocs.pm/finitomata — немного приближает процессы к настоящему конечному автомату (persistency layer и гарантии защиты от плохого клинентского кода).
Понял. Не зал подробностей (не задумывался про hypervisor и перезапуск). Да, действительно ломает. (Надо бы, наверное, где-то найти длинный email почитать про то, почему перезапуск в начальном состоянии, а не в последнем корректном. Догадка состоит в том, что оно упадёт точно так же)
Не уверен, что посмотрю библиотеку, но кажется, что это правильный шаг. (особенно если там где-то есть консенсус)
@kirillgrachoff виртуальная машина не может хранить все последние состояния всех последних процессов по накладным расходам это очень дорого, ей и так пеняют за точки останова для передачи управления.
Консенсус для правильной реализации конечного автомата не нужен, это другая задача.
Понял. (бенчмаркам верить можно)
Да, можно обойтись выбором лидера (что эквивалентно консенсусу с точки зрения математики).
Здесь вопрос в том, как понять, что процесс умер, и надо начать принимать модификации состояния от другого процесса (и от какого).
А. Или Erlang VM как-то сама занимается поднятием ровно 1 процесса на замену каждому процессу на упавшей машине?
@kirillgrachoff какого еще лидера? Там нет лидеров, это другая задача, сказал же.
> Не уверен, что посмотрю библиотеку
А зачем на нее смотреть? Принцип работы я описал, а код вы скорее всего не поймете.
@3draven а, понял.
Думал, из-за того, что код в акторах (которые по сути стейт машины с состоянием) выглядит компактно и хорошо скейлится. Я просто словил катарсис, когда понял, как это просто.