2.2.2. 密钥所有权

分布式缓存将条目分成固定数量的片段,并将每个网段分配给所有者节点列表。复制缓存执行相同的操作,但每个节点都是一个所有者。

所有者列表中的第一个节点是主所有者。列表中的其他节点是 备份所有者。当缓存拓扑更改时,因为节点加入或离开集群,片段所有权表会广播到每个节点。这样,节点可以在不为每个密钥发出多播请求或维护元数据的情况下定位密钥。

numSegments 属性配置可用的片段数量。但是,除非集群重启,否则片段的数量无法更改。

与键对映射相同,也无法更改。无论集群拓扑的变化如何,键必须始终映射到同一片段。重要的一点是,在尽量减少集群拓扑更改时,键与分段映射平均分配分配给每个节点的片段数量非常重要。

一致的哈希值工厂实现描述

SyncConsistentHashFactory

根据 一致的散列 使用算法。当服务器提示被禁用时,默认选择。

只要集群是对称,这个实现始终都会将密钥分配给每个缓存中的同一节点。换句话说,所有缓存在所有节点上都运行。这个实现的负点会有一些负点,负载分布略微不均匀。它还可使片段比加入或保留的严格必要条件移动。

TopologyAwareSyncConsistentHashFactory

相当于 SyncConsistentHashFactory,但在拓扑间分配数据提示,从而使备份的数据副本存储在拓扑中的不同节点上。这是与服务器提示进行的默认一致哈希实现。

DefaultConsistentHashFactory

实现比 SyncConsistentHashFactory 更有的分发,但有一个缺点。节点加入集群的顺序决定了哪些节点拥有哪些片段。因此,在不同缓存中可能会将密钥分配给其他节点。

TopologyAwareConsistentHashFactory

相当于 DefaultConsistentHashFactory,但在拓扑间分配数据提示,从而使备份的数据副本存储在拓扑中的不同节点上。

ReplicatedConsistentHashFactory

内部用于实施复制缓存。您不能在分布式缓存中显式选择这个算法。

散列配置

您可以配置 ConsistentHashFactory 实现,包括只带有内嵌缓存的自定义设置。

XML

<distributed-cache name="distributedCache"
                   owners="2"
                   segments="100"
                   capacity-factor="2" />

ConfigurationBuilder

Configuration c = new ConfigurationBuilder()
   .clustering()
      .cacheMode(CacheMode.DIST_SYNC)
      .hash()
         .numOwners(2)
         .numSegments(100)
         .capacityFactor(2)
   .build();

其他资源