{{ it.name }}
{{ it.text }}
关键字:MySQL数据库容灾方案、MySQL数据库数据备份、MySQL数据库压缩
前言
扩容时,随机选择要移动的元素
从现有 n 节点扩容到 n+1 节点时,n 节点上每个元素有 1/(n+1) 的概率移动到新节点
使用稳定的、可重现的随机数序列——以 key 为随机数种子
从 b+1 增加到 b+2,不跳跃的概率是 (b+1)/(b+2)
一直加到第 i 个 bucket,都不跳跃,其概率为 (b+1)/(b+2)*(b+2)/(b+3)*...*(i-1)/(-) = (b+1)/i
即 P(j>=i) = (b+1)/i。该等式对于任意 i 都成立。
i <= floor((b+1)/r) 时,i 最大可为 floor((b+1)/r),则 j>=floor((b+1)/r)
i > floor((b+1)/r) 时,i 最小可为 floor((b+1)/r)+1,则 j<=floor((b+1)/r)
func ch2(key int, num_buckets int) int {
r := rand.New(rand.NewSource(int64(key)))
b1 := -1
j := 0
for j < num_buckets {
b1 = j + 1
j = int(math.Floor(float64(b1)/r.Float64()))
}
return b1
}
关键字:MySQL数据库容灾方案、MySQL数据库数据备份、MySQL数据库压缩