亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Snowflake分布式ID生成算法PHP的版本

alphahans / 1359人閱讀

摘要:所以就誕生了這個項目,以下為線程安全版本和非線程安全版本差別。非線程安全版本線程安全版本安裝示例注意區(qū)間在超出范圍將會報告一個致命錯誤協(xié)議版權歸屬于請遵守協(xié)議

php_snowflake

項目地址

什么是 php_snowflake?

推特分布式id生成算法SnowFlake PHP 的實現(xiàn)

需求

PHP >= 5.6 (5.5以下的自行測試)

不支持windows

說明

純PHP無法實現(xiàn)SnowFlake算法,因為線程安全版本(需要tid)和非線程安全版本(需要pid)不能生成相同格式的id(本項目的tid是系統(tǒng)中唯一的所以不用擔心多個進程中tid沖突),并且PHP作為腳本語言無法維護sequence,當腳本結束的時候sequence又要被初始化,所以在大并發(fā)情況純PHP實現(xiàn)的版本SnowFlake算法根本沒有什么作用。所以就誕生了這個項目,以下為線程安全版本和非線程安全版本差別。

非線程安全版本(NTS)
0 2          15        20   28      32
---+----------------+--------------+----+----------+
00 |timestamp(ms)  | service_no   |pid | sequence |
---+----------------+--------------+----+----------+
線程安全版本(TS)
0 2          15        20   28      32
---+----------------+--------------+----+----------+
00 |timestamp(ms)  | service_no   |tid | sequence |
---+----------------+--------------+----+----------+
安裝
phpize
./configure --with-php-config=/you/phppath/php-config
make
make install
示例

注意:$service_no區(qū)間在 0-99999 超出范圍PHP將會報告一個致命錯誤!

$service_no = 999;
for ($i=0; $i < 10; $i++) { 
        echo PhpSnowFlake::nextId($service_no)."
";
}
/*

00146523488416500999000634280001
00146523488416500999000634280002
00146523488416500999000634280003
00146523488416500999000634280004
00146523488416500999000634280005
00146523488416600999000634280001
00146523488416600999000634280002
00146523488416600999000634280003
00146523488416600999000634280004
00146523488416600999000634280005

*/
協(xié)議

版權 (c) 2016 歸屬于 Towers 請遵守MIT協(xié)議.

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/30354.html

相關文章

  • PHP實現(xiàn)Snowflake生成布式唯一ID

    摘要:使用生成很多都是在分布式場景下使用,我看了下網(wǎng)上有其中有幾篇實現(xiàn)的都沒有考慮到線程安全?,F(xiàn)在有了的鎖和協(xié)程的加持,對于我們開發(fā)線程安全和高并發(fā)模擬還是很方便的,這里用結合來學習下實現(xiàn)最簡單的好久沒寫,感覺沒有真寫不了了。 Twitter 的 snowflake 在分布式生成唯一 UUID 應用還是蠻廣泛的,基于 snowflake 的一些變種的算法網(wǎng)上也有不少。使用 snowflake...

    luodongseu 評論0 收藏0
  • 布式id生成方案概述

    摘要:序本文主要來聊聊分布式的生成方案。分布式的生成,以為代表的,系列算法采用的就是劃分命名空間并行生成的思路。 序 本文主要來聊聊分布式id的生成方案。 目標 業(yè)務系統(tǒng)需要什么樣的ID生成器中提出了幾點目標: 唯一性 時間相關 粗略有序 可反解 可制造 主要思路 對于每個標識,都需要有一個命名空間(namespace),來保證其相對唯一性。分布式的ID生成,以Twitter Snowf...

    Terry_Tai 評論0 收藏0
  • php + redis + lua 實現(xiàn)一個簡單發(fā)號器(1)-- 原理篇

    摘要:出于以上兩個原因,我們需要自己的發(fā)號器來產(chǎn)生。與此同時,為了保證執(zhí)行,具有原子性,我們使用來進行實現(xiàn)。由于能力和水平有限,難免會有紕漏,希望及時指出。參考文章分布式生成器實現(xiàn)上實現(xiàn)原理 1、為什么要實現(xiàn)發(fā)號器 很多地方我們都需要一個全局唯一的編號,也就是uuid。舉一個常見的場景,電商系統(tǒng)產(chǎn)生訂單的時候,需要有一個對應的訂單編號。在composer上我們也可以看到有很多可以產(chǎn)生uuid...

    rottengeek 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<