學(xué)習(xí)記錄之Leaf
什么是Leaf
leaf是葉子的意思
我們使用的Leaf是美團(tuán)公司開(kāi)源的一個(gè)分布式序列號(hào)(id)生成系統(tǒng)
我們可以在Github網(wǎng)站上下載項(xiàng)目直接使用
為什么需要Leaf

上面的圖片中
是一個(gè)實(shí)際開(kāi)發(fā)中常見(jiàn)的讀寫分離的數(shù)據(jù)庫(kù)部署格式
專門進(jìn)行數(shù)據(jù)更新(寫)的有兩個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)
它們同時(shí)新增數(shù)據(jù)可能產(chǎn)生相同的id
一旦生成相同的id,數(shù)據(jù)同步就會(huì)有問(wèn)題
會(huì)產(chǎn)生id沖突,甚至引發(fā)異常
我們?yōu)榱嗽谶@種多數(shù)據(jù)庫(kù)節(jié)點(diǎn)的環(huán)境下能夠產(chǎn)生唯一id
可以使用Leaf來(lái)生成
Leaf的工作原理
Leaf底層通過(guò)雪花算法生成不相同的id
在Leaf的數(shù)據(jù)庫(kù)中
設(shè)置了每個(gè)模塊申請(qǐng)id的數(shù)量,和起始值
一旦申請(qǐng)了這個(gè)模塊的分布式id,一次性獲取一些id緩存在內(nèi)存中以備使用

標(biāo)簽: