diff --git a/hutool-core/src/main/java/cn/hutool/core/util/IdUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/IdUtil.java
index b83944e75..bee58320f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/IdUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/IdUtil.java
@@ -105,7 +105,9 @@ public class IdUtil {
* @param workerId 终端ID
* @param datacenterId 数据中心ID
* @return {@link Snowflake}
+ * @deprecated 此方法容易产生起义:多个Snowflake实例产生的ID会产生重复,此对象在单台机器上必须单例!
*/
+ @Deprecated
public static Snowflake createSnowflake(long workerId, long datacenterId) {
return new Snowflake(workerId, datacenterId);
}
@@ -137,6 +139,57 @@ public class IdUtil {
return Singleton.get(Snowflake.class, workerId, datacenterId);
}
+ /**
+ * 获取单例的Twitter的Snowflake 算法生成器对象
+ * 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。
+ *
+ *
+ * snowflake的结构如下(每部分用-分开):
+ *
+ *
+ * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 + *+ *
+ * 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年)
+ * 然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点)
+ * 最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)
+ *
+ *
+ * 参考:http://www.cnblogs.com/relucent/p/4955340.html
+ *
+ * @param workerId 终端ID
+ * @return {@link Snowflake}
+ * @since 5.7.3
+ */
+ public static Snowflake getSnowflake(long workerId) {
+ return Singleton.get(Snowflake.class, workerId);
+ }
+
+ /**
+ * 获取单例的Twitter的Snowflake 算法生成器对象
+ * 分布式系统中,有一些需要使用全局唯一ID的场景,有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。
+ *
+ *
+ * snowflake的结构如下(每部分用-分开):
+ *
+ *
+ * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 + *+ *
+ * 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年)
+ * 然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点)
+ * 最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)
+ *
+ *
+ * 参考:http://www.cnblogs.com/relucent/p/4955340.html
+ *
+ * @return {@link Snowflake}
+ * @since 5.7.3
+ */
+ public static Snowflake getSnowflake() {
+ return Singleton.get(Snowflake.class);
+ }
+
/**
* 获取数据中心ID
* 数据中心ID依赖于本地网卡MAC地址。