论文部分内容阅读
随着互联网在各行业的深入应用,涌现了许多分析事物关联关系的新需求,由于存在大量连接操作,传统关系型数据库处理这些需求的延迟难以容忍。为高效处理海量复杂数据之间的关联操作,图数据库应运而生。由于单机能力有限,海量数据必然要求图数据库分布式化。分布式图数据库有许多应用场景,如离线分析、在线查询等。在线查询要求图数据库增量更新,分布式图数据库必须具有事务能力,这也是当前分布式系统一个热点问题。传统上,一般采用两阶段提交(2PC)实现分布式事务。其它的分布式事务解决方案,如三阶段提交等,本质上都是对2PC的优化。2PC协议假设节点可用,但当前分布式系统大多采用普通商用PC机,这个假设并不成立。如何在节点不可用的场景下,高可用的实现分布式事务是本文需要考虑的问题,本文的分布式事务方案主要参考Google提出的Percolator事务模型。本文尝试设计并实现分布式图数据库中的分布式事务功能,主要工作包括:(1)多版本并发控制:并发控制方案采用多版本并发控制(MVCC),实现了Read Snapshot的隔离级别,并优化MVCC存储模型,减少序列化次数。通过MVCC能够快速获得系统的数据快照。(2)分布式事务:设计并实现分布式事务模块,避免使用传统的两阶段提交协议,基于Percolator事务模型进行优化,减少事务执行的关键路径上数据持久化和远程过程调用的次数;简化协调者的执行逻辑,使其无状态化。使用批处理、异步提交、流水线处理等技术优化事务执行效率。(3)高可靠的容错方案:基于分布式一致性协议Raft,设计并实现Multi-Raft协议,保证数据可靠地复制至大多数节点。Multi-Raft中引入多个Raft Group,通过将分片分散存储于系统中,保证系统的负载均衡。并实现自动化调整功能,如当负载均衡被破坏时,进行分片调度、Leader切换等。在基准测试中,对系统的主要模块进行了完整的功能测试和性能测试。功能测试结果表明系统能够正确处理读写请求和事务请求、能够正确应对事务执行过程中的异常情况;性能测试结果表明读写请求和事务请求的处理性能达到了预期目标。