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