精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

分布式架構系統生成全局唯一序列號的一個思路

存儲 存儲軟件 分布式
分布式架構下,唯一序列號生成是我們在設計一個系統,尤其是數據庫使用分庫分表的時候常常會遇見的問題。當分成若干個sharding表后,如何能夠快速拿到一個唯一序列號,是經常遇到的問題。

 一、相關背景

分布式架構下,唯一序列號生成是我們在設計一個系統,尤其是數據庫使用分庫分表的時候常常會遇見的問題。當分成若干個sharding表后,如何能夠快速拿到一個唯一序列號,是經常遇到的問題。

在攜程賬號數據庫遷移MySql過程中,我們對用戶ID的生成方案進行了新的設計,要求能夠支撐攜程現有的新用戶注冊體量。

本文通過攜程用戶ID生成器的實現,希望能夠對大家設計分庫分表的唯一id有一些新的思路。

[[210819]]

二、特性需求

  1. 全局唯一
  2. 支持高并發
  3. 能夠體現一定屬性
  4. 高可靠,容錯單點故障
  5. 高性能

三、業內方案

生成ID的方法有很多,來適應不同的場景、需求以及性能要求。

常見方式有:

1、利用數據庫遞增,全數據庫唯一。

優點:明顯,可控。

缺點:單庫單表,數據庫壓力大。

2、UUID, 生成的是length=32的16進制格式的字符串,如果回退為byte數組共16個byte元素,即UUID是一個128bit長的數字,一般用16進制表示。

優點:對數據庫壓力減輕了。

缺點:但是排序怎么辦?

此外還有UUID的變種,增加一個時間拼接,但是會造成id非常長。

3、twitter在把存儲系統從MySQL遷移到Cassandra的過程中由于Cassandra沒有順序ID生成機制,于是自己開發了一套全局唯一ID生成服務:Snowflake。

  1. 41位的時間序列(精確到毫秒,41位的長度可以使用69年)
  2. 10位的機器標識(10位的長度最多支持部署1024個節點)
  3. 12位的計數順序號(12位的計數順序號支持每個節點每毫秒產生4096個ID序號) ***位是符號位,始終為0。

優點:高性能,低延遲;獨立的應用;按時間有序。

缺點:需要獨立的開發和部署。

4、Redis生成ID

當使用數據庫來生成ID性能不夠要求的時候,我們可以嘗試使用Redis來生成ID。這主要依賴于Redis是單線程的,所以也可以用生成全局唯一的ID??梢杂肦edis的原子操作INCR和INCRBY來實現。

可以使用Redis集群來獲取更高的吞吐量。假如一個集群中有5臺Redis??梢猿跏蓟颗_Redis的值分別是1,2,3,4,5,然后步長都是5。各個Redis生成的ID為:

A:1,6,11,16,21

B:2,7,12,17,22

C:3,8,13,18,23

D:4,9,14,19,24

E:5,10,15,20,25

比較適合使用Redis來生成每天從0開始的流水號。比如訂單號=日期+當日自增長號??梢悦刻煸赗edis中生成一個Key,使用INCR進行累加。

優點:

不依賴于數據庫,靈活方便,且性能優于數據庫。

數字ID天然排序,對分頁或者需要排序的結果很有幫助。

使用Redis集群也可以防止單點故障的問題。

缺點:

如果系統中沒有Redis,還需要引入新的組件,增加系統復雜度。

需要編碼和配置的工作量比較大,多環境運維很麻煩,

在開始時,程序實例負載到哪個redis實例一旦確定好,未來很難做修改。

5.   Flicker的解決方案

因為MySQL本身支持auto_increment操作,很自然地,我們會想到借助這個特性來實現這個功能。

Flicker在解決全局ID生成方案里就采用了MySQL自增長ID的機制(auto_increment + replace into + MyISAM)。

6.還有其他一些方案,比如京東淘寶等電商的訂單號生成。因為訂單號和用戶id在業務上的區別,訂單號盡可能要多些冗余的業務信息,比如:

滴滴:時間+起點編號+車牌號

淘寶訂單:時間戳+用戶ID

其他電商:時間戳+下單渠道+用戶ID,有的會加上訂單***個商品的ID。

而用戶ID,則要求含義簡單明了,包含注冊渠道即可,盡量短。

四、最終方案

