Calvin: Fast Distributed Transactions for Partitioned Database Systems研读

它是一个分布式事务解决框架,不依赖存储层,只要满足CRUD的存储层均可。

 

Calvin分成三层

sequencing layer

这一层负责劫持和收集所有的事务请求,并将它们按照10ms的时间窗口batch提交到全局事务日志(排序),论文中说这一层不是单点,是分布式的,但是毕竟写日志一般很难多点写入,因此仍然存在单点瓶颈。

 

scheduling layer

调度层负责按照顺序执行全局事务日志,如果严格的串行执行,性能肯定不足,因此这一层会尽力将那些并发执行无环的事务并发执行以提升性能。

 

storage layer

存储层,只要满足CRUD接口即可。

 

 

由于事务共识在预处理的时候就已经达成了,后续执行事务的时候无需再次共识,只需要执行即可,因为故障恢复也比较简单,新的节点从事务日志的指定位置继续消费即可。

 

总结

  • 全局事务排序存在单点写入瓶颈
  • 这个框架不能解决交互式事务,只适用于确定的事务,即事务执行时提交的数据是一次性确定的。

cockroachDB在local range执行事务时参考了这种解决事务冲突的思路,即利用时间戳确定事务执行的先后顺序,这种共识是确定的,无需二次确认。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8693 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月12日
下一篇 2021年3月12日

相关推荐