世界上没有两片相同的雪花。
1.符号位,占用1位。
2.时间戳,占用41位,可以支持69年的时间跨度。
3.机器ID,占用10位。
4.序列号,占用12位,一毫秒可以生成4095个ID。
优点:
- 每个毫秒值包含的ID值很多,不够可以变动位数来增加,性能佳(依赖workId的实现)。
- 时间戳值在位高,中间是固定的机器码,自增的序列在低位,整个ID是趋势递增的。
- 能够根据业务场景数据在节点布置灵活调整bit位划分,灵活度高。
缺点:
- 强依赖于机器时钟,如果时钟回拨,会导致重复的ID生成,所以一般基于此算法发现时钟回拨,都会抛出异常处理,阻止ID生成,这可能导致服务不可用。