webman雪花id生成类

1.0.1 版本
2024-12-09 版本更新时间
10 安装
0 star

简介

Webman 雪花 ID 生成类

使用简单、高效的雪花 ID 算法生成唯一的 64 位整数 ID,支持高并发场景,适合分布式系统中唯一标识的生成需求。

安装

composer require jisheng100/snowflake

使用

1. 生成雪花id

$id =  \Jisheng100\Snowflake\Snowflake::instance()->generateId();

2. 解析雪花id

$detail = \Jisheng100\Snowflake\Snowflake::instance()->parseId($id);

配置

雪花 ID 算法基于 64 位整数设计,其中:

  • 符号位:1 位,始终为 0,保证生成的 ID 为正数。
  • 时间戳:41 位,表示毫秒级时间戳,足够支持约 69 年的时间跨度。
  • 机器 ID + 进程 ID:共 10 位,用于标识唯一的机器和进程。
  • 序列号:12 位,用于在同一毫秒内生成多个唯一 ID,支持每毫秒最多生成 4096 个 ID。

配置参数说明

可以根据业务需求自定义以下参数,确保在高并发场景下生成唯一 ID:

return [
    'enable' => true,
    'machine_id' => 0,            // 机器 ID,多台机器需配置唯一值
    'machine_id_bits' => 3,       // 机器 ID 位数,范围 0-7(2^3=8)
    'process_id_bits' => 7,       // 进程 ID 位数,范围 0-127(2^7=128)
    'sequence_bits' => 12,        // 序列号位数,每毫秒最多生成 4096(2^12)个 ID
];

注意事项

  • 机器 ID 配置:多台机器需确保 machine_id 值唯一, machine_id的设值取决于机器id位数,如machine_id_bits设置为3,则machine_id的设置值为0-7
  • 进程 ID 位数:需大于等于实际业务所需的最大进程数。例如,如果业务使用了 64 个进程,则 process_id_bits 至少为 6 位。
  • 序列号位数:默认支持每毫秒生成 4096 个 ID,如需更高并发,可调整配置。
赞助商