分布式ID解决方案

278 阅读1分钟

针对分布式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。