精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Twitter的分布式自增ID算法Snowflake

責任編輯:editor004

作者:任美芒

2016-07-11 11:46:11

摘自:INFOQ

Twitter早期使用MySQL存儲數據,隨著用戶的增長,單一MySQL實例無法支持海量數據,Twitter開始把存儲系統從MySQL遷移到Cassandra

Twitter早期使用MySQL存儲數據,隨著用戶的增長,單一MySQL實例無法支持海量數據,Twitter開始把存儲系統從MySQL遷移到Cassandra,但是Cassandra沒有內置的順序ID生成機制,因此Twitter開發了一套分布式系統全局唯一ID生成服務:Snowflake。

對于Twitter而言,必須滿足每秒上萬條消息的請求,并且每條消息能夠分配一個全局唯一的ID,因此,ID生成服務要求必須滿足高性能(>10K ids/s)、低延遲(<2ms)、高可用的特性,同時生成的ID還可以進行大致的排序,以方便客戶端的排序。

Snowflake滿足了以上的需求。Snowflake生成的每一個ID都是64位的整型數,它的核心算法也比較簡單高效,結構如下:

41位的時間序列,精確到毫秒級,41位的長度可以使用69年。時間位還有一個很重要的作用是可以根據時間進行排序。

10位的機器標識,10位的長度最多支持部署1024個節點。

12位的計數序列號,序列號即一系列的自增id,可以支持同一節點同一毫秒生成多個ID序號,12位的計數序列號支持每個節點每毫秒產生4096個ID序號。

最高位是符號位,始終為0,不可用。

Snowflake是一個高效方便的GUID生成算法,可用性強,速度快并且可以根據時間排序。但是,就目前來看部署Snowflake需要引入ZooKeeper和Snowflake專用服務器,Twitter也聲明希望可以讓Snowflake運行在Twitter以外更多的環境中,如果可以實現,Snowflake的使用就會更方便。

Snowflake是用Scala實現的,如果想要了解更多細節,請移步至Snowflake項目。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 穆棱市| 湘西| 蒲城县| 襄樊市| 汪清县| 营山县| 广灵县| 宜川县| 吴旗县| 福泉市| 固安县| 兴海县| 谢通门县| 额敏县| 深圳市| 临颍县| 英吉沙县| 巴中市| 平潭县| 大英县| 土默特右旗| 保康县| 海原县| 万宁市| 台北市| 高唐县| 和平县| 天峻县| 舟曲县| 花莲市| 碌曲县| 涪陵区| 黎平县| 商丘市| 吉林省| 龙陵县| 肃宁县| 郎溪县| 卢氏县| 谢通门县| 凤阳县|