偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

分布式ID生成之雪花算法

開發(fā) 前端 分布式 算法
分布式唯一ID的方案有很多,本文主要討論了雪花算法,組成結構大致分為了無效位、時間位、機器位和序列號位。

唯一ID可以標識數(shù)據(jù)的唯一性,在分布式系統(tǒng)中生成唯一ID的方案有很多,常見的方式大概有以下三種:

  • 依賴數(shù)據(jù)庫,使用如MySQL自增列或Oracle序列等。
  • UUID隨機數(shù)
  • snowflake雪花算法(本文將要討論)

一、數(shù)據(jù)庫和UUID方案的不足之處

采用數(shù)據(jù)庫自增序列:

  • 讀寫分離時,只有主節(jié)點可以進行寫操作,可能有單點故障的風險
  • 分表分庫,數(shù)據(jù)遷移合并等比較麻煩

UUID隨機數(shù):

  • 采用無意義字符串,沒有排序
  • UUID使用字符串形式存儲,數(shù)據(jù)量大時查詢效率比較低

二、關于雪花算法

有這么一種說法,自然界中并不存在兩片完全一樣的雪花的。每一片雪花都擁有自己漂亮獨特的形狀、獨一無二。雪花算法也表示生成的ID如雪花般獨一無二。

分布式ID生成--雪花算法

1. 雪花算法概述

雪花算法生成的ID是純數(shù)字且具有時間順序的。其原始版本是scala版,后面出現(xiàn)了許多其他語言的版本如Java、C++等。

2. 組成結構

分布式ID生成--雪花算法

大致由:首位無效符、時間戳差值,機器(進程)編碼,序列號四部分組成。

3. 特點(自增、有序、適合分布式場景)

  • 時間位:可以根據(jù)時間進行排序,有助于提高查詢速度。
  • 機器id位:適用于分布式環(huán)境下對多節(jié)點的各個節(jié)點進行標識,可以具體根據(jù)節(jié)點數(shù)和部署情況設計劃分機器位10位長度,如劃分5位表示進程位等。
  • 序列號位:是一系列的自增id,可以支持同一節(jié)點同一毫秒生成多個ID序號,12位的計數(shù)序列號支持每個節(jié)點每毫秒產(chǎn)生4096個ID序號

snowflake算法可以根據(jù)項目情況以及自身需要進行一定的修改。

分布式ID生成--雪花算法

三、雪花算法的缺點

雪花算法在單機系統(tǒng)上ID是遞增的,但是在分布式系統(tǒng)多節(jié)點的情況下,所有節(jié)點的時鐘并不能保證不完全同步,所以有可能會出現(xiàn)不是全局遞增的情況。

四、總結

分布式唯一ID的方案有很多,本文主要討論了雪花算法,組成結構大致分為了無效位、時間位、機器位和序列號位。其特點是自增、有序、純數(shù)字組成查詢效率高且不依賴于數(shù)據(jù)庫。適合在分布式的場景中應用,可根據(jù)需求調整具體實現(xiàn)細節(jié)。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2022-02-23 07:09:30

分布式ID雪花算法

2023-12-12 07:13:39

雪花算法分布式ID

2024-11-19 15:55:49

2024-02-02 10:57:12

Java分布式算法

2023-12-13 09:35:52

算法分布式

2017-07-01 16:02:39

分布式ID生成器

2020-07-21 11:35:21

開發(fā)技能代碼

2016-11-29 09:12:21

數(shù)據(jù)庫分布式ID

2022-01-27 10:06:29

生成算法分布式

2024-10-24 09:22:30

2024-12-04 09:36:37

2019-07-12 09:14:07

分布式系統(tǒng)負載均衡

2024-12-04 08:38:29

2018-07-17 08:14:22

分布式分布式鎖方位

2025-03-28 10:27:29

2021-03-04 17:55:27

算法Raft分布式

2022-06-16 07:31:15

MySQL服務器服務

2023-03-05 18:23:38

分布式ID節(jié)點

2023-11-10 08:22:09

雪花算法生成算法分布式

2025-05-15 03:00:00

點贊
收藏

51CTO技術棧公眾號