A-A+

Calvin简介

2020年04月09日 数据库 评论 1 条 阅读 897 次

前面介绍的并发控制算法评估里面,测试也把Cavlin算进来了,这里简单介绍下Calvin。详细的可以参考下原论文 Calvin: Fast Distributed Transactions for Partitioned Database Systems (SIGMOD12')。

 

Calvin面向的场景是确定性事务,不支持交互式事务。这一点需要特别注意。在互联网很多业务里,这点是不适用的。

 

Calvin也是一个deterministic的分布式数据库,这里先简单介绍下它的架构。

整体上分成三层:

  • Sequencing Layer:拦截事务,定序。
  • Scheduling Layer:调度执行,保证执行结果不违背sequencer的定序。
  • Storage Layer:数据持久化层,不需要支持事务。

 

假设只有一个sequencer,这个sequencer拦截并定序事务是简单的,但存在单点的瓶颈问题和SPOF问题。Calvin用一组sequencer,时间上划分为10ms一个epoch,每个sequencer将请求拦截并batch,再发给replication组件定序。

 

系统中只有一个日志流,所以从根本上可以避免2PC,自然也避免了2PC的阻塞等一系列问题。

 

后面的执行等都是依赖前面确定性的这个顺序的。

 

一点总结

Calvin不实用。

Calvin作者自己对比了下Spanner和Calvin,感兴趣的读者可以看看:Spanner vs. Calvin: distributed consistency at scale。

 

1 条留言  访客:0 条  博主:0 条   引用: 1 条

来自外部的引用: 1 条

  • LoopJump’s Blog

给我留言