uuid在线生成工具 uuid自动生成

 2023-11-03    136  

在高并发或者分表分库情况下怎么保证数据id的幂等性呢?

经常用到的解决方案有以下几种:

1. 微软公司通用唯一识别码(UUID)2. Twitter公司雪花算法(SnowFlake)3. 基于数据库的id自增4. 对id进行缓

本文将对snowflake算法进行讲解:

1. snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。2. 其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号,最后还有一个符号位,永远是0。

snowflake算法所生成的ID结构:

1. 整个结构是64位,所以我们在Java中可以使用long来进行存储。2. 该算法实现基本就是二进制操作,单机每秒内理论上最多可以生成1024*(2^12),也就是409.6万个ID(1024 X 4096 = 4194304)

64位说明:1. 0 – 0000000000 0000000000 0000000000 0000000000 0 – 00000 – 00000 – 0000000000002. 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是03. 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 – 开始时间截) 得到的值)。 这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。 41位的时间截,可以使用69年,年T = (1L

  •  标签:  

原文链接:http://www.tpbz008.cn/post/42171.html

=========================================

http://www.tpbz008.cn/ 为 “电脑技术吧” 唯一官方服务平台,请勿相信其他任何渠道。

热门标签
最新留言
友情链接