1.4. 备份策略
数据中心会在集群之间复制写入缓存的数据。例如,如果客户端将 "k1" 写入 LON,Data Grid 将 "k1" 同时备份到 NYC。
要将数据备份到不同的集群,Data Grid 可以使用同步或异步策略。
同步策略
当 Data Grid 将数据复制到备份位置时,它会同时写入本地集群中的缓存和远程集群中的缓存。使用同步策略时,Data Grid 会在返回前等待两个写操作完成。
如果备份操作失败,您可以控制 Data Grid 处理在本地集群中的缓存写入的方式。Data Grid 可以执行以下操作:
- 忽略失败的备份,并静默继续写入本地集群。
- 记录警告消息或抛出异常并继续写入本地集群。
- 使用自定义逻辑处理失败的备份操作。
同步备份还支持带参与选择事务的缓存的两阶段提交。备份的第一个阶段获取锁定。第二阶段提交修改。
与跨站点复制的两阶段提交具有显著的性能影响,因为它需要通过网络进行两个往返。
异步策略
当 Data Grid 将数据复制到备份位置时,在写入本地缓存前,它不会等待操作完成。
异步备份操作并写入本地缓存相互独立。如果备份操作失败,对本地缓存的写操作将继续,且不会发生异常。当发生这种情况时,Data Grid 也重试写入操作,直到远程集群与跨站点视图断开连接。
同步与异步备份
同步备份提供了最佳保证站点之间的数据一致性。如果 strategy=sync
,当 cache.put ()
调用返回时,您知道该值是本地缓存中和备份位置的最新。
这种一致性的权衡是性能。与异步备份相比,同步备份具有更高的延迟。
另一方面,异步备份不会为客户端请求添加延迟,因此它们不会影响性能。但是,如果 strategy=async
,当 cache.put ()
调用返回时,您无法确保备份位置中的值与本地缓存中的值相同。