使用nodejs分布式生成int型的uuid

1,579 阅读1分钟

源码
代码
原理
Twitter的snowflake
为啥写
生产环境的服务器,一直以来用的都是ulid,生成字符串排序的uid。
没写node以前,用的都是int64做唯一id。心里一直想着哪天一定要换掉ulid。
找不到合适的现有库,发现自己对js的与或运算运用不自如。
刚好也想试试c++扩展,最后就写成现在这个样子了。

区别和特点
首先,使用的是snowflake原理。
但是有一些区别,js的正数最大是2^53,所以这个库最后生成是 int53位的uuid 。

53 位 bit 是这样分配的
32bit 时间戳秒:能用最多100多年
9bit 机器:最多512台机器/线程
12bit 自增:每秒最多4096个

欢迎测试、使用、提意见、交流。