美团点评开源方案 : Leaf
Leaf 根据不同业务的需求分别实现了 Leaf-segment(基于数据库的自增主键 ) 和 Leaf-snowflake(基于 Snowflake 算法) 两种方案。
Leaf 和前面的方案几乎相同,只是多了一些思考和优化。
Leaf-segment 方案
与前面 基于数据库的自增主键 批量缓存架构类似,只不过它没有依赖数据库的自增主键,而是**在数据库中为每个业务场景都记录目前可用的唯一 ID 号段,**具体表设计如下:

不同业务方的唯一 ID 需求用 biz_tag 字段区分,每个 biz_tag 的 ID 相互隔离 。
当某业务请求携带 biz_tag 访问 Leaf 服务时,数据库会通过执行如下语句生成唯一 ID :
BEGIN
UPDATE table SET max_id=max_id+step WHERE biz_tag=xxx
SELECT tag,max_id,step FROM table WHERE biz_tag=xxx
COMMIT
比如在数据表中外卖业务方的 biz_tag 为 waimai_ordertag , 此时 max_id 为 10000,step 为 2000,那么外卖业务方下次得到的唯一 ID 号段是 10001~12000,max_id 的值被更新为 12000 。
通过修改 step 字段值,可以方便地控制一个业务访问数据库的频率:
- 如果 step 为 1,则说明每次生成唯一 ID 时业务方都要访问数据库。
- 如果 step 为

最低0.47元/天 解锁文章
300

被折叠的 条评论
为什么被折叠?



