针对分布式ID由以下几种解决方案(分布式集群环境下的全局唯一ID)
-
UUID
中文释义:通用唯一识别码。使用java.util包提供的方法;
-
独立数据库自增ID
比如A表分表为A1表和A2表,保证ID唯一自增,ID怎么获取呢?可以单独创建一个Mysql数据库,这个数据库中创建一张表,这张表的ID设置为自增,其他地方需要全局唯一ID的时候,模拟向这个Mysql数据库这表中插入一条记录,此时ID会自增,通过Mysql的last_insert_id()获取自增生成的ID。
-
SnowFlake雪花算法
雪花算法是用于生成分布式ID的策略。是一种算法,基于算法生成一个long型的id。
- 符号为:固定为0,二进制表示最高位是符号位,0代表正数,1代表负数。
- 时间戳:41个二进制数用来记录时间戳,表示某一个毫秒(毫秒级)
- 机器id:代表当前算法运行机器的id
- 序列号:12位,用来记录某个机器同一个毫秒内产生的不同序列号,代表同一个毫秒可以产生的ID序号。
-
借助Redis的Incr命令获取全局唯一ID(推荐)
Redis Incr命令将key中储存的数字值增一。如果key不存在,key的值会被初始化为0,然后在执行incr。