Calvin 是一个 deterministic database,也就是说,对于需要处理的事务,Calvin 会在全局确定好事务的顺序,并按照这个顺序执行。这些事务的执行顺序,我们可以认为是一个全局的有序 log,并且 Calvin 会通过复制机制来备份到不同的副本上面。所有的副本都是可以并行的顺序执行这些 log 的。这样,即使一个副本当掉,另外副本也仍然能执行并且 commit 事务。
所有的副本并行执行的话,数据不就重复了么?
Calvin:一个为分区数据库设计的快速分布式事务框架之前一直听说过 Calvin,也知道有基于 Calvin 的分布式数据库 FaunaDB,但一直没太关注 Calvin 是如何实现的。最近刚好看到一篇文章,讨论了 Calvi...