Могли ли AKKA удаленные актеры использоваться в контексте роя p2p?

Большинство случаев использования, которые я видел для Akka, представляют собой высокопроизводительные многоядерные серверы или локальные кластеры.

Мне интересно, как это применимо к более удаленным высоким задержкам и сильно неудачным структурам роя, таким как сети p2p.

Приложение, которое я имею в виду, будет иметь правила о достоверности и/или ресурсоемкости узлов рой, дающих им некоторый статус, как bittorrent. Это также должно было бы позволить рекламировать транзакции через рой, а также возможно, но конечная или частичная согласованность была бы приемлемой. Масштабируемость будет более высокой, чем согласованность.

Является ли AKKA потенциальным решением для создания чего-то подобного? Имеет ли он конкретные преимущества или недостатки по сравнению с другими подходами.

Ответ 1

Основная проблема использования Akka в этом контексте заключается в том, что система Actor не имеет подходящей маневрирующей системы управления членством для таких децентрализованных распределенных вычислений.

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

Что касается возможной согласованности, то это известная сложная проблема в таких крупных распределенных средах. Мне нужно будет узнать больше о типах транзакций, которые вы хотите распространять, а также о степени согласованности и сохранности истории, необходимых для получения дополнительных рекомендаций. Некоторые недавние документы доказали, что лучшее, что вы можете придумать, хотя и в такой враждебной среде, - это fork-причинно-консистенция, где, по крайней мере, каждый может видеть, что история разветвлялась, если не определяла "выигрышную" вилку, без какой-либо другой вилки механизм разрешения.

Биткойн - интересный пример в этом пространстве, где "выигрыш" определяется самой длинной цепочкой, но в этом пространстве есть и другие решения, которые могут работать или не работать в зависимости от семантики приложения. Ваш вопрос слишком расплывчатый, чтобы дать конкретные рекомендации в таком большом пространстве дизайна.