Page 270 - 《软件学报》2026年第1期
P. 270
向清平 等: 分布式数据库高可用研究进展 267
网络模型统一了在服务的高层模型描述中定义的故障方面. 高层模型由 3 个子模型组成: 故障依赖图、网络模型
和容错需求模型. 故障依赖图用于表达基础设施和执行环境组件之间的故障关系, 故障依赖图被转化为贝叶斯网
络. 网络模型用于解决通信和网络分区故障. 容错需求模型用于定义服务的容错需求. 在存在可能的网络故障的情
况下, 评估两个实例之间的可达性. 从可用性的角度来看, 当某条路径发生故障时, 由于该条路径上的某个网络组
件发生了故障, 如果仍然存在, 则可以沿着不同的路径建立一个通道. 因此, 当所有潜在的路由都失败时, 一个通道
被认为是不可用的. 在贝叶斯网络基础上可以使用冗余服务模型扩展. 在现实生活中, 一个客户端应用程序最可能
会尝试连接到一个实例, 贝叶斯网络表示连接到其中任何一个实例的概率. 对于复制服务, 客户端首先向一个实例
发送请求, 然后与剩余的实例进行通信. 这种通信模式包含并实现了访问至少一个能够与足够多的剩余实例通信
的实例的可能性. 通过评估实例验证了贝叶斯网络方法在表示和评估具有数百个故障影响和服务实例的大规模服
务可用性方面的可行性.
2.2.2 事 务
事务管理对系统高可用性有着复杂的影响, 尤其是在分布式系统中. ACID 事务保证了数据的一致性和可靠
性, 但强隔离级别 (例如可串行化) 可能需要严格的同步机制, 这会导致性能瓶颈和高延迟, 尤其是在发生网络分
区或故障时, 这种严格的同步要求可能会影响系统的可用性, 因为在部分系统出现故障时, 事务可能会被阻塞或无
法完成, 从而影响整个系统的响应能力. 为了提高可用性, 许多系统在事务管理中采用高可用事务设计、降低事务
的隔离级别、优化事务调度和确定性事务等策略, 通过放宽一致性要求或灵活处理事务提交来保证系统在部分故
障情况下依然能继续运行, 合理的事务调度可以减少冲突和延迟, 增强系统的并行性和响应能力. 因此, 系统需要
在事务一致性和高可用性之间找到平衡, 采用灵活的设计来确保在各种故障条件下系统能够持续提供服务.
为了最大限度地减少网络延迟并在服务器故障和网络分区期间保持在线, 许多现代分布式数据存储系统通常
牺牲部分事务保证来提升系统的可扩展性和可用性. 文献 [5] 考虑提供 HAT 的问题: 事务保证不会在系统分区期
间出现不可用或导致高网络延迟. 分析现有的 ACID 隔离和分布式数据一致性保证, 以确定哪些可以在 HAT 系统
中实现, 哪些不能实现. 通过分析和实验来量化 HAT 的可用性和性能优势, 将许多先前提出的数据库隔离和数据
一致性模型与高可用性的目标联系起来, 这保证了每个非故障服务器在它们之间存在任意网络分区的情况下都能
做出响应. 文中还对一系列可以实现高可用性的模型进行了分类, 将它们表示为 HAT. 其调查表明, 除了可串行性
之外, 快照隔离和可重复读取隔离不符合 HAT, 而大多数其他隔离级别都可以通过高可用性来实现. 文献 [48] 研
究了 CAP 定理和 ACID 事务之间的关系, 即在存在网络分区的情况下是否可以使 ACID 事务高可用, 并证明了事
务与高可用性并不冲突, 关键在于事务的实现方式. 如全局锁管理需要多个节点协调, 导致网络分区时事务无法执
行, 降低可用性; 严格的线性一致性也要求所有副本严格同步更新, 可能因某个副本不可用导致整个系统不可用.
因此, 提出了 HAT, 它始终提供高可用性并且通常提供低延迟.
对于事务调度, 文献 [49] 研究如何提高主存多核 OLTP 系统执行有冲突事务的性能. 其开发了一种有效的调
度算法来提高并行性并减少运行时冲突, 而不是基于传统的冲突概念进行分区. 基于运行时的冲突分析, 通过动态
调整事务的执行顺序来减少冲突, 采用动态推迟可能导致冲突的事务来优化事务调度. 在事务缓存方面, 文献 [50]
研究了事务缓存策略. 与关注延迟的传统缓存不同, 事务缓存主要用于增强数据库系统, 并通过将读取负载卸载到
缓存上来提高其事务吞吐量. 对于一大类基于批处理的事务系统, 可以通过事务一致性感知缓存策略来打破传统
缓存策略的理论性能障碍. 其开发了一个一致的缓存策略, 理论上在常见的缓存方案下具有竞争力, 进一步利用批
处理, 可以对批次内的交易进行重新排序, 同时保证每个交易看到的数据值具有有限的陈旧性. 批处理的事务调度
和事务缓存策略为事务层面的“始终在线”以及低延迟提供了广泛的优化空间.
为了推动在易于分区的环境中通过高可用性和低延迟实现的事务保证, 文献 [48] 提出了分区存在时可用的
HAT, 其支持对事务序列的读和写操作的许多理想的 ACID 保证, 允许低延迟操作. 其中提到了两种产生中止的情
况, 内部中止和外部中止. 事务自身选择的中止为内部中止 (如, 事务本身的操作或由于可能违反声明的完整性约
束); 由外部引起 (如由数据库服务器的可用性和配置引起的) 的中止称为外部中止. 副本可用性、事务可用性和高
可用性三者之间存在联系. 如果一个事务可以为它试图访问的每个项至少联系一个副本, 称作副本可用性; 如果系

