分布式理论之Quorum机制
初次了解
无意间看到北京字节跳动职位要求优先,熟悉大规模分布式系统架构设计之Quorum原理。就想简单的理解quorum是个什么东西。
Quorum机制可以理解为抽屉原理的一个应用。
定义:假设有N个副本,更新操作w(i)在W个副本中更新成功之后,才认为此次更新操作w(i)成功。
成功提交的更新操作对应的数据为 成功提交的数据。对于读操作而言,至少需要读R个副本才能读到此次更新的数据。其中,w+R>N,即W和R有重叠。一般,W+R = N+1.
假设系统中有5个副本,W=3,R=3。
初始化数据为(V1,V1,V1,V1,V1) 成功提交的版本号为1
当发生更新操作在3个副本上成功后,就认为此次更新操作成功。
数据变成 为:(V2,V2,V2,V1,V1) 成功提交后,版本号变为2
因此,最多只需要读取3个副本,一定能够读到V2此次更新成功的数据。
分析
- 如何读取最新的数据:
- 在已经知道最近成功提交的数据版本号的前提下,最多读R个副本就可以读到最新数据
- 如何确定最高版本号的数据是一个成功提交的数据:
- 读取其他的副本,一直读到最高版本号副本出现了W次。
- 如何处理同步过程中冲突的数据:
- 需要视情况分析:比如(V2,V2,V1,V1,V1), R = 3,如果读取的3个副本是:(V1,V1,V1)则高版本的V2需要丢弃。
- 如果读取的3个副本是(V2,V1,V1),则低版本的V1需要同步到V2。