雪花算法的坑
雪花算法尽量不要模2或4 会导致id偏移到0区
雪花算法组成
正数统一为0|
时间戳0-0101-0000-1000-0010-1101-0101-0101-1010-1111-0010|
机房01100|
机器00111|
毫秒值碰撞0000-0000-0000
最后12位表示0位 (Math.pow(2, 12) - 1)=4095 一共4096个数
5位datacenterId和5位workerId表示各 0-31 一共32个数
存在问题
当分配id速率小时,同一毫秒只分配一个id则最后12位都是0,所以不存在2^0,故而雪花生成的id是2,4的倍数,取模偏移0区
数据量少时或者tps低时尽量避免取模2,4,如分片键