论文部分内容阅读
去中心化NoSQL系统的数据存储服务具有高可扩展和高可用的特点,且无单点故障,无主节点性能瓶颈等问题。但是,此类系统在数据一致性方面仅提供了最终一致性保障,应用的强一致性需求则由开发者在应用设计时自行保证,从而增加了应用开发的复杂性。因此有必要在NoSQL中提供事务的ACID特性,既保留NoSQL杰出的系统特性,又可利用事务机制自动解决开发者需要在应用层维护一致性的问题。传统的分布式事务两阶段提交协议存在着可用性和性能的问题,目前的研究着重于利用Paxos协议优秀的容错能力,基于Paxos完成两阶段提交。在Paxos协议的基础上,设计并实现了可配置的去中心化事务性NoSQL系统DTCassandra。该系统能保证写事务的ACID特性,并提供了一致读、快照读以及不一致读三种级别的读操作。提出并在DTCassandra中实现了一种可配置的一致读写算法,通过使用多种类型的副本,分离了读写操作,以此为基础可以配置不同数量的读写副本;使用日志作为载体,对各副本上的操作进行同步,实现了不同类型副本的副本日志,提供了分布式状态机的基础;最后,针对负责写入的副本,使用Paxos维护其日志的一致性,针对负责读取的副本,使用NWR法定人数协议来保证强一致性,并且提供可配置的读写可用性。采用基于Key的范围进行数据分区的方法,在各分区内利用MVCC机制,提供了局部写事务的ACID特性。改进了两阶段提交协议,将跨分区的全局事务划分为多个子事务,以其中的主要子事务作为控制整个全局事务的提交点,提供了在失效发生时保证全局一致性的能力。针对4KB大小的数据进行了读写测试。测试结果表明,DTCassandra一致读操作的最大吞吐量较之Cassandra本身提供的法定人数读操作提高了50%,局部写事务的最大吞吐量较之法定人数写操作降低了60%。系统扩展了Cassandra,能保证ACID语义,具有高可用性。