1

当在akka集群中变得无法访问时,是否有任何适当的方法来关闭节点。我想在节点无法访问时将 api 暴露给它,但我更喜欢以编程方式找到另一种方式或某些东西。自动关机不再是一种选择,因为我一直有脑裂问题。

我可以在接收 方法中关闭节点吗:

def 接收:接收 = { case MemberUp(member) =>

case UnreachableMember(member) => {      
  Cluster(context.system).down(member.address)
}
4

1 回答 1

1

如果节点崩溃了,在任何其他节点上关闭它都可以。

但是您必须将其作为对看到它无法访问的反应,如果它是一个网络分区而不是一个节点崩溃无法访问分区的每一侧将导致集群的其余部分无法访问并且所有这些都将导致脑裂,你最终会得到两个集群,认为他们已经击落了另一侧。

这就是我们在 Akka 2.6 中移除自动停机的确切原因

如果您想自动删除具有裂脑分辨率的节点,您将需要使用/实现一个为您处理该问题的宕机提供程序。

自己实现一个 downing 提供程序需要相当多的努力和思考。有关该问题的更多背景信息,您可以在此处阅读商业 Lightbend SBR 的文档:https ://doc.akka.io/docs/akka-enhancements/current/split-brain-resolver.html

于 2020-02-19T09:05:58.573 回答