隨著數(shù)據(jù)量的變化,數(shù)據(jù)節(jié)點(diǎn)的擴(kuò)容/縮容會(huì)是頻繁的操作。這時(shí)需要數(shù)據(jù)跨節(jié)點(diǎn)的遷移二蓝,處理節(jié)點(diǎn)間負(fù)載切換的過程叫做動(dòng)態(tài)負(fù)載均衡(rebalancing)引镊。
關(guān)于動(dòng)態(tài)負(fù)載均衡朦蕴,有下面幾個(gè)要求:
- 負(fù)載均衡目的在于平衡各個(gè)節(jié)點(diǎn)之間的負(fù)載壓力,負(fù)載均衡之后弟头,各個(gè)節(jié)點(diǎn)之間的負(fù)載(數(shù)據(jù)量吩抓、請(qǐng)求量等)應(yīng)該大致均衡;
- 負(fù)載均衡過程中赴恨,系統(tǒng)不應(yīng)該停止對(duì)外服務(wù)疹娶;
- 避免不必要的數(shù)據(jù)遷移,減少網(wǎng)絡(luò)帶寬消耗伦连;
數(shù)據(jù)負(fù)載均衡策略
為什么不使用哈希鍵取模的方式雨饺?因?yàn)樵诠?jié)點(diǎn)增減時(shí),需要遷移大量的數(shù)據(jù)惑淳。違反了上面最后一條要求额港。所以一般都使用帶虛節(jié)點(diǎn)的一致性哈希作為替代方案。
HBase和RethinkDB提出了動(dòng)態(tài)分片的方案歧焦,針對(duì)不同數(shù)據(jù)片數(shù)據(jù)量的增減情況移斩,對(duì)數(shù)據(jù)片進(jìn)行動(dòng)態(tài)分裂和合并(類比B樹的葉子分裂)。
一般在數(shù)據(jù)負(fù)載均衡過程中,先是算法生成均衡策略叹哭,再交由管理員人工審核之后提交運(yùn)行忍宋,以避免不必要的數(shù)據(jù)遷移。