【MyBatis-Plus】雪花算法

雪花算法是由推特公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

核心思想


长度共64bit(一个long型)。


首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。


41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。


10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。


12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。

【MyBatis-Plus】雪花算法_第1张图片 

优点

整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高。

你可能感兴趣的:(JAVA后端,java,开发语言)