天天看點

圖解各路分布式ID生成算法

在分布式系統中,通常會用到分布式ID來标注資料的唯一性,而分布式ID的生成方式又多種多樣,今天我們就來讨論一下主流的分布式ID生成政策。

分布式ID基本需求

  • 全局唯一
  • 趨勢遞增
  • 資訊安全

全局唯一

這是基本要求,不必解釋

趨勢遞增

為什麼要趨勢遞增呢?

第一,由于我們的分布式ID,是用來辨別資料唯一性的,是以多數時候會被定義為主鍵或者唯一索引。

第二,并且絕大多數網際網路公司使用的資料庫是:MySQL,存儲引擎為innoDB。

對于

B + Tree

這個資料結構來講,資料以自增順序來寫入的話,b+tree的結構不會時常被打亂重塑,存取效率是最高的。

資訊安全

由于資料是遞增的,是以,惡意使用者的可以根據目前ID推測出下一個,非常危險,是以,我們的分布式ID盡量做到不易被破解。

資料庫主鍵自增(Flicker)

基于資料庫主鍵自增的方案,名為

Flicker

主要是利用MySQL的自增主鍵來實作分布式ID。

以下為

Flicker

實作分布式ID的主流做法:

1、需要單獨建立一個資料庫執行個體:flicker

create database `flicker`;
           

<

繼續閱讀