技术解析

大佬们来看一下我这个丐中丐版本的 Snowflake ID 生成算法有没有什么问题?
0
2021-06-04 01:13:09
idczone
public static long gen() {
  return ((System.currentTimeMillis() - 1609459200000L) << 23)
       | (RANDOM.nextInt() & 0x7FFFFFL);
}

这个是用 Java 写的,给非 Java 的大佬们解释一下。

  1. System.currentTimeMillis()这个方法返回当前相比 1970 年 1 月 1 日 0 点 UTC 时间过了多少秒。
  2. 1609459200000L 是 UTC 美国服务器时间 2021 元旦凌晨。
  3. RANDOM.nextInt()返回一个随机的 32 位的有符号整数。

相比正版的,这个少了 datacenterid,workid,也没有序列号,低 23 位完全就是个随机数。这套算法应用与 MySQL 的主键生成,而且应用可能是多活部署的,能打吗?




数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服