文章目录
仲裁系统
当单个服务器无法满足所有用户的服务请求时,可考虑在满足一致性的情况下,同时使用多个服务器以满足用户需求。如第二章所提及的paxos中使用的过半数办法,客户在每次请求时仍需访问超过一半的服务器。相对于访问全部服务器,过半数方法仅提高了一倍的性能。
为了提升更高的性能,借鉴过半数方法的核心思想:每次访问过半数集合,任意两个均有重叠。因此,在本章中,使用其他保证集合重叠的方法,称其为仲裁系统。
定义6.1(仲裁,仲裁系统) 令
V
=
{
v
1
,
.
.
.
,
v
n
}
V=\left \{ v_{1},...,v_{n}\right \}
V={v1,...,vn}为节点集合。一个仲裁 是所有节点的一个子集。一个仲裁系统 是由多个仲裁构成的集合,且两两交集不为空,即,
Q
1
∩
Q
2
≠
∅
Q_1\cap Q_2\neq \varnothing
Q1∩Q2̸=∅
∀
Q
1
,
Q
2
∈
S
.
\forall Q_1,Q_2\in S.
∀Q1,Q2∈S.
评论:
- 客户端选择一个仲裁系统,获取该仲裁内所有节点上的锁,然后完成工作,再释放所有锁。不管选择哪个仲裁,仲裁内都有节点与其他任一仲裁重叠。
- 最小仲裁系统(S):
- 单节点仲裁(最简单的仲裁系统):系统只包含一个仲裁,仲裁中仅有一个服务器节点。
- 过半数仲裁系统:每个仲裁具有 个节点
6.1 负载和工作量
定义6.2 (访问策略) 给定一个仲裁系统
S
S
S,一个访问策略
Z
Z
Z定义了访问
S
S
S中每个仲裁
Q
Q
Q的概率
P
Z
(
Q
)
P_Z(Q)
PZ(Q) ,需满足
∑
Q
∈
S
P
Z
(
Q
)
=
1
\sum _{Q\in S} P_Z(Q)=1
∑Q∈SPZ(Q)=1 。
定义6.3(负载)
- 一个访问策略Z在一个节点 上的负载为 。
- 由一个访问策略Z引发的在一个仲裁系统S上的负载被定义为由Z引发的在S中任意一个节点上的最大负载,即 。
- 一个仲裁系统S的负载被定义为 。
定义6.4(工作量) - 一个仲裁 的工作量是该仲裁中的所有节点的数量,即: 。
- 由一个访问策略Z引发的在一个仲裁系统S上的工作量是平均(期望)被访问的节点的个数, 。
- 一个仲裁系统S的工作量为 。
评论: - 注意在计算工作量和负载时,要在同一个访问策略Z之下计算。
定理6.6 设S是一个仲裁系统,则
L
(
S
)
≥
1
/
n
L(S)\geq 1/\sqrt{n}
L(S)≥1/n必然成立。
证明:假设
Q
=
{
v
1
,
.
.
.
,
v
q
}
Q=\left \{ v_{1},...,v_{q}\right \}
Q={v1,...,vq}是
S
S
S中最小的仲裁,且
∣
Q
∣
=
q
|Q|=q
∣Q∣=q,
∣
S
∣
=
s
|S|=s
∣S∣=s。设
Z
Z
Z是定义在S上的一个访问策略。
S
S
S中其他每个仲裁都包含仲裁
Q
Q
Q中至少一个节点。于是当任意一个仲裁被访问,
Q
Q
Q中至少一个节点也会被访问。因此,至少存在一个节点 ,使得
L
Z
(
v
i
)
≥
1
/
q
L_Z(v_i)\geq 1/q
LZ(vi)≥1/q。
Q
Q
Q又是最小的仲裁,则至少有
q
q
q个节点会被访问,即 。
每次访问
q
q
q个节点,访问最频繁的节点的负载将至少为
q
/
n
q/n
q/n 。因此,至少存在一个节点
v
i
∈
Q
v_i\in Q
vi∈Q,使得
L
Z
(
v
i
)
≥
q
/
n
L_Z(v_i)\geq q/n
LZ(vi)≥q/n 。
综上所述,
L
Z
(
S
)
≥
m
a
x
(
1
/
q
,
q
/
n
)
⇒
L
Z
(
S
)
≥
1
/
n
L_Z(S)\geq max(1/q,q/n)\Rightarrow L_Z(S)\geq 1/\sqrt n
LZ(S)≥max(1/q,q/n)⇒LZ(S)≥1/n,因为
Z
Z
Z可为任意访问策略,得出
L
(
S
)
≥
1
/
n
L(S)\geq 1/\sqrt n
L(S)≥1/n。
6.2 网格仲裁系统
定义 6.7(基本的网格仲裁系统) 假设
n
∈
N
\sqrt n \in \mathbb{N}
n∈N ,将
n
n
n个节点布置到边长为
n
\sqrt n
n的方形矩阵中,即网格。基本网格仲裁系统有
n
\sqrt n
n个仲裁组成,每个仲裁包含完整的第
i
i
i行和完整的第
i
i
i列,
1
≤
i
≤
n
1\leq i\leq\sqrt n
1≤i≤n 。每个仲裁包含的节点数均为
2
n
−
1
2\sqrt n -1
2n−1,且任意两个仲裁正好有两个重复的节点。于是,当访问策略
Z
Z
Z是均匀的(即:访问每个仲裁的概率都为
1
/
n
1/\sqrt n
1/n)时,该仲裁系统的工作量为
2
n
−
1
2\sqrt n -1
2n−1,且每个节点的负载均为
Θ
(
1
/
n
)
\Theta (1/\sqrt n)
Θ(1/n)。
评论:
- 如图6.8右侧图示,若两个仲裁有两个重复的节点。如果要同时访问这两个仲裁,则不能保证至少一个仲裁对它的所有节点加锁,则有可能进入死锁。
- 对于两个仲裁,可使它们仅在一个节点上相交来避免死锁,如图6.9所示。但若有三个仲裁,则依然有可能死锁。
- 以下,通过对节点完全排序,解决以上问题。
存在其他方式在网格中挑选仲裁,使得两个不同仲裁仅有一个重复的节点。每个仲裁的大小介于 和 之间,而工作量为。当访问策略Z是均匀的时,每个节点的负载均为 。
定理6.11 如果用算法6.10访问每个仲裁,那么至少一个仲裁将获得它所有节点的锁。
证明:根据算法6.10,对每个仲裁中的节点加锁的顺序是由其ID号从小至大的,因此,对于一个被加锁的最大ID的节点,对其加锁的仲裁肯定已经获得了节点ID更小的其他的锁,因此必有一个仲裁能顺利对所有节点加锁,并完成工作,最后释放。
这种方式类似于分布式系统中的顺序访问,为了使系统具有更好的灵活性,提出算法6.12
定理6.13 若节点和仲裁都使用算法6.12,那么至少一个仲裁将获得用于其所有节点的锁。
证明:同定理6.11的证明,由于节点集合是有限的,至少一个仲裁将最终能够获得其所有节点上的锁。
评论:
如果一个仲裁对其所有节点加锁然后崩溃了会怎么样?解决方法:通过使用租约而不是锁。租约具有时限,即锁最终会被释放。
6.3 容错
“ 一个理想的仲裁系统需要兼顾负载和容错性,在前两节中提出的网格仲裁系统(the Grid)具有理想的负载,而过半数仲裁系统(Majority)具有较好的容错性。本节就提出了故障概率来衡量仲裁系统的容错性并结合前两个仲裁系统的优势提出了B-网格仲裁系统(B-Grid) ”
定义 6.14 适应力(Resilience) 如果一个仲裁系统 S S S ,在任意 f f f 个节点发生故障的情况下,仍存在至少一个无故障节点的仲裁 Q ∈ S Q \in S Q∈S,则称 S S S 是 f f f- r e s i l i e n t resilient resilient 的。满足上述条件的最大的 f f f 值被称为适应力,记为 R ( S ) R(S) R(S) 。
定理 6.15 令
S
S
S 为网格仲裁系统, 包含
n
n
n 个仲裁, 每个仲裁均由完整的一行和完整的一列组成。 则
S
S
S 的适应力为
n
−
1
\sqrt n-1
n−1 。
证明:如果网格对角线上的所有的即
n
\sqrt n
n 个节点都发生故障,那么每个仲裁将具有至少一个故障节点。如果少于
n
\sqrt n
n 个节点发生故障,就会存在无故障节点的一行和一列。
提出容错性的衡量标准
—故障概率
F
p
(
S
)
F_p(S)
Fp(S)
定义 6.16 故障概率(Failure Probability) 假设每个节点工作时发生故障(如宕机)的概率固定为
p
p
p (以下假定具体值, 例如
p
>
1
/
2
p > 1/2
p>1/2 )。仲裁系统
S
S
S 的故障概率(Failure Probability)记为
F
(
S
)
F(S)
F(S) ,等于每个仲裁都至少有一个节点发生故障的概率
F
p
(
S
)
F_p(S)
Fp(S) 。
F
p
(
S
)
F_p(S)
Fp(S) 为0是最理想的。
评论:通常采用
n
→
∞
n\rightarrow \infty
n→∞ 时的渐近故障概率(Asymptotic Failure Probability)来计算
F
p
(
S
)
F_p(S)
Fp(S) 。
分析过半数仲裁系统(Majority)和网格仲裁系统(the Grid)的故障概率
事实6.17 根据某个版本的切诺夫界(Chernoff Bound),有如下结论:设
x
1
,
…
,
x
n
x_1,\ldots,x_n
x1,…,xn 是独立同分布的变量,服从伯努利分布 (BernoulliDistributed Random Variables)实际上就是
0
0
0-
1
1
1 分布:
P
r
[
x
i
=
1
]
=
p
i
P
r
[
x
i
=
0
]
=
1
−
p
i
=
q
i
Pr\left[x_i=1\right]=p_i \quad Pr\left[x_i=0\right]=1-p_i=q_i
Pr[xi=1]=piPr[xi=0]=1−pi=qi
(在仲裁系统中,
x
i
=
1
x_i= 1
xi=1表示节点
i
i
i 正常工作,发生概率为
p
p
p;
x
i
=
0
x_i=0
xi=0则表示节点
i
i
i 发生故障,发生概率为
q
=
1
−
p
q=1-p
q=1−p)
于是对
X
:
∑
i
=
1
n
x
i
μ
:
=
E
[
X
]
=
∑
i
=
1
n
p
i
X:\sum_{i=1}^n x_i \quad \mu:=\mathbb{E}\left[X\right]=\sum_{i=1}^n p_i
X:i=1∑nxiμ:=E[X]=i=1∑npi
(在仲裁系统中
X
X
X 表示系统中正常工作节点的个数,
μ
\mu
μ 表示每个节点正常工作的概率之和
μ
=
n
p
\mu=np
μ=np)
有
f
o
r
a
l
l
0
<
δ
<
1
:
P
r
[
X
≤
(
1
−
δ
)
μ
]
≤
e
−
μ
δ
2
/
2
for\quad all\quad 0 <\delta<1:Pr\left[X\leq(1-\delta)\mu\right]\leq e^{-\mu\delta^2/2}
forall0<δ<1:Pr[X≤(1−δ)μ]≤e−μδ2/2
定理 6.18 过半数仲裁系统(Majority Quorum System)的渐近故障概率为0。
证明:
前提一:在过半数仲裁系统中,每个仲裁包含刚好
⌊
n
2
⌋
+
1
\lfloor\frac n 2\rfloor+1
⌊2n⌋+1 个节点,并且基数 (Cardinality)为
⌊
n
2
⌋
+
1
\lfloor\frac n 2\rfloor+1
⌊2n⌋+1 的每个节点集合均构成一个仲裁。
前提二:若过半数仲裁系统发生故障,则最多只有 ⌊ n 2 ⌋ \lfloor\frac n 2\rfloor ⌊2n⌋ 个节点正常工作。否则,必然存在至少一个仲裁可用。
因此过半数仲裁系统的故障概率 F p ( S ) = P r [ X ≤ ⌊ n 2 ⌋ ] ≤ P r [ X ≤ n 2 ] = P r [ X ≤ ( 1 − δ ) μ ] F_p(S)=Pr\left[X\leq\lfloor\frac n 2\rfloor\right]\leq Pr\left[X\leq \frac n 2\right]=Pr\left[X\leq(1-\delta)\mu\right] Fp(S)=Pr[X≤⌊2n⌋]≤Pr[X≤2n]=Pr[X≤(1−δ)μ] ,这是 μ = 1 − 1 2 p \mu=1-\frac 1 {2p} μ=1−2p1 。因为 1 / 2 < p ≤ 1 1 /2<p\leq1 1/2<p≤1 所以 0 < δ ≤ 1 / 2 0<\delta \leq 1 /2 0<δ≤1/2 满足 0 < δ < 1 0<\delta<1 0<δ<1 。
于是我们根据事实6.17的结论得到 F p ( S ) ≤ e − μ δ 2 / 2 F_p(S)\leq e^{-\mu\delta^2/2} Fp(S)≤e−μδ2/2 ,当 n → ∞ n\rightarrow \infty n→∞ 时 F p ( S ) → 0 F_p(S)\rightarrow0 Fp(S)→0 。因此过半数仲裁系统的渐近故障概率为0,容错能力较强。
定理6.19 网格仲裁系统(Grid Quorum System)的渐近故障概率为1。
证明:我们将
n
=
d
∗
d
n= d*d
n=d∗d 个节点布置到一个
d
∗
d
d*d
d∗d 的网格中。一个仲裁总是包含完整的一行。
我们将利用如下伯努利不等式(Bernoulli Inequality) 不等式: 对于任意
n
∈
N
,
x
≥
1
:
(
1
+
x
)
n
≥
1
+
n
x
n \in \mathbb{N}, x \geq1 : (1 + x ) ^ n \geq 1 + nx
n∈N,x≥1:(1+x)n≥1+nx。
仲裁系统发生故障,意味着每行中都有至少一个节点发生故障(对于特定的一行, 此概率为 1 — p d 1—p^d 1—pd 因为该行中所有节点都正常工作的概率为 p p p )。因此,可以用如下式子来限定故障概率: F p ( S ) ≥ P r [ 至 少 有 一 行 的 节 点 全 部 发 生 故 障 ] = ( 1 − p d ) d ≥ 1 − d p d F_p(S)\geq Pr\left[至少有一行的节点全部发生故障\right]=(1-p^d)^d \geq 1-dp^d Fp(S)≥Pr[至少有一行的节点全部发生故障]=(1−pd)d≥1−dpd 当 n → ∞ n\rightarrow \infty n→∞ 时 F p ( S ) → 1 F_p(S)\rightarrow1 Fp(S)→1 。因此网格仲裁系统的渐近故障概率为1,容错能力较弱。
提出改进后的方案——B-网格仲裁系统
定义6.20 B-网格仲裁系统(B-Grid Quorum System) 考虑
n
=
d
h
r
n= dhr
n=dhr 个节点, 布置在
h
∗
r
h*r
h∗r 行、
d
d
d 列的矩形网格中。 每组
r
r
r 行构成一个带(band),处于同一个带中的一列
r
r
r 个单元格称作微列(mini-column)。一个仲裁由每个带中的一个微列和某个带中的每个微列的一个元素组成;因此每个仲裁有
d
+
h
r
−
1
d+ hr- 1
d+hr−1 个元素。B-网格仲裁系统(B-Grid Quorum System)由所有这样的仲裁组成。
定理6.22 B-网格仲裁系统(B-Grid Quorum System)的渐近故障概率为0。
证明:
假设
n
=
d
h
r
n = dhr
n=dhr, 并且节点被布置在
d
d
d 列、
h
∗
r
h*r
h∗r 行的网格中。如果在每个带中均有一个完整的微列发生故障,那么B-网格仲裁系统也必然发生故障,因为不可能挑选出一个带,该带中还存在一个微列,其中每个节点均正常工作。如果在一个带中每个微列均有一个节点发生故障,那么整个系统也发生故障。这些事件可能不是彼此独立的,但是借助于联合上界(UnionBound):
P
r
(
X
)
+
P
r
(
Y
)
≥
P
r
(
X
∧
Y
)
Pr(X)+ Pr(Y) \geq Pr(X \wedge Y)
Pr(X)+Pr(Y)≥Pr(X∧Y)
可以用下面的式子来得到故障概率的上界
F
p
(
S
)
≤
P
r
[
每
个
带
中
都
有
-
个
完
整
的
微
列
发
生
故
障
]
+
P
r
[
在
一
个
带
中
,
每
个
微
列
均
有
至
少
一
个
节
点
发
送
故
障
]
F_p(S) \leq Pr[每个带中都有-个完整的微列发生故障]+Pr[在一个带中,每个微列均有至少一个节点发送故障]
Fp(S)≤Pr[每个带中都有-个完整的微列发生故障]+Pr[在一个带中,每个微列均有至少一个节点发送故障]
一个完整的微列发生故障的概率为
(
1
−
p
)
r
(1-p)^r
(1−p)r ,而一个带中至少一个微列发生故障的概率
≤
d
(
l
−
p
)
r
\leq d(l-p)^r
≤d(l−p)r ,每个带中均有一个微列发生故障的概率则
≤
(
d
(
I
−
p
)
r
)
h
\leq (d(I-p)^r)^h
≤(d(I−p)r)h(用到联合上界)。第二项,一个微列至少有一个节点发生故障概率为
1
−
p
r
1-p^r
1−pr ,每个微列均如此的概率为
(
1
−
p
r
)
d
(1-p^r)^d
(1−pr)d ,存在某个带发生这样的情况的概率则
≤
h
(
l
−
p
r
)
d
\leq h(l-p^r)^d
≤h(l−pr)d (同样用到联合上界)。
则
F
p
(
S
)
≤
(
d
(
l
−
p
)
r
)
h
+
h
(
l
−
p
r
)
d
F_p(S) \leq (d(l -p)^r)^h+h(l -p^r)^d
Fp(S)≤(d(l−p)r)h+h(l−pr)d
对于
(
d
(
l
−
p
)
r
)
h
(d(l -p)^r)^h
(d(l−p)r)h ,我们用
d
=
n
d=\sqrt n
d=n,
r
=
ln
d
r = \ln d
r=lnd, and
0
≤
(
1
—
p
)
≤
1
/
3
0\leq (1—p)\leq 1 /3
0≤(1—p)≤1/3 ,由于
n
ln
x
=
x
ln
n
n^{\ln x} = x^{\ln n}
nlnx=xlnn , 我们有
d
(
1
−
p
)
r
≤
d
⋅
d
ln
1
/
3
≈
d
−
0.1
d(1-p)^r \leq d\cdot d^{\ln1/3} \approx d^{-0.1}
d(1−p)r≤d⋅dln1/3≈d−0.1 ,于是对足够大的
d
d
d ,整个第一项将小于
d
−
0.1
h
<
<
1
/
d
2
=
1
/
n
d^{-0.1h} << 1/d^2 = 1/n
d−0.1h<<1/d2=1/n 。
对于 h ( l − p r ) d h(l -p^r)^d h(l−pr)d ,我们有 p ≥ 2 / 3 p \geq 2 /3 p≥2/3,且 h = d / ln d < d h = d/ \ln d < d h=d/lnd<d 。于是我们可以得到该项的一个上界 d ( 1 − d ln 2 / 3 ) d ≈ d ( l − d 0.4 ) d d(1 - d^{\ln 2/3})^d \approx d(l - d^{0.4})^d d(1−dln2/3)d≈d(l−d0.4)d 。由于 ( 1 + t / n ) n ≤ e t (1 + t/n)^n \leq e^t (1+t/n)n≤et ,我们可以得到一个上界 d ( l − d 0.4 ) d = d ( l − d 0.6 / d ) d ≤ d ⋅ e − d 0.6 = d ( − d 0.6 / ln d ) + 1 < < d − 2 = 1 / n d(l - d^{0.4})^d= d(l - d^{0.6}/d)^d \leq d\cdot e^{-d^{0.6}}=d^{(-d^{0.6}/\ln d)+1}<<d^{-2} = 1/n d(l−d0.4)d=d(l−d0.6/d)d≤d⋅e−d0.6=d(−d0.6/lnd)+1<<d−2=1/n (对足够大的 d 而言)。
于是,我们就得到了B-网格仲裁系统的渐进故障概率 F p ( S ) ∈ O ( 1 / n ) F_p(S) \in O(1/n) Fp(S)∈O(1/n)
对比不同的仲裁系统:适应力 (resilience), 工作量 (work), 负载(load) , 以及渐近故障概率:
对比之下,B-网格仲裁系统最为理想,具有较小的负载和较好的容错性
6.4拜占庭仲裁系统
“前面讨论了系统存在宕机节点的情况下的仲裁系统问题,现在关注存在拜占庭节点的情况。这种情况的难度在于拜占庭节点可能会假装成常规节点,这样就算它没有崩溃,但可能篡改数据。我们在假设两个仲裁的交集总是包含一个非拜占庭节点,此外拜占庭节点没有渗透到每个仲裁的基础上研究。本节主要介绍三个衡量标准逐步增强的拜占庭仲裁系统”
定义(f-传播):满足以下两个条件的仲裁系统称为f-传播的
- 任意两个不同的仲裁的交集总是包含 f + 1 f+1 f+1个节点
- 对于任意 f f f个拜占庭节点,存在至少一个无拜占庭的节点
定理(f-传播系统的负载):
L
(
S
)
≥
(
f
+
1
)
/
n
L(S)\geq \sqrt {(f+1)/n}
L(S)≥(f+1)/n
证明:
①
L
Z
(
v
i
)
≥
1
/
(
f
+
1
)
L_{Z}(v_{i}) \geq 1/(f+1)
LZ(vi)≥1/(f+1)
②因为,
W
(
S
)
≥
f
+
1
W(S) \geq f+1
W(S)≥f+1,
L
Z
(
v
i
)
≥
(
f
+
1
)
/
n
L_{Z}(v_i) \geq (f+1)/n
LZ(vi)≥(f+1)/n
若
f
+
1
<
(
f
+
1
)
/
n
f+1 < \sqrt{(f+1)/n}
f+1<(f+1)/n,则
1
/
(
f
+
1
)
≥
(
f
+
1
)
/
n
1/(f+1)\geq \sqrt{(f+1)/n}
1/(f+1)≥(f+1)/n
否则
f
+
1
≥
(
f
+
1
)
/
n
f+1 \geq \sqrt{(f+1)/n}
f+1≥(f+1)/n,
1
/
(
f
+
1
)
≥
(
f
+
1
)
/
n
1/(f+1)\geq \sqrt{(f+1)/n}
1/(f+1)≥(f+1)/n
因此由①②得出
L
Z
(
S
)
≥
(
f
+
1
)
/
n
L_{Z}(S) \geq \sqrt {(f+1)/n}
LZ(S)≥(f+1)/n
定义(f-掩盖):满足以下两个条件的仲裁系统称为f-掩盖的
- 任意两个不同的仲裁的交集总是包含2f+1个节点
- 对于任意f个拜占庭节点,存在至少一个无拜占庭的节点
定理(f-掩盖系统的负载):
L
Z
(
S
)
≥
(
2
f
+
1
)
/
n
L_{Z}(S) \geq \sqrt {(2f+1)/n}
LZ(S)≥(2f+1)/n
证明:同上类似,略
f-掩盖网格仲裁系统
定义(f-掩盖网格仲裁系统):每个仲裁包含完整的一列和 f + 1 f+1 f+1行节点,并且的网格仲裁系统称为f-掩盖网格仲裁系统
如果访问策略是均匀的,f-掩盖网格系统的负载为 ( 2 f + 2 ) / ( n + ( f + 1 ) ⋅ n − ( f + 1 ) ) (2f+2)/(\sqrt n+(f+1)\cdot \sqrt n-(f+1)) (2f+2)/(n+(f+1)⋅n−(f+1))
负载再逼近一下如何?
M-网格仲裁系统
定义(M-网格仲裁系统):每个仲裁包含 f + 1 \sqrt {f+1} f+1行和列,且 f ≤ ( n − 1 ) / 2 f\leq (\sqrt{n-1})/2 f≤(n−1)/2的网格仲裁系统
这样,任意两个仲裁的交集节点数至少为 2 f + 2 2f+2 2f+2(也是至多)
如果访问策略是均匀的,负载为 ( 2 f + 2 ) / ( 2 ⋅ f + 1 ⋅ n − f + 1 ⋅ f + 1 ) (2f+2)/(2\cdot \sqrt{f+1}\cdot \sqrt n-\sqrt{f+1}\cdot\sqrt{f+1} ) (2f+2)/(2⋅f+1⋅n−f+1⋅f+1),化简为 1 / ( n − f + 1 ) 1/(\sqrt n-\sqrt{f+1}) 1/(n−f+1)复杂度为 Θ ( f / n ) \Theta(f/ \sqrt n ) Θ(f/n)
f-不透明仲裁系统
定义(不透明仲裁系统):若一个仲裁系统
S
S
S满足以下两个条件,则称1其为f-不透明系统。
对于任意
f
f
f个拜占庭节点集合
F
F
F,以及任意两个不同的仲裁
Q
1
,
Q
2
Q_1,Q_2
Q1,Q2:
- ∣ ( Q 1 ∩ Q 2 ) ∖ F ∣ > ∣ ( Q 2 ∖ Q 1 ) ∣ |(Q_1\cap Q_2)\setminus F|>|(Q_2\setminus Q_1)| ∣(Q1∩Q2)∖F∣>∣(Q2∖Q1)∣(6.33.1)
- ( F ∩ Q ) = ∅ , f o r s o m e Q ∈ S (F\cap Q)=\varnothing, for some Q\in S (F∩Q)=∅,forsomeQ∈S(6.33.2)
如图所示:
定理:若
S
S
S是一个f-不透明的仲裁系统,则
n
>
5
f
n>5f
n>5f。
证明:
Due to (6.33.1),
there exists a quorum Q1 with size at most n − f.
With (6.33.1), |Q1| > f holds. Let F1 be a set of f (byzantine) nodes F1 ⊂ Q1,
and with (6.33.2), there exists a Q2 ⊂ V n F1.
Thus, |Q1 \ Q2| ≤ n − 2f. With (6.33.1),|Q1 \ Q2| > f holds. Thus, one could choose f (byzantine) nodes F2 with F2 ⊂ (Q1 \ Q2).
Using (6.33.1) one can bound n−3f from below: n − 3f > |(Q2 \ Q1)| − |F2| ≥ |(Q2 \ Q1) [ (Q1 \ F2)| ≥ |F1| + |F2| = 2f:
定理(f-不透明仲裁系统的负载):
L
(
S
)
≥
1
/
2
L(S)\geq 1/2
L(S)≥1/2
证明:
对于任意两个仲裁
∣
(
Q
1
∩
Q
2
∣
≥
∣
Q
1
∣
/
2
|(Q_1\cap Q_2|\geq |Q_1|/2
∣(Q1∩Q2∣≥∣Q1∣/2,令
S
S
S包含仲裁,则由一个访问策略
Z
Z
Z引发的在
Q
1
Q_1
Q1上的负载为:
∑
v
∈
Q
1
∑
v
∈
Q
1
≥
∑
Q
i
(
∣
Q
1
∣
/
2
)
L
Z
(
Q
i
)
=
∣
Q
1
∣
/
2
\sum _{v\in Q_1}\sum _{v\in Q_1}\geq \sum _{Q_i}(|Q_1|/2)L_Z(Q_i)=|Q_1|/2
v∈Q1∑v∈Q1∑≥Qi∑(∣Q1∣/2)LZ(Qi)=∣Q1∣/2
则
Q
1
Q_1
Q1中必然存在至少一个节点其负载至少为
1
/
2
1/2
1/2