7.3. 配置分区处理
将 Data Grid 配置为使用分区处理策略和合并策略,以便在发生网络问题时解析分割集群。默认情况下,Data Grid 使用一种策略,以降低数据一致性保证成本来提供可用性。当因为网络分区客户端造成集群分割时,客户端可以继续对缓存执行读写操作。
如果您需要在可用性上一致性,您可以将 Data Grid 配置为在集群分割为分区时拒绝读写操作。或者,您可以允许读操作和拒绝写操作。您还可以指定配置 Data Grid 的自定义合并策略实现,以使用根据您的要求定制的自定义逻辑来解析分割。
先决条件
有一个 Data Grid 集群,您可以在其中创建复制或分布式缓存。
注意分区处理配置仅适用于复制和分布式缓存。
流程
- 打开 Data Grid 配置以进行编辑。
-
使用
partition-handling
元素或partitionHandling ()
方法向缓存添加分区处理配置。 指定当集群通过
when-split
属性或whenSplit ()
方法分割为使用 Data Grid 的策略。默认分区处理策略是
ALLOW_READ_WRITES
,因此缓存仍可使用。如果您的用例需要缓存可用性的数据一致性,请指定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);