检测来自akka路由器的远程节点的故障

时间:2012-02-03 07:53:48

标签: akka

假设我有一台配置为在多个远程节点上创建actor的路由器。也许我有这样的配置:

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 个答案:

答案 0 :(得分:2)

不,目前还没有。您可以让失败节点上的演员自杀,但一旦调整器启动新节目,他们就会重新出现。即使有了集群支持 - 即将到来 - 这也不是自动的,因为与某些外部资源的连接不是集群可达性度量的一部分。这意味着您必须编写明确删除该节点的代码,然后可以将actor迁移到其他节点(详细信息尚未完全填充)。

所以,目前你必须把你自己的路由器写成一个真正的演员,这需要考虑到可达性。