1.6. 状态传输
State transfer 是一个管理操作,用于在站点之间同步数据。
例如,LON 离线,NYC 开始处理客户端请求。当您重新上线 LON 时,LON 中的 Data Grid 集群没有与 NYC 中的集群相同的数据。
为确保数据在 LON 和 NYC 之间一致,您可以将状态从 NYC 推送到 LON。
- 状态传输是双向的。例如,您可以将状态从 NYC 推送到 LON,或者从 LON 推送到 NYC。
- 将状态推送到离线站点可重新在线。
State transfer 仅覆盖两个站点、原始站点和接收站点中存在的数据。Data Grid 不会删除数据。
例如,LON 存在"k2",而 LON 离线时, NYC . "k2" 会从 NYC 中删除。当您重新上线 LON 时,"k2"仍存在于该位置。如果您将状态从 NYC 推送到 LON,则传输不会影响 LON 上的"k2"。
为确保缓存的内容在状态传输后相同,请在推送状态前从接收站点的缓存中删除所有数据。
通过 CLI 使用 clear ()
方法或 clearcache
命令。
状态传输不会覆盖启动推送后发生的数据的更新。
例如,LON 和 NYC 中存在 "k1,v1"。LON 离线,以便您可以将状态传输从 NYC 推送到 LON,从而使 LON 重新上线。在状态传输完成前,客户端会将"k1,v2"放在 LON 上。
在这种情况下,来自 NYC 的状态传输不会覆盖 "k1,v2",因为在启动推送后发生了修改。
自动状态传输
默认情况下,您必须使用 CLI 或 JMX 或 REST 手动执行跨站点状态传输操作。
但是,在使用异步备份策略时,Data Grid 可以自动执行跨站点状态传输操作。当它检测到备份位置恢复在线且网络连接稳定时,Data Grid 会在备份位置之间启动双向状态传输。例如,Data Grid 同时将状态从 LON 传送到 NYC 和 NYC 到 LON。
为了避免临时网络断开连接触发状态传输操作,备份位置必须满足的两个条件才能离线。备份位置的状态必须离线,且不得包含在带有 JGroups RELAY2 的跨站点视图中。