Как справиться с неудачей главного актера

1

Я новичок в Akka, я построил модель Akka, которая подключается к HDFS, извлекает данные, обрабатывает их и записывает обработанные данные обратно в HDFS. Теперь, если мой главный актер сработает, тогда соответствующие дочерние актеры (Рабочие) будут разбиваться, и вся система должна перезагрузиться.

Итак, если есть процесс создания вторичного мастера, который автоматически вступает в действие, как только первичный сбой с минимальным временем восстановления. Я не могу сделать четкую картину вокруг этого.

Любая помощь будет оценена.

благодаря

Теги:
hadoop
akka

2 ответа

1

Из документов:

/пользователь: The Guardian Actor

Актер, с которым, вероятно, больше всего взаимодействует, является родителем всех созданных пользователем актеров, опекуном с именем "/user". Актеры, созданные с помощью system.actorOf(), являются дочерними элементами этого актера. Это означает, что, когда этот опекун прекратится, все нормальные актеры в системе также будут отключены. Это также означает, что эта стратегия наблюдателей-хранителей определяет, как контролируются нормальные субъекты верхнего уровня. Начиная с Akka 2.1, это можно настроить, используя настройку akka.actor.guardian-supervisor-strategy, которая берет полностью квалифицированное имя класса SupervisorStrategyConfigurator. Когда опекун эскалирует сбой, ответ корневых опекунов будет заключаться в том, чтобы остановить опекуна, который фактически отключит всю систему актеров.

Ваш мастер является актером верхнего уровня в вашем приложении, поэтому он является дочерним положением пользователя-хранителя, поэтому он будет перезагружен автоматически, потому что наблюдение за Хранителем по умолчанию:

  final val defaultDecider: Decider = {
    case _: ActorInitializationException ⇒ Stop
    case _: ActorKilledException         ⇒ Stop
    case _: DeathPactException           ⇒ Stop
    case _: Exception                    ⇒ Restart
  }
  • 0
    @ user3840262 Ну, тогда ты понимаешь, что тебе не нужен другой мастер. Возможно, за исключением случаев, когда перезапуск вашего мастера стоит очень дорого, и вы не можете позволить себе ждать, тогда вы можете как-то отразить своего мастера перед другим актером и разбудить его, когда это необходимо. Не очень много знаю, но, может быть, вы даже посмотрите на Akka-Cluster с его возможностями восстановления после отказа. Может быть излишним, хотя.
  • 0
    Спасибо за ответ. Да, я получил представление об актере Guardian и о том, как оно контролирует созданных пользователем актеров. Но мой вопрос заключается в том, есть ли какой-нибудь возможный способ создать более одного актера-супервизора для одной и той же работы. Таким образом, если по какой-либо причине один супервизор выходит из строя, другой супервизор может взять на себя управление, и задание не нужно перезапускать. Мой вопрос связан с масштабируемостью и отказоустойчивостью системы.
Показать ещё 1 комментарий
0

Или у вас может быть супервизор, дочерний элемент опекуна/пользователя, который может перезапустить его в вашем случае хозяина, к которому вы обращаетесь. Если есть что-то, что может заставить актера получить исключение, это должно быть сделано дочерним актором. Ребенок может быть перезапущен среди других действий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню