Hazelcast 缩放和最小仲裁大小

Hazelcast 缩放和最小仲裁大小,hazelcast,Hazelcast,如果Kubernetes自动缩放Hazelcast IMDG群集,我如何更新最小群集大小以满足新的仲裁要求 例如,我有一个3实例集群,最小集群大小设置为2。缓存已满,因此Kubernetes决定旋转另外两个实例。现在如何将最小群集大小更新为3?或者反过来说,Kubernetes现在关闭了2个实例,如何将最小集群大小更新回2 如果有必要的话,我正在使用嵌入Spring Boot的Hazelcast。目前,您无法在Hazelcast中动态更改最小集群大小,因此这是不可能的。您可以通过实现自己的自定义

如果Kubernetes自动缩放Hazelcast IMDG群集,我如何更新最小群集大小以满足新的仲裁要求

例如,我有一个3实例集群,最小集群大小设置为2。缓存已满,因此Kubernetes决定旋转另外两个实例。现在如何将最小群集大小更新为3?或者反过来说,Kubernetes现在关闭了2个实例,如何将最小集群大小更新回2


如果有必要的话,我正在使用嵌入Spring Boot的Hazelcast。

目前,您无法在Hazelcast中动态更改
最小集群大小,因此这是不可能的。

您可以通过实现自己的自定义
quorum函数来实现动态更改的quorum大小。例如:

public class DynamicQuorumSize implements QuorumFunction {
    private volatile int minimumClusterSize;

    @Override
    public boolean apply(Collection<Member> members) {
        // don't lookup minimumClusterSize here from external services, DBs
        // or other slow sources
        return members.size() >= minimumClusterSize;
    }

    // allow updating minimum cluster size
    public void setQuorumSize(int minimumClusterSize) {
        this.minimumClusterSize = minimumClusterSize;
    }
}
公共类DynamicQuorumSize实现了QuorumFunction{
私有volatile int最小集群大小;
@凌驾
公共布尔应用(集合成员){
//不要在这里从外部服务、DBs查找minimumClusterSize
//或其他慢源
返回成员。size()>=minimumClusterSize;
}
//允许更新最小群集大小
公共void setQuorumSize(int minimumClusterSize){
this.minimumClusterSize=minimumClusterSize;
}
}

当我的成员集合减少时,我如何知道这是由于完全关闭还是由于网络分区?如果我得到一个网络分区,我不想减少最小集群大小。