阅读笔记(二十二)链复制扩展CRAQ《High-throughput chain replication for read-mostly workloads》

一. 简介

  在前文中我们分析了链复制技术的细节和性能表现,而《High-throughput chain replication for read-mostly workloads》则对链复制模型进行了扩展和优化,即CRAQ。

二. CRAQ介绍

  链复制模型最大的缺陷在于尾结点:

  • 尾结点处理所有的读请求,作为热点在读数据过多时会出现阻塞
  • 尾结点出现问题会导致全部服务暂停,切换节点也会较为麻烦

  为了解决这些问题,就有了CRAQ(Chain Replication with Apportioned Queries)。

在这里插入图片描述

  有图可见,CRAQ和普通的链复制最大的区别在于将读请求分散到了各个节点之上。这就会产生一个问题:链复制要解决的是一致性问题,而解决的方案是仅使用尾结点来完成读请求。如果分散到各个节点,如何保证一致性?

  为了解决该问题,CRAQ采取了以下机制:

  • 每一个非尾结点可以保存多版本的数据,版本号单调自增。每个版本可能是clean或者dirty,在开始时所有的均为clean
  • 当头部节点收到写请求,则将自身设置为dirty,传递新版本号给下一个节点。到达尾部节点时,尾部节点设置为clean,依次回传,收到ack之后各自设置为clean。
  • 当节点收到读请求的时候,如果最终版本号为clean则回复该版本号对应数据,否则问询尾部节点上次提交为clean的版本,并回复该版本对应的数据。

猜你喜欢

转载自blog.csdn.net/u013354486/article/details/104345689