我正在查看Hazelcast的文档,我注意到驱逐政策的差异,我注意到一个我不完全理解的问题。
map_size_per_jvm: Max map size per JVM.
partitions_wide_map_size: Partitions (default 271) wide max map size.
我假设这两个都是关于条目而不是存储空间方面的大小。是不是一个分区将停留在1 JVM上?对我来说,这将是相同的选择,任何人都可以帮助我理解这两个之间的区别吗?
答案 0 :(得分:7)
首先,是的,最大尺寸map_size_per_jvm
,cluster_wide_map_size
和partitions_wide_map_size
是每个条目(不是存储空间大小)。
其次,这些最大尺寸是硬限制,虽然相似但它们实际上与驱逐政策不同(LRU
,{{1} }或LFU
)。
以下是它们的工作原理:
cluster_wide_map_size - 这是所有hazelcast节点的总地图条目。
map_size_per_jvm - 这实际上是每个hazelcast节点的地图条目数。
因此,如果您使用此策略运行2个节点,其中max size = 10(并且backupCount = 0,请参阅下文),则所有节点上最多有20个映射条目。添加另一个hazelcast节点会增加总的最大地图大小。
partitions_wide_map_size - 这个有点不可预测,因为它取决于节点间分区的分布。
当群集节点达到最大大小的(拥有的分区/总分区)的比例时,它达到最大值。代码:MaxSizePartitionsWidePolicy
请注意所有这些最大尺寸都包含备份,因此NONE
可以有效地将实际最大地图尺寸减半。
其他最大尺寸设置backupCount = 1
和used_heap_size
的使用情况似乎很清楚。
我希望这有帮助,祝你好运!