配置 Hazelcast 映射备份时,它是否映射最大大小也包括备份条目?

When Hazelcast Map backup is configured, does it map max-size include backup entries also?

假设我对 Hazelcast 地图进行了以下配置

没有。集群中的节点数:1
地图配置:
最大大小:100MB
同步备份计数:1
异步备份计数:0

如果我使用 20 个唯一键(每个条目占用 1 MB)进行 map.put(...) 调用,消耗的地图内存是多少?

备份条目的内存使用是否也被视为最大大小的一部分?

如果您的节点少于请求的数据副本,则无法获得请求的所有数据副本。

例如,backup-count=2 请求 3 个数据副本,主副本和两个备份副本。如果只有 2 个节点,那么您无法在任何地方托管第二个备份。一个节点承载多个副本是没有意义的——这是为了数据安全,一个节点故障应该只会导致一个副本丢失。

如果您写了 20 个 1MB 的条目,那么每个副本就是 20MB。你有 1 个节点,所以 1 个副本,所以 20MB。

您将没有任何备份副本,因为没有地方可以存放它们。但如果您这样做了,它们将包含在最大尺寸计算中。

对于您的示例,如果您有 4 个节点、1 个备份(总共 2 个副本)和 20 个条目,您希望每个节点有 5 个主副本条目和 5 个备份副本条目,所以10MB 的数据。 40MB 的数据分布在 4 个节点上。实际分配取决于密钥,可能不统一。

您可以通过管理中心确认这一切。这不是一个坏主意,因为通常被认为是 1MB 的条目实际上在序列化后具有不同的大小并允许条目开销。

https://docs.hazelcast.org/docs/4.0/manual/html-single/index.html#map-eviction 解释了驱逐的工作原理。