Подтвердить что ты не робот

Разница между кластеризацией и удалением в Акке

Я разработал свое приложение с Akka на одном JVM. Теперь я хочу распределить рабочую нагрузку на многих машинах. Я начал читать документацию и запутался.

Существует два способа сделать приложение Akka распределенным путем кластеризации и удаленного доступа. Я не понимаю разницу между ними. Если я правильно понимаю, оба они исключают себя взаимно, так как в конфигурации нужно использовать другой провайдер для ссылки на актера:

 akka.remote.RemoteActorRefProvider
 akka.cluster.ClusterActorRefProvider

Итак, какие варианты использования? Когда я бы выбрал один вместо другого?

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

4b9b3361

Ответ 1

Они не являются взаимоисключающими, поскольку кластеризация выполняется поверх удаленных объектов. Основной особенностью удаленного доступа является прозрачность местоположения для ActorRefs. Кластеризация добавляет к этому распределенное членство. Редко использовать дистанционное использование, кластеризация является предпочтительной для большинства случаев использования.

Ответ 2

Всегда лучше всего смотреть на код

https://github.com/akka/akka/blob/c2983c7225eeaa035af99e0affeb5f5c841668c4/akka-cluster/src/main/scala/akka/cluster/ClusterActorRefProvider.scala

private[akka] class ClusterActorRefProvider ... extends RemoteActorRefProvider

Прежде всего ClusterActorRefProvider - это просто расширение RemoteActorRefProvider

Основные функции кластера-akka, добавленные к удалению, следующие:

  • Обнаружение сбоев в кластере
  • маршрутизаторы с возможностями групп root и пула

вы найдете вкус всех этих аддонов в исходном коде.