Page 276 - 《软件学报》2026年第1期
P. 276
向清平 等: 分布式数据库高可用研究进展 273
可用性. 它是一个 NoSQL 的非关系型数据库. Dynamo 使用一致性 Hash 对数据进行分区和复制, 通过对象版本控
制保证一致性, 通过仲裁技术和分散的副本同步协议维护一致性. 遵循基于 gossip 的分布式故障检测和成员协议.
当遇到正常节点故障时, 直接切换即可. 某些复杂的情况, Dynamo 实现了一个反熵协议保证副本同步.
文献 [76] 提出的 CANDStore 是一个强一致的、分布式的、可复制的键值存储, 使用了一种新的快速崩溃恢
复协议. 该协议利用工作负载特性和现代 NVMe (non-volatile memory express) SSD 技术实现在线故障恢复.
CANDStore 使用非易失性主存 (non-volatile main memory, NVMM) 和非易失性存储 (NVMe) 固态硬盘技术来提
供低延迟的分布式存储, 这比现有的基于主存的分布式存储更便宜, 有更高的可用性.
文献 [18] 提出了一个面向现代数据中心的分布式主存计算平台 FaRM, 其具有高吞吐量, 低延迟和高可用性
的严格可串行化事务. 根据第一性原理, 以利用数据中心中出现的两种硬件趋势: 具有 RDMA 的快速商品网络和
提供非易失性 DRAM 的廉价方法. FaRM 的协议遵循 3 个原则来解决 CPU 瓶颈: 减少消息数量、使用单边 RDMA
读写代替消息、有效利用并行性. FaRM 使用 ZooKeeper 协调服务, 使用乐观并发控制, 采用两阶段提交协议. 通
过软硬件层面改进消除存储和网络瓶颈.
在文件存储的高可用性上, 文献 [77] 引入了 HAIL, 是一个高可用性和完整性层, 它将 RAID 的基本原理扩展
到云的对抗设置中. HAIL 统一了可证明可恢复性 (proof of retrievability, POR) 和可证明数据持久性 (provable data
possession, PDP) 的两种方法, 通过一组服务器或独立的存储服务来管理文件的完整性和可用性. 它利用 POR 作
为构建模块, 在检测到故障时可以测试和重新分配存储资源. 它为 POR 协议的直接多服务器应用和以前提出的分
布式文件可用性建议提供了效率、安全性和建模方面的改进. 通过仔细交错不同类型的纠错层, 并受主动密码模
型的启发, HAIL 确保了文件的可用性, 以抵御强大的移动敌手. 上述几种典型存储系统的特性总结如表 2 所示.
表 2 不同存储系统的特点
存储系统 特点 优势 不足
Megastore 跨数据中心复制; 通过Paxos 协议实现全局一致性 易于扩展; 便捷 延迟可能较大
使用一致性Hash对数据进行分区和复制; 遵循基于 去中心化, 具有更好的
Dynamo 一致性较弱
gossip的分布式故障检测和成员协议 高可用性
支持多种存储模型; 使用快速崩溃恢复协议利用工作 提供强一致性; 灵活性
CANDStore 系统架构相对复杂
负载特性和现代NVMe SSD技术实现在线故障恢复 高, 易于扩展; 成本低
基于内存的分布式计算系统, 支持事务处理; 利用 高吞吐量、高性能、 可处理数据规模受内存容量限
FaRM
RDMA技术实现较低的网络延迟 低延迟 制; 对底层网络硬件要求较高
将RAID的基本原理扩展到云的对抗设置中; 结合了
可证明可恢复性 (POR) 和可证明数据持久性 (PDP)
HAIL 提高了安全性; 效率高 性能开销大
的方法, 确保文件的完整性和可用性; 采用多种类型
的纠错层交错排列, 增强了系统对抗敌手的能力
4.2 参数配置
现有的 OtterTune、腾讯云、阿里云等在自动化参数配置方面仅考虑设计算法找到最优的参数配置, 如使用
强化学习、贝叶斯优化等黑盒模型来进行云数据库参数调优, 并未考虑高可用指标, 仅仅考虑负载效率的参数调
优很可能带来数据库宕机、负载实例启动失败、性能下降等风险. 因此提出面向可用性的参数适配方法进行
优化.
数据库内参数不仅对用户负载效率有至关重要的影响, 而且还关系到数据库的可用性. 通过设计面向提升可
用性的参数适配方法, 让用户输入负载特性和高可用指标 (如误差容忍范围), 通过基于机器学习的安全调整机制
来推荐数据库参数配置, 能够在提高用户负载效率的同时, 大大提高用户实例的可用性, 减小数据库宕机和实例
失败.
在云系统中, 高可用性 (HA) 是一个至关重要的问题. 然而, 由于复杂的运行时云环境、大量可用的 HA 机制、
易出错的 HA 配置以及不断需要的动态调整, 保证 HA 是具有挑战性的. 文献 [65] 利用运行时系统架构 (runtime
system architecture, RSA) 来自动配置云中的 HA. 基于 RSA 的 HA 配置框架由 3 个组件组成, 分别是运行时系统

