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

从akka路由器检测远程节点的故障,akka,Akka,假设我有一个路由器,它被配置为在多个远程节点上创建参与者。也许我有这样的配置: akka { actor { deployment { /fooRouter { router = round-robin resizer { lower-bound = 2 upper-bound =

假设我有一个路由器,它被配置为在多个远程节点上创建参与者。也许我有这样的配置:

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节点实际上是无用的并停止使用它?

没有,目前没有。您可以让失败节点上的参与者自杀,但一旦重定大小器启动新的参与者,它们就会重新出现。即使集群支持还没有到来,这也不是自动的,因为到一些外部资源的连接不是集群可达性度量的一部分。这意味着您必须编写代码,明确地删除该节点,在此基础上可以将参与者迁移到其他节点(细节尚未完全充实)


因此,目前您必须将自己的路由器作为一个真正的参与者来编写,这需要考虑可达性。

当数据库关闭时,您是否尝试过在另一个节点上停止子节点?