引言
雪花算法是Twitter开源的分布式ID生成算法,可以产生64位的ID。其中第一位是固定的正数标识,41位用于存储时间戳,剩下的为机器ID和序列号。通过时间戳、机器ID和序列号的组合,确保每个ID都是唯一的。
PHP代码
1、定义雪花算法类
class Snowflake
{
private int $datacenterId; // 数据中心ID
private int $machineId; // 机器ID
private int $sequence = 0; // 序列号
private int $lastTimestamp = -1; // 上一个时间戳
private const DATA_CENTER_ID_BITS = 5; // 数据中心ID所占位数
private const MACHINE_ID_BITS = 5; // 机器ID所占位数
private const SEQUENCE_BITS = 12; // 序列号所占位数
private const MAX_DATA_CENTER_ID = -1 ^ (-1 << self::DATA_CENTER_ID_BITS);
private const MAX_MACHINE_ID = -1 ^ (-1 << self::MACHINE_ID_BITS);
private const TIMESTAMP_LEFT_SHIFT = self::SEQUENCE_BITS + self::MACHINE_ID_BITS +