DonkeyID---php扩展-64位自增ID生成器
##原理
參考Twitter-Snowflake 算法,擴展了其中的細節。具體組成如下圖:
如圖所示,64bits 咱們分成了4個部分。
###唯一性保證
100%唯一性保證,根據nodeid的不一樣保證多服務器的唯一性,使用共享內存+自旋鎖保證單節點多進程的唯一性 同一毫秒內自增變量保證并發的唯一性。
###安裝DonkeyID擴展
cd /usr/local/php/include/php/ext sudo git clone https://github.com/osgochina/donkeyid.git cd /usr/local/php/include/php/ext/donkeyid/donkeyid sudo phpize sudo ./configure --with-php-config=/usr/local/php/bin/php-config sudo make && sudo make install?
配置
在php.ini 中配置節點id
[DonkeyId] ;0-4095 donkeyid.node_id=0 ;0-當前時間戳 donkeyid.epoch=0?
####api接口
- dk_get_next_id()
獲取基于Snowflake算法的id
- dk_get_next_ids(num,num,time=0)
獲取基于Snowflake算法的id列表.num:生成id的數量,num:生成id的數量,time:需要生成指定時間的id.$time 默認為0 生成當前時間指定數量的id
- dk_parse_id($id)
解析基于Snowflake算法的id元數據,返回值包括:time id生成時間,node_id 節點id,sequence 自增數
- dk_get_ts_id()
獲取10進制的時間戳類型的id
- dk_get_ts_ids(num,num,time=0)
獲取10進制的時間戳類型的id列表.num:生成id的數量,num:生成id的數量,time:需要生成指定時間的id.$time 默認為0 生成當前時間指定數量的id
- dk_parse_ts_id($tsid)
解析10進制的時間戳類型的id元數據,返回值包括:time id生成時間,node_id 節點id,sequence 自增數
- dk_get_dt_id()
獲取字符串類型的id,顯式包含日期時間屬性
?
轉載于:https://www.cnblogs.com/starfish29/p/11492548.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的DonkeyID---php扩展-64位自增ID生成器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 评分卡建模
- 下一篇: php 数学函数bc的使用(浮点数计算)