java 订单并发_网易Java系列_高并发订单号生成策略揭秘

了解分布式、高并发下的id生成要求

对id有哪些要求?

​ ①全局唯一 ②趋势递增 ③效率高(生成、使用、索引) ④控制并发

​ 趋势递增:并不要求像1,2,3…一样严格有序递增,只要整体式来看是增长的,有规律可循即可。(一般id为数据库索引,对MySQL中的B+树等比较友好)

​ 效率高:生成(每秒生成的id数)、使用(最好是整形的数字,相比字符串更有优势)、索引(对整形有序数字构建索引相比字符串更快,查询也是)

生成id的策略一:UUID(长度为36的字符串)

​ 由以当前日期和时间、时钟序列和全局唯一的IEEE机器识别号(一般为MAC地址)等元素组成。

​ 优点:①使用简单;②不依赖其他组件;③不影响数据库拓展

​ 缺点:①数据库索引效率低;②太过于无意义,用户不友好;③长度36的字符串,空间占用大;④应用集群环境,机器多的时候,重复几率大

生成id的策略二:数据库自增长

​ MySQL中使用AUTO_INCREMENT,Oracle中使用Sequence系列

​ 集群环境下,不同的库设置不同的初始值,步长一致。

2c96f926f49a8f95a3a1e2d2c4472787.png

​ 优点:①无需编码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值