Akka集群脑裂

本文探讨了Akka集群在面临脑裂问题时的影响、期望的处理方式以及三种策略:Static Quorum、Keep Majority和Keep Oldest。这些策略旨在确保在网络分区或节点故障时,集群能稳定运行并避免数据一致性问题。同时,文章提醒了在特定情况下各策略的局限性和适用场景。
摘要由CSDN通过智能技术生成

集群脑裂

问题和影响

系统集群化后,出现物理机崩溃的情况,或者节点奔溃,如果没有从集群成员中剔除,系统会一直尝试连接。而网络分区、以及进程高负载无响应情况,则会引发脑裂现象。当一个节点观察到另外节点异常时,系统无法判定它暂时性故障还是永久性故障,所以我们把这些情况一起处理。

脑裂会把集群划分成多个集群,且独立运行,如果使用了类似Singleton唯一性业务的功能,就会有问题。

期望

发生崩溃时,我们希望集群立即把崩溃的节点从成员资格中剔除;网络分区或者无响应时,我们希望等待一会,再检查节点是否治愈,如果治愈了就保持成员资格,如果还是无法响应就得关闭其中一侧的节点。

这里有个难点,不知道哪一侧应该保留,那一侧关闭,因为两侧也不能互相通讯。所以我们希望,双方都能自己做出决定,并且哪一侧继续运行哪一侧自行关闭得做出相同的决定。

策略

前提

所有策略的前提是集群处于一个稳定的(stable)状态。


# To enable the split brain resolver you first need to enable the provider in your application.conf:
# akka.cluster.downing-provider-class = "com.lightbend.akka.sbr.SplitBrainResolverProvider"

akka.cluster.split-brain-resolver {
  # Select one of the available strategies (see descriptions below):
  # static-quorum, keep-majority, keep-oldest, keep-referee, down-all
  # if left "off" when the downing provider is enabled cluster startup will fail.
  active-strategy = off

  # Time margin after which shards or singletons that belonged to a downed/removed
  # partition are created
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值