Ответ 1
Основная проблема использования Akka в этом контексте заключается в том, что система Actor не имеет подходящей маневрирующей системы управления членством для таких децентрализованных распределенных вычислений.
Вам нужно что-то, что может обработать обертка node, которую вы описываете в своем сценарии. В частности, вам нужно что-то, что может отслеживать, когда узлы соединяются, уходят и считаются мертвыми и отключены из-за сбоев. Я бы рекомендовал посмотреть на Ibis: http://www.cs.vu.nl/ibis/ с реестром на основе сплетен. Вам все еще нужен один хорошо известный bootstrap node, чтобы привести систему в порядок, но в противном случае использование Join, Elect, Leave model Ibis обеспечит масштабируемость, которую вы ищете, в сочетании с реестром на основе Gossip. Эта система похожа на аккордов Akka таким образом, что она основана на системе вызовов вверх или вниз и однонаправленных труб, по которым вы передаете сообщения. Очень легко программировать распределенные материалы, как только вы получите Фу.
Что касается возможной согласованности, то это известная сложная проблема в таких крупных распределенных средах. Мне нужно будет узнать больше о типах транзакций, которые вы хотите распространять, а также о степени согласованности и сохранности истории, необходимых для получения дополнительных рекомендаций. Некоторые недавние документы доказали, что лучшее, что вы можете придумать, хотя и в такой враждебной среде, - это fork-причинно-консистенция, где, по крайней мере, каждый может видеть, что история разветвлялась, если не определяла "выигрышную" вилку, без какой-либо другой вилки механизм разрешения.
Биткойн - интересный пример в этом пространстве, где "выигрыш" определяется самой длинной цепочкой, но в этом пространстве есть и другие решения, которые могут работать или не работать в зависимости от семантики приложения. Ваш вопрос слишком расплывчатый, чтобы дать конкретные рекомендации в таком большом пространстве дизайна.