Akka群集状态弱

时间:2018-09-09 08:41:20

标签: akka-cluster

我阅读了Akka文档并找到了它

  

如前所述,如果节点不可访问,则八卦收敛是不可能的,因此任何领导者行为也是不可能的。通过启用akka.cluster.allow-weakly-up-members(默认情况下启用),可以在尚未达到收敛的情况下提升新的加入节点。这些Joining节点将被提升为WeaklyUp。达成八卦融合后,领导者会将WeaklyUp成员移至Up。

但这并不能解释WeaklyUp状态的目的是什么。因此,请帮助我解释一下WeaklyUp和Joining有什么区别?

1 个答案:

答案 0 :(得分:0)

WeaklyUp的含义可能是特定于应用程序的。 (毕竟,正如您所指出的,是否允许甚至允许WeaklyUp是可配置的。)但是,通常,WeaklyUp是一种情况,指示新节点与领导者同步(即,领导者看到该节点,并且该节点拥有来自领导者的信息),但是(由于无法达到收敛),所有节点尚未看到新节点。

如何处理这样的节点取决于您自己。但是,处于此状态的节点在某些方面可能有用。例如,该节点可能会接收来自外界的传入流量。新节点知道群集的状态,因此它将知道如何处理所有传入的请求,甚至是需要群集感知路由的请求。

例如,

Akka Bootstrap(默认情况下)将向Kubernetes报告WeaklyUp节点为“就绪”。从而使其有资格接收传入流量。这就是您问题的规范答案:WeaklyUp节点可以接收和处理请求,并将消息路由到群集中的其他节点。当然,由于远程工作正常,因此它也可以收到响应。顺便说一句,由于我们正在谈论远程处理,因此,另一个示例是WeaklyUp成员也有资格进行群集感知路由。由于如果路由器知道新节点,那么就其自身的路由决策而言,其他一些节点不知道该节点的事实也无济于事。

但是,正如文档所示,WeaklyUp成员有很多局限性,因为并非所有成员都看到了新节点,因此不能执行依赖于收敛的任何操作:例如仲裁决定或分片