最終我們選擇了以flicker方案為基礎進行優化改進。具體實現是,單表遞增,內存緩存號段的方式。

首先建立一張表,像這樣:

SEQUENCE_GENERATOR_TABLE

id   stub

1    192.168.1.1

其中id是自增的,stub是服務器ip

因為新數據庫采用mysql,所以使用mysql的獨有語法 replace to來更新記錄來獲得唯一id,例如這樣:

  1. REPLACE INTO SEQUENCE_GENERATOR_TABLE (stub) VALUES (“192.168.1.1”); 

再用SELECT id FROM SEQUENCE_GENERATOR_TABLEWHERE stub = “192.168.1.1”;   把它拿回來。

到上面為止,我們只是在單臺數據庫上生成ID,從高可用角度考慮,接下來就要解決單點故障問題。

這也就是為什么要有這個機器ip字段呢?就是為了防止多服務器同時更新數據,取回的id混淆的問題。

所以,當多個服務器的時候,這個表是這樣的:

id   stub

5    192.168.1.1

2    192.168.1.2

3    192.168.1.3

4    192.168.1.4

每臺服務器只更新自己的那條記錄,保證了單線程操作單行記錄。

這時候每個機器拿到的分別是5,2,3,4這4個id。

至此,我們似乎解決這個服務器隔離,原子性獲得id的問題,也和flicker方案基本一致。

但是追根溯源,在原理上,方案還是依靠數據庫的特性,每次生成id都要請求db,開銷很大。我們對此又進行優化,把這個id作為一個號段,而并不是要發出去的序列號,并且這個號段是可以配置長度的,可以1000也可以10000,也就是對拿回來的這個id放大多少倍的問題。

OK,我們從DB一次查詢操作的開銷,拿回來了1000個用戶id到內存中了。

現在的問題就是要解決同一臺服務器在高并發場景,讓大家順序拿號,別拿重復,也別漏拿。

這個問題簡單來說,就是個保持這個號段對象隔離性的問題。

AtomicLong是個靠譜的辦法。

當***次拿回號段id后,擴大1000倍,然后賦值給這個變量atomic,這就是這個號段的***個號碼。

  1. atomic.set(n * 1000); 

并且內存里保存一下***id,也就是這個號段的***一個號碼

  1. currentMaxId = (n + 1) * 1000; 

一個號段就形成了。

此時每次有請求來取號時候,判斷一下有沒有到***一個號碼,沒有到,就拿個號,走人。

  1. Long uid = atomic.incrementAndGet(); 

如果到達了***一個號碼,那么阻塞住其他請求線程,最早的那個線程去db取個號段,再更新一下號段的兩個值,就可以了。

這個方案,核心代碼邏輯不到20行,解決了分布式系統序列號生成的問題。

這里有個小問題,就是在服務器重啟后,因為號碼緩存在內存,會浪費掉一部分用戶ID沒有發出去,所以在可能頻繁發布的應用中,盡量減小號段放大的步長n,能夠減少浪費。

經過實踐,性能的提升遠遠重要于浪費一部分id。

如果再追求***,可以監聽spring或者servlet上下文的銷毀事件,把當前即將發出去的用戶ID保存起來,下次啟動時候再撈回內存即可。

五、上線效果

運行5個多月,十分穩定。

SOA服務平均響應時間 0.59毫秒;

客戶端調用平均響應時間2.52毫秒;

附流程圖:

責任編輯:武曉燕 來源: 36大數據
相關推薦

2024-03-13 08:23:08

分布式系統隨機

2025-07-25 01:00:00

Redis+接口冪等性

2021-06-28 14:45:07

分布式框架操作

2021-11-08 19:25:37

Go生成系統

2021-06-05 07:33:09

ID分布式架構

2022-02-23 07:09:30

分布式ID雪花算法

2023-09-03 22:14:23

分布式ID

2013-09-11 16:02:00

Spark分布式計算系統

2022-08-01 08:01:04

ID發號器系統

2021-10-13 06:49:14

事故復盤ID

2016-09-30 10:13:07

分布式爬蟲系統

2019-01-28 11:46:53

架構運維技術

2018-09-06 22:49:31

分布式架構服務器

2020-07-30 09:35:09

Redis分布式鎖數據庫

2022-06-27 08:36:27

分布式事務XA規范

