19 May 2020

核心思想

使用一个 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冲突或者重复



blog comments powered by Disqus