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>
JSON
{ "distributed-cache": { "partition-handling" : { "when-split": "DENY_READ_WRITES", "merge-policy": "PREFERRED_ALWAYS" } } }
YAML
distributedCache: partitionHandling: whenSplit: DENY_READ_WRITES mergePolicy: PREFERRED_ALWAYS
ConfigurationBuilder
ConfigurationBuilder builder = new ConfigurationBuilder(); builder.clustering().cacheMode(CacheMode.DIST_SYNC) .partitionHandling() .whenSplit(PartitionHandling.DENY_READ_WRITES) .mergePolicy(MergePolicy.PREFERRED_NON_NULL);