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