核心思想
使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的
实现
举个例子,比如下面那个 64 bit 的 long 型数字:
第一个部分,是 1 个 bit:0,这个是无意义的。
第二个部分是 41 个 bit:表示的是时间戳。
第三个部分是 5 个 bit:表示的是机房 id,10001。
第四个部分是 5 个 bit:表示的是机器 id,1 1001。
第五个部分是 12 个 bit:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号,0000 00000000
优点
1.高性能高可用:生成时不依赖数据库,完全在内存中生成
2.容量大:每秒中能生成数百万的自增ID
3.ID自增:存入数据库中,索引效率高
缺点
依赖与系统时间的一致性,如果系统时间被回调,或者改变,可能会造成id冲突或者重复