假设有目前有n个服务器,replica是D. (D>n)
现在新加入一个服务器S,影响之前n个服务器的概率P:
现在环中有Dn个区域, S要取D个点,一共有(Dn)^D种取法。
要选中至少n个服务器,取第一个点,有Dn种取法, 取第二点,有(D-1)n种取法,..., 取第n点,有(D-n+1)种取法.
故:
p = Dn*(D-1)n*(D-2)n*...*(D-n+1)n*(Dn)^(D-n) / (Dn)^D
= D*(D-1)*...*(D-n+1)/D^n
考虑影响至少x个服务器,x可以等于n, n-1, ... , 1等
对x求期望:
E(x) = (D*(D-1)*...*(D-n+1)/D^n) * n +
(D*(D-1)*...*(D-n+2)/D^(n-1)) * (n-1) +
...
+1 //(影响至少一台服务器的概率是100%)
root# ./consHash2.out
Enter existSeverCnt:1
affected server count: 1
they are:
100 //服务器id从100开始自增分配
root# ./consHash2.out
Enter existSeverCnt:2
affected server count: 2
they are:
100 101
root# ./consHash2.out
Enter existSeverCnt:3
affected server count: 1
they are:
102
root# ./consHash2.out
Enter existSeverCnt:4
affected server count: 1
they are:
103
root# ./consHash2.out
Enter existSeverCnt:5
affected server count: 2
they are:
100 104
root# ./consHash2.out
Enter existSeverCnt:6
affected server count: 5
they are:
100 101 102 103 105
root# ./consHash2.out
Enter existSeverCnt:7
affected server count: 4
they are:
102 103 104 106
root# ./consHash2.out
Enter existSeverCnt:8
affected server count: 4
they are:
103 104 105 107
root# ./consHash2.out
Enter existSeverCnt:10
affected server count: 4
they are:
101 102 105 109
root# ./consHash2.out
Enter existSeverCnt:15
affected server count: 5
they are:
101 102 105 110 114
root# ./consHash2.out
Enter existSeverCnt:20
affected server count: 6
they are:
102 103 110 111 115 119
root# ./consHash2.out
Enter existSeverCnt:30
affected server count: 5
they are:
106 113 117 125 129
root# ./consHash2.out
Enter existSeverCnt:50
affected server count: 3
they are:
114 118 122
root# ./consHash2.out
Enter existSeverCnt:100
affected server count: 6
they are:
128 143 147 164 168 179
root# ./consHash2.out
Enter existSeverCnt:200
affected server count: 4
they are:
108 184 220 241
root# ./consHash2.out
Enter existSeverCnt:300
affected server count: 4
they are:
172 208 328 364
root# ./consHash2.out
Enter existSeverCnt:400
affected server count: 3
they are:
139 377 464
root#