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