обнаружение отказа от удаленных узлов от маршрутизатора akka - PullRequest
3 голосов
/ 03 февраля 2012

Допустим, у меня есть маршрутизатор, который настроен для создания акторов на нескольких удаленных узлах.Возможно, у меня есть такая конфигурация:

akka {
        actor {
            deployment {
                 /fooRouter {
                router = round-robin
                resizer {
                    lower-bound = 2
                    upper-bound = 10
                }
                target {
                    nodes = ["akka://mana@10.0.1.1:2555", "akka://mana@10.0.1.2:2555"]
                }
            }
        }
    }

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

1 Ответ

2 голосов
/ 16 апреля 2012

Нет, в настоящее время нет.Вы можете заставить актеров на отказавшем узле совершить самоубийство, но как только рестайзер запустит новые, они появятся снова.Даже с поддержкой кластеризации, которая еще впереди, это не будет автоматическим, поскольку соединения с некоторым внешним ресурсом не являются частью метрики достижимости кластера.Это означает, что вам придется написать код, который явно отключает этот узел, после чего акторы могут быть перенесены на какой-то другой узел (детали еще не полностью раскрыты).

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

...