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