首页 > 解决方案 > Akka Cluster 状态 Weakly Up

问题描述

我阅读了 Akka 文档并找到了这个

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

但它没有解释 WeaklyUp 状态的目的是什么。那么,请帮我解释一下WeaklyUp和Joining有什么区别?

标签: akka-cluster

解决方案


WeaklyUp 的含义是特定于应用程序的。(毕竟,正如您所指出的,是否允许 WeaklyUp 是可配置的。) WeaklyUp 是一种情况,表明新节点与领导者同步,但所有节点尚未就新节点的状态达成一致(因为尚未达到收敛,因此获得了真正的 Up 状态)。

您对处于该状态的节点做什么取决于您自己。例如,WeaklyUp 节点可能会接收来自外部世界的传入流量。由于 WeaklyUp 节点知道集群的完整状态,它知道如何处理所有传入请求,甚至是需要集群感知路由的请求。

例如,Akka Bootstrap(默认情况下)将向 Kubernetes 报告 WeaklyUp 节点为“就绪”。从而使 WeaklyUp 节点有资格接收传入流量。这就是您问题的规范答案:WeaklyUp 节点可以接收和处理请求并将消息路由到集群中的其他节点。当然,它也可以接收响应,因为远程处理正常工作。另一个例子是 WeaklyUp 成员也有资格使用集群感知路由。因为如果集群感知路由器知道 WeaklyUp 节点,那么其他一些节点可能不知道 WeaklyUp 节点的事实是没有实际意义的。

然而,正如文档指出的那样,WeaklyUp 成员有很多限制,因为并非所有成员都看到了新节点,因此不能允许它做任何取决于收敛的事情:比如参与仲裁决策或分片。


推荐阅读