从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节点实际上是无用的并停止使用它?没有,目前没有。您可以让失败节点上的参与者自杀,但一旦重定大小器启动新的参与者,它们就会重新出现。即使集群支持还没有到来,这也不是自动的,因为到一些外部资源的连接不是集群可达性度量的一部分。这意味着您必须编写代码,明确地删除该节点,在此基础上可以将参与者迁移到其他节点(细节尚未完全充实)
因此,目前您必须将自己的路由器作为一个真正的参与者来编写,这需要考虑可达性。当数据库关闭时,您是否尝试过在另一个节点上停止子节点?