2.6. 问题和答案
- 为什么要进行同步数据库复制?
- 同步复制的数据库可确保在站点失败后,在一个站点写入的数据始终会在其他站点中可用,且没有数据丢失。它还确保下一个请求不会返回过时的数据,与其提供服务的站点无关。
- 为什么要进行同步的 Data Grid 复制?
- 同步复制的 Data Grid 可确保在站点出现故障时,缓存的数据始终会在其他站点上可用,且不会丢失数据。它还确保下一个请求不会返回过时的数据,与其提供服务的站点无关。
- 为什么在站点间需要低延迟网络?
- 同步复制会延迟对调用者的响应,直到数据在其他站点收到为止。对于同步数据库复制和同步数据网格复制,因此当数据更新时,每个请求在站点间可能有多个交互,这会放大延迟。
- 同步集群是否低于异步集群?
异步设置会安全地处理站点之间的网络故障,而同步设置会延迟请求,并将抛出错误到调用者,异步设置会延迟到 Data Grid 或另一站点上的数据库。但是,因为两个站点永远不会完全更新,所以这个设置可能会导致失败过程中数据丢失。这包括:
- 丢失了导致用户无法使用旧密码登录的更改,因为在使用异步数据库时数据库更改不会复制到其他站点。
- 无效的缓存导致用户使用旧密码登录,因为在使用异步 Data Grid 复制时,无效的缓存不会传播到其他站点的故障点。
因此,高可用性和一致性之间存在权衡。本主题的重点是,与红帽构建的 Keycloak 相比,确定一致性优先级。