如何生成全局唯一的id?

为什么要生成唯一ID?

在开发过程中,我们有时候一些业务场景需要生成一个唯一的id,比如在商城下单的适合,我们要给订单生成一个唯一的id,再比如,我们使用分布式数据库的适合,我们需要保证全局的id是唯一的,那么这时候要保证我们数据的唯一性

接下来看看两种常见的生成唯一id的方法

生成唯一ID的方法

UUID

首先来看第一种,UUID。UUID是获取唯一id的另一种简单方法。UUID是一个128位的数字,用于识别计算机系统中的信息。UUID发生碰撞的可能性很低。引用维基百科的话,“在大约100年里每秒生成10亿个uuid后,创建一个重复的概率将达到50%”[1]。

UUID的一个例子:09c93e62-50b4-468d-bf8a-c07e1040bfb2。uuid可以独立生成,而不需要服务器之间的协调。图7-3显示了UUIDs的设计。

UUID特点

1.128bit、字符串、无序

snowflake/雪花算法

雪花算法是由Twitter推出,是一个64位纯数字标识符

在分布式数据库生成全局id中,雪花算法常常被推荐使用

每个部分的解释如下

•符号位:1位。它将始终是0。这是留给将来使用的。它可以被用于区分有符号数字和无符号数字。

•时间戳(timestamp):41位。从这个时代或自定义时代开始的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值