美团雪花LEAF算法
美团雪花LEAF算法
leaf的优势: 高可靠 低延迟 全局唯一
目前主流的分布式ID大部分基于 数据库号段模式和雪花算法,美团2者兼具
leaf-segment模式
-
从数据库获取MAX_ID ,服务本地生成 相应步长的自增ID;
-
并不是号用完就去数据库加载max_id;而是号段消耗10%后就去提前加载 做到无阻塞
leaf-snowflake
1 + 41(时间戳) + 5 机房 + 5 机器 + 12 seq = 64
根据zookeeper生成workId 也就是 机房+机器
leaf的workerId是基于zk的顺序id来生成的,每个应用在启动时都会在zk生成一个顺序id,相当于一个机器对应一个顺序节点
Leaf-snowflake
对Zookeeper是一种弱依赖关系,除了每次会去ZK拿数据以外,也会在本机文件系统上缓存一个workerID
文件。一旦ZooKeeper出现问题,恰好机器出现故障需重启时,依然能够保证服务正常启动。