为什么要生成唯一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位。从这个时代或自定义时代开始的