Как посмотреть смерть удаленного актера в кластере Акка? - PullRequest
0 голосов
/ 12 марта 2020

Я использую кластер шардинга Akka, чтобы распределить свою рабочую нагрузку по нескольким узлам, и использую context.watchWith(worker) для обнаружения неожиданного завершения дочернего актера.

Кажется, если дочерний актор расположен на другом узел от родительского узла (путем разбиения кластера), и если этот дочерний узел не работает, родительский субъект не получит уведомление о смерти дочернего субъекта.

Я знаю, что могу добавить свою собственную логику c для отслеживания жизненного цикла дочернего актера.
Тем не менее, мне интересно, есть ли у Akka встроенная поддержка дозора смерти в этом случае (ребенок субъект на удаленном узле)?

1 Ответ

1 голос
/ 23 марта 2020

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

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

Если мотивом для наблюдения за удаленным актером является получение какой-либо гарантии доставки, было бы интересно узнать, что мы добавили новый инструмент под названием Надежная доставка в Akka 2.6.4, который был недавно выпущен , Вы можете увидеть его в образце распределенной рабочей нагрузки в этом PR https://github.com/akka/akka-samples/pull/186

...