7.3. 配置分区处理
配置 Data Grid 以使用分区处理策略和合并策略,以便在出现网络问题时解决分割集群。默认情况下,数据网格使用一种可降低数据一致性保障的策略。当因为网络分区客户端造成集群分离时,您可以继续在缓存上执行读写操作。
如果可用性需要一致性,您可以配置 Data Grid,以拒绝将集群分成分区的读写操作。另外,您可以允许读取操作并拒绝写操作。您还可以指定配置 Data Grid 的自定义合并策略实现,使用根据您的要求定制的逻辑进行拆分。
先决条件
- 具有数据网格集群,您可以创建复制或分布式缓存。 注意- 分区处理配置仅适用于复制和分布式缓存。 
流程
- 打开 Data Grid 配置进行编辑。
- 
						使用分区操作元素或分区 Handling ()方法向缓存添加分区处理配置。
- 指定在集群通过 - when-split属性或- whenSplit ()方法分割为分区时使用的 Data Grid 策略。- 默认分区处理策略是 - ALLOW_READ_WRITES,因此缓存仍保持vailabile。如果您的用例需要缓存可用性的数据一致性,请指定- DENY_READ_WRITES策略。
- 指定在使用 - merge-policy属性或- mergePolicy ()方法合并分区时,Data Grid 用来解析冲突条目的策略。- 默认情况下,数据网格无法解决合并上的冲突。 
- 保存对 Data Grid 配置的更改。
分区处理配置
XML
<distributed-cache>
   <partition-handling when-split="DENY_READ_WRITES"
                       merge-policy="PREFERRED_ALWAYS"/>
</distributed-cache>
<distributed-cache>
   <partition-handling when-split="DENY_READ_WRITES"
                       merge-policy="PREFERRED_ALWAYS"/>
</distributed-cache>JSON
YAML
distributedCache:
  partitionHandling:
    whenSplit: DENY_READ_WRITES
    mergePolicy: PREFERRED_ALWAYS
distributedCache:
  partitionHandling:
    whenSplit: DENY_READ_WRITES
    mergePolicy: PREFERRED_ALWAYSConfigurationBuilder
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC)
       .partitionHandling()
       .whenSplit(PartitionHandling.DENY_READ_WRITES)
       .mergePolicy(MergePolicy.PREFERRED_NON_NULL);
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC)
       .partitionHandling()
       .whenSplit(PartitionHandling.DENY_READ_WRITES)
       .mergePolicy(MergePolicy.PREFERRED_NON_NULL);