亿级流量系统架构设计与实战(九)

美团点评开源方案 : Leaf

Leaf 根据不同业务的需求分别实现了 Leaf-segment(基于数据库的自增主键 )Leaf-snowflake(基于 Snowflake 算法) 两种方案。

Leaf 和前面的方案几乎相同,只是多了一些思考和优化。

Leaf-segment 方案

与前面 基于数据库的自增主键 批量缓存架构类似,只不过它没有依赖数据库的自增主键,而是**在数据库中为每个业务场景都记录目前可用的唯一 ID 号段,**具体表设计如下:

亿级流量系统架构设计与实战(九)_第1张图片

不同业务方的唯一 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 的

你可能感兴趣的:(系统架构,java,架构,开发语言,分布式,ID,ID,生成器,美团开源方案)