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

美团点评开源方案 : 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 为
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值