ID生成器的原理

高效生成趋势有序的全局唯一ID,兼顾有序性、高性能、可扩展
SnowFlake原理:

  1. 64位的整型;
  2. 1位:标识部分;
  3. 41位:时间戳部分,这个是毫秒级的时间,一般实现上不会存储当前的时间戳,而是时间戳的差值; 2^41 /年毫秒数=69年
  4. 10位:节点部分,前5位作为数据中心标识,后5位作为机器标识,可以部署1024个节点;根据实际情况设置;
  5. 12位:序列号部分,支持同一毫秒内同一个节点可以生成4096个ID;
  6. 生成的ID,可以通过转62进制,准换成字母数字的10位长字符串;

UUID:

  1. 可以在本地产生全局唯一的ID,但不能保证递增,不适合数据主键;

数据库自增主键:

  1. 可以保证递增。但是无法分库分表;
  2. 即使修改步长,进行分库,也不方便集群伸缩;
WRITTEN BY:    陈贞

个人博客