webman雪花id生成類

1.0.2
版本
2025-03-21
版本更新時間
129
安裝
5
star
簡介
Webman 雪花 ID 生成類
使用簡單、高效的雪花 ID 算法生成唯一的 64 位整數(shù) ID,支持高并發(fā)場景,適合分布式系統(tǒng)中唯一標識的生成需求。
安裝
composer require jisheng100/snowflake
使用
1. 生成雪花id
$id = \Jisheng100\Snowflake\Snowflake::instance()->generateId();
2. 解析雪花id
$detail = \Jisheng100\Snowflake\Snowflake::instance()->parseId($id);
配置
雪花 ID 算法基于 64 位整數(shù)設(shè)計,其中:
- 符號位:1 位,始終為 0,保證生成的 ID 為正數(shù)。
- 時間戳:41 位,表示毫秒級時間戳,足夠支持約 69 年的時間跨度。
- 機器 ID + 進程 ID:共 10 位,用于標識唯一的機器和進程。
- 序列號:12 位,用于在同一毫秒內(nèi)生成多個唯一 ID,支持每毫秒最多生成 4096 個 ID。
配置參數(shù)說明
可以根據(jù)業(yè)務(wù)需求自定義以下參數(shù),確保在高并發(fā)場景下生成唯一 ID:
return [
'enable' => true,
'machine_id' => 0, // 機器 ID,多臺機器需配置唯一值
'machine_id_bits' => 3, // 機器 ID 位數(shù),范圍 0-7(2^3=8)
'process_id_bits' => 7, // 進程 ID 位數(shù),范圍 0-127(2^7=128)
'sequence_bits' => 12, // 序列號位數(shù),每毫秒最多生成 4096(2^12)個 ID
];
注意事項
- 機器 ID 配置:多臺機器需確保 machine_id 值唯一, machine_id的設(shè)值取決于機器id位數(shù),如machine_id_bits設(shè)置為3,則machine_id的設(shè)置值為0-7
- 進程 ID 位數(shù):需大于等于實際業(yè)務(wù)所需的最大進程數(shù)。例如,如果業(yè)務(wù)使用了 64 個進程,則 process_id_bits 至少為 6 位。
- 序列號位數(shù):默認支持每毫秒生成 4096 個 ID,如需更高并發(fā),可調(diào)整配置。