论文部分内容阅读
移动互联网行业很多热门应用在一开始的时候面对的用户量少,使用传统数据库便能满足数据存储需求,而且还有完善的事务功能支持,但是用户量上升之后,数据量呈指数规模上升,传统数据库的存储方案难以满足现阶段数据存储需求。在此背景下,No SQL数据库应运而生,其凭借高可用、高扩展等优良特性广泛应用于解决海量数据存储问题。但是由于No SQL数据库起步晚,发展时间短,仍有很多数据库特性没有完善,分布式事务便是其中之一。这导致企业需要在事务支持和海量存储之间艰难地平衡。目前解决分布式事务最广泛的方法是两阶段提交理论(2PC:Two Phase Commit)。2PC的正确性早已被证明,被企业广泛的应用。在拥有大量用户群体的互联网行业,2PC并未有效解决事务问题,Google在Megastore和Percolator的先后尝试均以失败告终,实践证明2PC难以有效解决高并发情况下的事务处理。究其原因,有如下两点:(1)2PC的实现需要同时锁定参与者的资源,系统的整体性能受限于木桶原理;(2)2PC在未决议的情况下存在长时间阻塞的情形,同样影响了系统性能。本文基于BASE理论提出一种最终一致性事务模型,并基于Mongo DB加以实现,弥补No SQL数据库的事务功能,解决互联网行业事务问题。最终一致性事务模型通过打破原子性,提供最终一致性,最大限度地利用每一个节点的可用性,从而提高系统整体性能。为了实现事务隔离性需求,论文将事务分为IET事务(Independent Execution Transaction)和NET事务(Non-independent Execution Transaction),论文介绍了对于两种不同的事务如何保证事务隔离,并且分析了最终一致性事务模型对ACID的支持。通过阅读Mongo DB源码,对Mongo DB模块进行深入分析并对其进行源码修改,增加协调者模块,实现了支持最终一致性事务模型的原型系统T-Mongo。最后,论文对T-Mongo系统进行了测试,主要包括T-Mongo的读写压力测试、事务性能测试、协调者测试。测试结果表明T-Mongo系统与Mongo DB具有相当的读写效率,保证了T-Mongo系统的读写可用性,其次T-Mongo系统具有良好的事务处理能力,能够满足高并发场景下的事务处理需求,对协调者的测试表明新增的协调者模块拥有优越的网络处理能力和读写性能。