sschiau/Particle

GitHub: sschiau/Particle

一个基于 PHP 的 64 位非协调式分布式 ID 生成器,支持毫秒级时间戳、多机器部署和序列号,适用于分布式系统中生成全局唯一且时间有序的标识符。

Stars: 133 | Forks: 28

[![最新稳定版本](https://poser.pugx.org/sschiau/particle/v/stable)](https://packagist.org/packages/sschiau/particle) [![许可证](https://poser.pugx.org/sschiau/particle/license)](https://packagist.org/packages/sschiau/particle) # Particle #### 语言:PHP #### 64位整型基于时间的 ID 生成器 ### 非协调式 为了在数据中心内部和跨数据中心实现高可用性,生成 ID 的机器彼此之间不需要进行协调。 ### 解决方案 * PHP(已在 v8.4.14 上测试) * Particle ID(64 位)由以下部分组成: * time(时间戳) - 42 位(毫秒精度,使用自定义 epoch) * configured machine id(已配置的机器 ID) - 10 位 - 最多支持 1024 台机器 * sequence number(序列号) - 12 位 - 最多 4096 个随机数 ### 系统时钟依赖 您应该使用 NTP 来保持系统时钟的准确性。 ## 如何使用 #### 生成 Particle ID 将 particle 类中的 EPOCH 常量更改为今天的毫秒级 epoch 时间(13 位数字) ``` $machineID = 0; // Machine ID (aka Server ID no.) Particle::generateParticle($machineID); ``` #### 从 Particle ID 获取时间(毫秒精度) ``` $particleID = '4611691166465789880'; Particle::timeFromParticle($particleID); ```
标签:64位ID生成器, Composer包, NTP时钟同步, OpenVAS, Packagist, PHP, 分布式ID, 后端开发, 唯一ID, 唯一标识符, 序列号, 数据中心, 数据库主键, 无协调, 时间基ID, 机器ID, 毫秒级时间戳, 雪花算法, 高并发