From 60999194d1a13e39655476eb92e67f18a32b5c13 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 28 Jun 2021 21:58:28 +0800 Subject: [PATCH] add method --- .../main/java/cn/hutool/core/util/IdUtil.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) 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地址。