数值型id生成器
基于Snowflake的ID生成器 ID长度64位,结构如下:
+--------+-----------------+---------------+-------------+------------+
| 1bit | 41bit | 5bit | 7bit | 10bit |
+--------+-----------------+---------------+-------------+------------+
| sign | delta timestamp | data center | machine id | sequence |
+--------+-----------------+---------------+-------------+------------+
各段含义如下:
----------------------------------------------------------------------------
| sign | 1位 | 符号位 | 取值为0,保证id值不为负 |
----------------------------------------------------------------------------
| timestamp | 41位 | 时间戳 | 当前时间与开始时间的时间戳差 |
----------------------------------------------------------------------------
| data center | 5位 | 数据中心 | 0~31,最多32个数据中心 |
----------------------------------------------------------------------------
| machine id | 7位 | 机器标识 | 0~127,每个数据中心最多可以部署128台机器 |
----------------------------------------------------------------------------
| sequence | 10位 | 序列计数 | 每个机器同一毫秒内最多可以产生1024个id号 |
----------------------------------------------------------------------------
理论上,每台机器1秒最多产生10241000(100w)个id
实测结果如下:
- 机器: 15款 MBP
- CPU: 2.9 GHz 双核Intel Core i5
- 内存: 8 GB 1867 MHz DDR3
- 线程数: 100
- MAX: 99.8w
- MIN: 72.9w
- AVG: 91.4w