在学术界,前述问题的一种解决方式,被称为“严格可串行化”,该技术可以解决掉事务的一致性和CAP的一致性引发的问题。如图3所示(文献《Highly available transactions: Virtues and limitations》),其中的树根,就是事务一致性和分布式一致性的结合点,严格可串行化。而树的左子树(事务一致性)和右子树(分布式一致性),是两个独立的系统,他们之间没有关联关系。 图3 学术界对于“事务一致性和分布式一致性的结合点”的研究(1) 从图3也可以看出,左子树的事务一致性隔离级别有很多种,右子树的分布式一致性有很多种,因此,需要系统地研究各种级别的事务的一致性和分布式系统的一致性,才能更好的分析问题、解决问题(而不是只考虑树根的结合点)。而如图4告知我们,分布式一致性有很多,图4总结有60种左右,这为研究该项问题,带来了复杂度。图4 分布式一致性关系图尽管融合分布式一致性的问题有很大的复杂度,但是这样的拦路虎是阻止不了我们对问题深入研究的热情和步伐的。TDSQL在前行探索中,如图5所示,看到了方向和曙光(红色方框处)。图5中蓝色方框,是事务中的与隔离性相关的一致性等级、和分布式一致性,在横轴的“Isolation(transactional)”列,对应的是事务的隔离级别,而他们相交处,是红色方框所框住的,却是“一片空白”。这片空白处,正是研究所未及处,也正是这片无人区,让TDSQL的研究有了空间和舞台。 图5 学术界对于“事务一致性和分布式一致性的结合点”的研究(2) 另外,业界经常提及“强一致性”,但概念混乱不清晰。文献《Consistency in Non-Transactional Distributed Storage Systems》指出如下内容,澄清了强一致性的含义: In a hybrid consistent system, strong operations are guaranteed to be seen in some sequential orderby all processes(as in sequential consistency), while weak operations aredesigned to be fast, and they eventually become visible by all processes (muchlike in eventual consistency). Weak operations are only guaranteed to beordered according to their interleaving with strong operations: if twooperations belong to the same session and one of them is strong, then theirrelative order of invocation is respected and visible by all processes. 所以,是否被“所有进程”可见,是判断强一致性的标准,而在分布式一致性中,只有线性一致性和顺序一致性满足强一致性的含义。而结合事务一致性,需要再满足可串行化才能称为分布式事务的强一致性。 综上所述,TDSQL所研究的问题,正是ACID的C、CAP的C,以及强一致之间的内在联系,他们有两个维度的表现:一是考虑这些因素时如何保证正确性,二是在有这些因素存在影响下如何保证所实现的系统有好的性能。如果没有好的性能,提供再强的一致性也难以实用,因此强一致性背景下实现高性能成为挑战。