gpt4 book ai didi

hazelcast - 具有 PE​​R_NODE 策略的 MaxSizeConfig 大小

转载 作者:行者123 更新时间:2023-12-04 17:19:35 25 4
gpt4 key购买 nike

MaxSizeConfig 坏了吗?我希望映射最多包含 2000 个条目,然后才开始驱逐旧条目,但是当我插入 2000 个条目时,我得到 340 个驱逐。

@Bean
public Config hazelCastConfig() {
Config config = new Config();
config.setProperty("hazelcast.logging.type", "slf4j");
// config.setProperty("hazelcast.partition.count", "2");

MapConfig mapConfig = new MapConfig()
.setBackupCount(0)
.setName("map")
.setEvictionPolicy(EvictionPolicy.LRU)
.setMaxSizeConfig(new MaxSizeConfig(2000, MaxSizeConfig.MaxSizePolicy.PER_NODE))
.addEntryListenerConfig(new EntryListenerConfig(new ExampleEntryListener(), false, true));
config.addMapConfig(mapConfig);

return config;
}

找到这个关于驱逐的公式:https://docs.hazelcast.org/docs/3.12/manual/html-single/index.html#understanding-map-eviction

partition-maximum-size = max-size * member-count / partition-count

在我的例子中,partition-count=271,member-count=1(运行嵌入了 hazelcast 实例的 spring-boot 应用程序)。因此,要保证存储 2000 个,最大大小需要为:

max-size = partition-maximum-size * partition-count / member-count

max-size = 2000 * 271 / 1 = 471000

471000 对于只有 2000 个条目来说似乎太大了。当我设置 max-size=6000 时,hazelcast 似乎至少保留 2000 个条目。

问题:我的配置/公式有什么问题?我如何配置 hazelcast 以严格保留 X 个条目 PER_NODE。因此,当使用(1 个用于测试的节点和 2 个用于 PRELIVE 的节点)部署应用程序时,hazelcast 形成了 2 个(或 1 个)成员的集群,集群中有 2000 个条目,而不是更多,而不用花哨的公式计算任何东西,只指定 2000?

最佳答案

这是当您使用 PER_NODE 配置最大尺寸时发生的情况:

configuredEntrySize=2000, PER_NODE

totalEntrySize=configuredEntrySize*memberCount(测试环境为 2000,PRELIVE 为 4000)

默认有271个分区

perPartitionEntrySize=totalEntrySize/partitionCount(测试环境为 7,PRELIVE 为 14)

当您将条目放入 map 时,hazelcast 会使用键的散列 (hash_of_the_key%partitionCount) 找出条目应该存储在哪个分区。如果您的数据不是完全统一的,您将在某些分区中存储超过 7 个条目,从而导致驱逐。

您可以将 Hazelcast IMap 视为一个映射数组,数组的大小就是分区数。每个成员存储这个数组的一部分。说 MemberA 商店map-0、map-3、map-6... MemberB 存储map-1、map-4、map-7... MemberC 存储 map-2、map-5、map-8... Hazelcast 使用键的散列从这个数组中挑选一个映射,并将您的条目存储在这个选定的 map 。当您调用 IMap.size() 时,将向每个成员发送一个操作,收集这些 map 的所有大小并作为总数返回。由于对每次逐出检查都执行此操作不是最佳选择,因此 Hazelcast 根据您配置的内容计算每个分区的最大大小,并将该数字用作每个映射的最大大小。

关于hazelcast - 具有 PE​​R_NODE 策略的 MaxSizeConfig 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67049846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com