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

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>
      主站蜘蛛池模板: 黔西县| 闵行区| 和政县| 南汇区| 玉田县| 蒙山县| 阜城县| 大渡口区| 澄城县| 修文县| 成安县| 肥城市| 修文县| 永平县| 崇左市| 巴青县| 永顺县| 烟台市| 翼城县| 黄浦区| 无锡市| 长沙市| 南宫市| 新竹县| 宜宾市| 孙吴县| 西吉县| 南丹县| 宿迁市| 虞城县| 宜兰县| 淮北市| 竹山县| 云龙县| 军事| 翁牛特旗| 集贤县| 榆林市| 保康县| 白城市| 安塞县|