参考文献

雪花算法

  • 雪花算法是一种用于生成全局唯一ID的算法,也称为Twitter雪花算法。它能够在分布式系统中生成唯一的ID,而不需要集中式的ID生成器来维护。雪花算法的原理如下:
    1. 雪花算法的ID由64位二进制数组成,其中第1位为符号位,始终为0;第2-42位为时间戳,记录当前时间与一个固定的起始时间之间的差值,精确到毫秒级别;第43-52位为机器ID,用于标识不同的机器,最多能够标识1024台机器;第53-64位为序列号,表示同一毫秒内生成的不同ID,最多能够生成4096个ID。
    2. 在生成ID之前,需要先初始化一些参数,包括起始时间、机器ID等。起始时间可以设置为某个固定的时间点,机器ID可以通过配置文件或者其他方式来获取。
    3. 在生成ID时,雪花算法会先获取当前时间,计算出时间戳,并将时间戳左移22位,使其占据ID的前42位。然后再将机器ID左移12位,占据ID的43-52位。最后,将序列号加1,并将其与机器ID和时间戳拼接起来,即为最终的ID。
    4. 如果在同一毫秒内生成的ID超过了4096个,序列号会重新从0开始计数。如果在同一毫秒内生成的ID超过了4096个,并且当前时间已经超过了上一次生成ID的时间,那么时间戳会更新到当前时间,并且序列号重新从0开始计数。
    5. 雪花算法生成的ID具有唯一性、顺序性和可排序性,可以用于分布式系统中的各种场景,比如订单号、日志ID等。