Мне очень нравится Golang для легкого написания параллельного программного обеспечения, чтобы использовать больше моих ядер процессора на одной машине. Я был немного обеспокоен, узнав, что Go на самом деле не является распространенным (как в языке multi- node concurrency) - что даже Роб Пайк допустил (в GopherCon 2014), что он не был разработан для распределенных вычислений с самого начала, хотя есть пакеты, такие как GoCircuit, который пытается помочь.
Таким образом, в последнее время меня интересовали Erlang и Elixir, из-за усиленной битвой Erlang VM, которая использовалась для распространения приложений по узлам в течение десятилетий.
Но после того, как я узнал, что Rust использует большую часть функций concurrency от Erlang (передача сообщений, сопоставление с образцом), при этом все еще являясь статически типизированным и скомпилированным языком (таким образом, потенциально быстрее), мне было интересно, может ли Rust хорошая альтернатива (помимо Erlang/Elixir) для написания распределенного программного обеспечения multi- node?
Вот некоторые конкретные вопросы, которые указывают на запрашиваемую информацию:
- Как Rust обрабатывает устойчивость к частичным отказам (подобно тому, как Erlang "разрешает это" крушить "философию через изоляцию процесса)?
- Предоставляет ли Rust простые в использовании удаленные каналы, передачу сообщений или что-то еще в стандартной библиотеке или готовых пакетах для поддержки обмена данными между машинами?
- Каковы некоторые особенности Erlang/Exlixir, которые могут быть желательными для распределенного программного обеспечения, но недоступны в Rust?