2.11. 数据一致性
驻留在分布式系统上的数据容易受到临时网络中断、系统故障或简单人为错误造成的错误。这些外部因素不可控制,但可能会对数据的质量造成严重后果。数据崩溃的影响从较低的客户参与到昂贵的系统协调,这会导致服务不可用。
数据中心可以执行 ACID (绿色、一致、隔离、持久)事务,以确保缓存状态一致。
事务是数据中心以单一操作形式进行的一系列操作。事务中的所有写入操作都成功完成,或者它们都失败。这样,事务会以一致的方式修改缓存状态,提供读取和写入的历史记录,或者根本不修改缓存状态。
启用事务的主要性能问题是在具有更加一致的数据集和增加延迟来降低写入吞吐量的延迟之间平衡。
使用事务写入锁定
配置错误的锁定模式可能会对事务的性能造成负面影响。正确的锁定模式取决于您的 Data Grid 部署是否有高或低的密钥竞争率。
对于争用率较低的工作负载,其中两个或多个事务可能无法同时写入同一密钥,因此最佳锁定可提供最佳性能。
Data Grid 在事务提交前在密钥上获取写入锁定。如果密钥争用,获取锁定所需的时间可能会延迟提交。另外,如果 Data Grid 检测到冲突的写入,它会回滚事务,应用程序必须重试它,增加延迟。
对于具有高竞争率的工作负载,pessimistic locking 可提供最佳性能。
当应用程序访问它们以确保其他事务都不可修改密钥时,数据科学家在密钥上获取写入锁定。事务提交在单个阶段完成,因为密钥已经被锁定。通过多个关键事务进行模拟锁定会导致 Data Grid 锁定密钥更长的时间,这可以降低写入吞吐量。
读取隔离
除使用 REPEATABLE_READ
锁定外,隔离级别不会影响数据中心性能考虑。在这个版本中,Data Grid 会检查写入 skews 以检测冲突,这可能会导致较长的事务提交阶段。Data Grid 还使用版本元数据来检测冲突的写入操作,这可能会增加每个条目的内存量,并为集群生成额外的网络流量。
事务恢复和分区处理
如果网络因为分区或其他问题而不稳定,Data Grid 可将事务标记为"in-doubt"。当发生这种情况时,它会保留它获取的写入锁定,直到网络稳定,并且集群返回到健康的操作状态。在某些情况下,系统管理员可能需要手动完成任何"in-doubt"事务。