本项目分布式环境下生产全局唯一ID的做法

一般全局ID作为数据库的主键使用,主要有3种实现方式。

1,UUID:唯一但是不连续,作为字符串索引效率低,也不保证随机。

2,自增序列:绝对递增,长度可控,作为索引时效率高。

3,snowflake:按时间趋势递增,单独使用时效率较高。

目前我们项目主要使用第二种方式,部分使用UUID。

项目架构为dubbo+zk,使用专门流水服务器来生产ID,序号存储在数据库的流水表中。

可以自定义流水的生成规则:步长,起始值,最大值,缓存个数。

流水服务器以接口的方式对外提供服务,并将数据库的ID缓存起来,减少数据库的压力。

请求方可以按自己的需求来获取ID,比如,一次获取多少个?

同时在客户端也可以作二级缓存,以支持更大的并发。

为了防止临界值时,请求时间过长,增加预警机制,低于阈值时,提前补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值