2011-09-14 10:08:07

Beanstalkd

2020-06-11 13:31:45

TCP序列號網絡

2017-04-12 09:29:02

HiveMapReduceSpark

2022-04-14 07:56:30

公平鎖Java線程

2023-05-29 14:07:00

Zuul網關系統
點贊
收藏

51CTO技術棧公眾號

一色道久久88加勒比一| 亚洲美女网站18| 五月婷婷一区二区| 国偷自产av一区二区三区| 天天综合日日夜夜精品| 欧美大香线蕉线伊人久久国产精品 | 国产精品videosex极品| 亚洲成人亚洲激情| 无码日韩人妻精品久久蜜桃| 欧美黑人激情| 成人黄页毛片网站| 国产97在线观看| 欧美性生给视频| 99久热这里只有精品视频免费观看| 亚洲18女电影在线观看| 日韩中文一区二区三区| 精品人妻午夜一区二区三区四区 | 欧美日韩夫妻久久| 精品免费久久久久久久| 欧美日韩激情视频一区二区三区| 免费一级欧美片在线观看| 精品久久国产精品| 精品影片一区二区入口| 99久久婷婷国产综合精品首页| 亚洲老妇xxxxxx| 欧美激情第六页| 国产欧美久久久| 午夜一区不卡| 欧美另类极品videosbest最新版本 | 欧美色视频一区二区三区在线观看| 成人在线视频中文字幕| 欧美喷水一区二区| 成人小视频在线看| 免费在线国产视频| 国产精品丝袜一区| 麻豆av一区| www.综合色| 日本欧美一区二区在线观看| 97色伦亚洲国产| 99热精品免费| 成人网18免费网站| 精品一区电影国产| 午夜性福利视频| 亚洲a成人v| 91久久精品午夜一区二区| 搞av.com| 中文字幕中文字幕在线中高清免费版| 国产欧美一二三区| 欧美一区国产一区| 无码精品视频一区二区三区| 一级性生活免费视频| 第一福利在线视频| 一级特黄大欧美久久久| 国产精品h视频| 国产爆初菊在线观看免费视频网站 | 日韩中文字幕区一区有砖一区 | 长河落日免费高清观看| 国产精品羞羞答答在线观看| 日韩成人av网址| 天天躁日日躁狠狠躁av| 日本一区二区三区视频在线看 | 中文字幕欧美日韩在线| 亚洲自拍偷拍一区二区| 日韩精品福利一区二区三区| 亚洲国产中文字幕在线观看| 在线精品视频播放| 高清日韩欧美| 亚洲国产精久久久久久 | 51精品秘密在线观看| 超碰av在线免费观看| 蜜桃视频在线观看播放| 亚洲成人精品一区二区| 无码专区aaaaaa免费视频| av3级在线| 婷婷一区二区三区| 日本日本19xxxⅹhd乱影响| www.youjizz.com在线| 亚洲v中文字幕| 男人日女人bb视频| 最新日韩三级| 欧美精品1区2区3区| 在线播放免费视频| 97一区二区国产好的精华液| 亚洲国产成人精品一区二区| 中文精品在线观看| 精品产国自在拍| 色妞久久福利网| 91视频青青草| 激情欧美丁香| 欧美专区在线视频| 中文字幕码精品视频网站| 激情综合一区二区三区| 国产91一区二区三区| 天堂在线资源网| 国产婷婷一区二区| 中文字幕av日韩精品| 牛牛精品在线| 色综合一区二区三区| 91极品尤物在线播放国产| 91精品一久久香蕉国产线看观看| 日韩午夜精品视频| 亚洲国产第一区| 奇米影视亚洲| 欧美激情按摩在线| 免费黄色片视频| 国内精品免费**视频| 九色91在线视频| 日韩精品毛片| 婷婷成人激情在线网| 欧美三级午夜理伦三级富婆| 综合中文字幕| 在线免费观看羞羞视频一区二区| 婷婷在线精品视频| 久久成人国产| 91国产在线免费观看| 精品999视频| 亚洲综合图片区| 成人性做爰aaa片免费看不忠| 国产区一区二| 亚洲社区在线观看| 久久久久久久久久久97| 日韩电影免费一区| 好吊色欧美一区二区三区 | 日韩中文字幕视频在线| 久久成人在线观看| 麻豆成人久久精品二区三区小说| 国产精品久久久久久久久久久久冷 | 97色在线观看| 99视频在线观看免费| 久久精品亚洲精品国产欧美| 日本中文字幕在线视频观看| 日韩精品一页| 国产亚洲人成网站在线观看| 日韩精品成人一区| 国产精品99久| 亚洲在线不卡| **欧美日韩在线观看| 日韩精品极品视频| 日韩激情一区二区三区| 国产在线视频不卡二| 日韩精品一区二区三区在线观看 | 日韩一二三区视频| 久久免费精品国产| 91精品一区二区三区综合在线爱| 日韩av理论片| 污污网站在线免费观看| 亚洲一区二区高清| 无套白嫩进入乌克兰美女| 日韩欧美中文| 国产成人精品在线观看| 天堂中文在线资| 亚洲精品国产a久久久久久| 不卡的在线视频| 欧美在线电影| 国产精品嫩草影院一区二区| 国产小视频在线观看| 日韩欧美精品中文字幕| 91黄色免费视频| 亚洲小说区图片区| 国产精华一区| heyzo中文字幕在线| 欧美岛国在线观看| 欧美日韩在线国产| 国产精品综合网| 国产女人18毛片| 五月亚洲婷婷| 九九九久久久久久| 成人毛片在线免费观看| 一区二区三区免费| www.男人天堂| 欧美亚洲专区| 日本欧美色综合网站免费| 精品日韩视频| 日韩色av导航| 五月天久久狠狠| 国产91精品露脸国语对白| 成人羞羞视频免费| 超碰在线资源| 日韩美女av在线| jizz国产在线观看| 中文字幕不卡在线观看| 国产91色在线观看| 久久久9色精品国产一区二区三区| 成人h视频在线| 亚洲性图自拍| 日韩激情视频在线播放| 中文字幕日本视频| 亚洲欧洲无码一区二区三区| 18深夜在线观看免费视频| 在线欧美三区| 色一情一乱一伦一区二区三区丨 | 群体交乱之放荡娇妻一区二区| 96精品视频在线| 国产精品99999| 884aa四虎影成人精品一区| 国产一级免费av| 国产色产综合产在线视频 | 国产美女在线精品| 国产妇女馒头高清泬20p多| 精品国产91| 亚洲综合国产精品| 成人一区福利| 久久综合九色九九| 日本在线视频1区| 欧美精品 国产精品| 99视频在线看| 国产精品麻豆99久久久久久| www.四虎在线| 麻豆精品在线播放| 日韩欧美国产综合在线| 日韩欧美二区| 久久99精品久久久久久久久久 | 欧美日中文字幕| 亚洲影视九九影院在线观看| 亚洲涩涩在线| 久久福利网址导航| 秋霞av在线| 日韩一卡二卡三卡| 中文字幕在线观看视频免费| 亚洲一区在线观看视频| 亚洲 欧美 国产 另类| 91网上在线视频| 无套白嫩进入乌克兰美女| 视频一区二区三区入口| 无码av天堂一区二区三区| 忘忧草精品久久久久久久高清| 欧美精品在线一区| 成人动漫视频| 成人午夜两性视频| 欧美影视资讯| 2019中文字幕免费视频| 欧美videosex性极品hd| 日韩中文字幕视频| 成人免费视频| 亚洲欧美三级在线| 日韩一区二区三区不卡| 日韩一区二区麻豆国产| 一级特黄aaaaaa大片| 色88888久久久久久影院按摩| 国产福利拍拍拍| 亚洲精品欧美专区| 登山的目的在线| 国产欧美在线观看一区| 日韩网站在线播放| 成人h精品动漫一区二区三区| 中文字幕人妻无码系列第三区| 麻豆国产精品一区二区三区| 日本成人中文字幕在线| 欧美亚洲视频| 国产精品欧美激情在线观看| 国产模特精品视频久久久久| 国产69精品久久久久久久| 欧美日韩理论| 国产制服91一区二区三区制服| 91精品国产福利在线观看麻豆| 亚洲蜜桃在线| 经典一区二区| 日本视频一区二区不卡| 精品日韩一区| 色一情一乱一伦一区二区三欧美| av资源久久| 亚洲va久久久噜噜噜久久狠狠 | 亚洲国产成人不卡| 日韩国产一区二区三区| 亚洲精品日韩精品| 久久裸体网站| 男人的天堂成人| 亚洲成av人电影| 精品视频在线观看一区二区| 一区在线播放| 欧美色图另类小说| 奇米影视一区二区三区小说| av中文字幕网址| 国产一区二区剧情av在线| 亚洲制服在线观看| 不卡在线视频中文字幕| 精品人妻一区二区三区日产乱码卜| 91社区在线播放| 中文字幕第4页| 国产精品理伦片| 黄色一级片中国| 五月婷婷欧美视频| 精品黑人一区二区三区| 欧美日韩日日摸| 国产熟女一区二区丰满| 亚洲成人aaa| 欧美日韩在线精品一区二区三区激情综| 国产亚洲精品美女| 伦xxxx在线| 久久久久久久久久久亚洲| 欧美片第一页| 亚洲自拍另类欧美丝袜| 你懂的在线观看一区二区| 欧美一区二区三区四区五区六区| 97久久视频| 日韩 欧美 视频| 日韩电影在线一区| 久久久福利影院| 91在线精品一区二区三区| 精品一区二区三区蜜桃在线| 亚洲日本护士毛茸茸| 日本在线视频免费观看| 欧美在线观看禁18| 丰满人妻一区二区三区四区53| 亚洲香蕉成人av网站在线观看| 午夜av在线播放| 国产97在线播放| 日本精品视频| 日本一区二区在线视频| 欧美日韩精选| 午夜在线观看av| 成人免费观看av| 国精产品一区一区| 亚洲va国产天堂va久久en| 91成人国产综合久久精品| 日韩大片免费观看视频播放| 麻豆传媒视频在线| 日韩av电影中文字幕| 91精品国产自产精品男人的天堂| 日韩欧美视频一区二区| 99国产精品久久久久久久成人热| 国产成年人视频网站| 久久亚洲春色中文字幕久久久| 18岁成人毛片| 欧美在线观看视频一区二区| 偷拍精品一区二区三区| 欧美日本中文字幕| 久久久加勒比| 欧美亚州在线观看| 妖精视频成人观看www| 下面一进一出好爽视频| 国产精品视频麻豆| 国产一级免费视频| 亚洲国产成人精品电影| 色yeye免费人成网站在线观看| 国产欧美一区二区三区久久人妖| 午夜欧洲一区| 老太脱裤让老头玩ⅹxxxx| 国产成人精品一区二区三区四区 | 伊人国产精品视频| 国产日产欧产精品推荐色| 国产精品午夜影院| 亚洲第一av网| 性欧美猛交videos| 91免费在线视频| 日韩在线二区| 杨幂毛片午夜性生毛片 | 亚洲一级毛片| а 天堂 在线| 国产精品夫妻自拍| 真实新婚偷拍xxxxx| 亚洲视频专区在线| 中国色在线日|韩| 国产在线精品一区| 在线观看一区| 蜜臀视频在线观看| 亚洲一区二三区| 亚洲美女福利视频| 久久人人爽人人| 菁菁伊人国产精品| 少妇av一区二区三区无码| 99久久久久免费精品国产| 日本熟妇毛耸耸xxxxxx| 亚洲电影免费观看高清完整版在线| 国精一区二区三区| 精品国产_亚洲人成在线| 亚洲在线日韩| 97人妻精品一区二区免费| 色一区在线观看| av在线免费播放网站| 国产欧美日韩中文字幕在线| 91精品国产视频| 久久精品无码一区二区三区毛片| 亚洲精品你懂的| 国产精品久久免费| 欧美人与性动交a欧美精品| 97视频一区| 97av视频在线观看| 国产视频在线观看一区二区三区 | 亚洲欧美另类久久久精品| 国产黄a三级三级三级| 久久久久久久999| 丝袜美腿综合| 午夜在线观看av| 亚洲免费在线电影| 污视频在线免费观看| 国产精品video| 亚洲精品电影| 亚洲av无码一区二区三区观看| 色噜噜狠狠成人网p站| 女女色综合影院| 俄罗斯精品一区二区三区| 麻豆精品网站| 日韩在线不卡av| 精品区一区二区| 欧美特黄aaaaaaaa大片| 在线一区亚洲| 99久久伊人久久99| 国产乡下妇女三片| 久久久久久97|