由于在Java中64bit的整数是long类型,所以在Java中SnowFlake算法生成的id就是long来存储的。
SnowFlake可以保证:
- 所有生成的id按时间趋势递增
- 整个分布式系统内不会产生重复id(因为有datacenterId和workerId来做区分)
示例代码:
package nyfz.util;
import org.apache.commons.lang3.RandomUtils;
import com.relops.snowflake.Snowflake;
public class IdUtil {
private static Snowflake s = new Snowflake(RandomUtils.nextInt(0, 1024));
public static long next(){
return s.next();
}
}
pom.xml添加依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.relops</groupId>
<artifactId>snowflake</artifactId>
<version>1.1</version>
</dependency>