- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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 - 具有 PER_NODE 策略的 MaxSizeConfig 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67049846/
我正在编写 Spring 引导教程,但我有点卡在视频的这一部分。视频中的叙述者在 return 语句中使用了 MaxSizeConfig 导入。尝试同一行时,我收到一条错误消息,指出无法将 MaxSi
MaxSizeConfig 坏了吗?我希望映射最多包含 2000 个条目,然后才开始驱逐旧条目,但是当我插入 2000 个条目时,我得到 340 个驱逐。 @Bean public Config ha
我是一名优秀的程序员,十分优秀!