Использование протокола сплетен в управлении кластером Erlang
Я новичок в Erlang, а также распределенные вычисления. Мы небольшая команда, которая пытается создать небольшой сервер обмена сообщениями. Одна из вещей, которые мы рассматриваем, как мы управляем состоянием кластера - мы столкнулись с несколькими индивидуальными реализациями в проектах с открытым исходным кодом Erlang, такими как Riak, rabbitMq, ejabbered и Vernemq.
Похоже, что сообщество Erlang переходит на использование протокола сплетен для управления кластером - я вижу следующую публикацию на RabbitMQ ( https://groups.google.com/forum/$20protocol/rabbitmq-users/jvQQy30kLTI/hIDFw94SddQJ
Мой вопрос - есть ли другой способ управления кластером, кроме протокола сплетен? а также какова реализация erlang с открытым исходным кодом протокола сплетни. Какие соображения нужно учитывать при рассмотрении управления узлами Erlang?
Спасибо за вашу помощь.
1 ответ
Я не эксперт по распределенным вычислениям, поэтому мой ответ может быть сомнительным, но в любом случае. Все зависит от того, каково состояние вашего кластера и какие у вас требования.
Если вам нужно гарантировать непротиворечивость состояния между каждым участником кластера, вы получите какой-то механизм распределенного консенсуса, такой как zk, paxos или raft.
Если вам нужна высокая доступность, вам понадобится протокол на основе сплетен и ваше приложение будет осведомлено о возможной несогласованности данных (как это делает Riak с типами данных CRDT и векторными часами).
Если вы не знаете, что вам нужно, я бы выбрал первый вариант, так как он очень прост с точки зрения разработчика. И пошел бы на второй вариант, если бы я четко понял, что 1-й вариант больше не является вариантом;)