美团lef有两种模式:
Leaf-segment: 数据库一次下发一个号段的号,或者说每次下发指定步长的内的Id,然后又内存控制分配id的生成,并且发号程序会持有两个segment,当前一个segment使用了10%就会检查下一个segment是否已经去数据库取号,如果没有这时候就去取号了。Leaf-segment 对db有依赖,如果db 挂了两个segment发完了,就没工作了,所以 每次发号量一般是峰值的600倍,这样可以让程序用10-20分钟。
美团的Leaf-segment持有两个buffer,是为了让发号更加平滑,避免发完 当前缓冲区,再去初始化下一个缓冲区,这段时间请求数据库带来的同步等待。
美团的Leaf-segment是一种和时间无关的算法,不存在时间回拨问题,但是id太有规律,容易被人猜到业务量。
Leaf-snowflake:雪花算法+zk方案,并且本地缓存workId和centerId。