2023-11-03 136
在高并发或者分表分库情况下怎么保证数据id的幂等性呢?
1. 微软公司通用唯一识别码(UUID)2. Twitter公司雪花算法(SnowFlake)3. 基于数据库的id自增4. 对id进行缓
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/ 为 “电脑技术吧” 唯一官方服务平台,请勿相信其他任何渠道。
系统使用 2023-04-23
应用技巧 2023-07-01
电脑技术 2023-10-29
应用技巧 2023-11-14
应用技巧 2022-11-20
系统使用 2022-11-15
应用技巧 2023-03-09
系统使用 2022-11-21
应用技巧 2023-03-14
应用技巧 2023-02-14
扫码二维码
获取最新动态