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

記一次“雪花算法”造成的生產(chǎn)事故的排查記錄

開發(fā) 前端
本篇通過一次偶發(fā)的生產(chǎn)事故,引出了雪花算法的原理、雪花算法的不足、對應(yīng)的開源解決方案。

你好,我是悟空。

本文主要內(nèi)容如下:

圖片

前言

最近生產(chǎn)環(huán)境遇到一個問題:

現(xiàn)象:創(chuàng)建工單、訂單等地方,全都創(chuàng)建數(shù)據(jù)失敗。

初步排查:報錯信息為duplicate key,意思是保存數(shù)據(jù)的時候,報主鍵 id 重復(fù),而這些 id 都是由雪花算法生成的,按道理來說,雪花算法生成的 ID 是唯一 ID,不應(yīng)該出現(xiàn)重復(fù)的 ID。

大家可以先猜猜是什么原因。

有的同學(xué)可能對雪花算法不熟悉,這里做個簡單的說明。(熟悉的同學(xué)可以跳到第二個段落)

一、雪花算法

snowflake(雪花算法):Twitter 開源的分布式 id 生成算法,64 位的 long 型的 id,分為 4 部分:

圖片

snowflake 算法

  • 1 bit:不用,統(tǒng)一為 0
  • 41 bits:毫秒時間戳,可以表示 69 年的時間。
  • 10 bits:5 bits 代表機房 id,5 個 bits 代表機器 id。最多代表 32 個機房,每個機房最多代表 32 臺機器。
  • 12 bits:同一毫秒內(nèi)的 id,最多 4096 個不同 id,自增模式

優(yōu)點:

  • 毫秒數(shù)在高位,自增序列在低位,整個ID都是趨勢遞增的。
  • 不依賴數(shù)據(jù)庫等第三方系統(tǒng),以服務(wù)的方式部署,穩(wěn)定性更高,生成ID的性能也是非常高的。
  • 可以根據(jù)自身業(yè)務(wù)特性分配bit位,非常靈活。

缺點:

  • 強依賴機器時鐘,如果機器上時鐘回撥(可以搜索2017 年閏秒 7:59:60找到相關(guān)問題),會導(dǎo)致發(fā)號重復(fù)或者服務(wù)會處于不可用狀態(tài)。

閏秒就是通過給“世界標(biāo)準(zhǔn)時間”加(或減)1秒,讓它更接近“太陽時”。例如,兩者相差超過0.9秒時,就在23點59分59秒與00點00分00秒之間,插入一個原本不存在的“23點59分60秒”,來將時間調(diào)慢一秒鐘。

看了上面的關(guān)于雪花算法的簡短介紹,想必大家能猜出個一二了。

雪花算法和時間是強關(guān)聯(lián)的,其中有 41 位是當(dāng)前時間的時間戳,那么會不會和時間有關(guān)?

二、排查

2.1 雪花算法有什么問題?

既然是雪花算法的問題,那我們就來看下雪花算法出了什么問題:

(1)What:雪花算法生成了重復(fù)的 ID,這些 ID 是什么樣的?

(2)Why:雪花算法為什么生成了重復(fù)的 key

第一個問題,我們可以通過報錯信息發(fā)現(xiàn),這個重復(fù)的 ID 是 -1,這個就很奇怪了。一般雪花算法生成的唯一 ID 如下所示,我分別用二進制和十進制來表示:

十進制表示:2097167233578045440

二進制表示:0001 1101 0001 1010 1010 0010 0111 1100 1101 1000 0000 0010 0001 0000 0000 0000

找到項目中使用雪花算法的工具類,生成 ID 的時候有個判斷邏輯:

當(dāng)當(dāng)前時間?小于上次的生成時間?就會返回 -1,所以問題就出在這個邏輯上面。(有的雪花算法是直接拋異常)

if (timestamp < this.lastTimestamp) {
return -1;
}

圖片

由于每次 timestamp? 都是小于 lastTimeStamp,所以每次都返回了 -1,這也解釋了為什么生成了重復(fù)的 key。

2.2 時鐘回撥或跳躍

那么問題就聚焦?在為什么當(dāng)前時間?還會小于上次的生成時間。

下面有種場景可能發(fā)生這種情況:

首先假定當(dāng)前的北京時間是 9:00:00。另外上次生成 ID 的時候,服務(wù)器獲取的時間 lastTimestamp=10:00:00,而現(xiàn)在服務(wù)器獲取的當(dāng)前時間 timestamp=09:00:00,這就相當(dāng)于服務(wù)器之前是獲取了一個未來時間,現(xiàn)在突然跳躍到當(dāng)前時間。

而這種場景我們稱之為時鐘回撥或時鐘跳躍。

時鐘回撥:服務(wù)器時鐘可能會因為各種原因發(fā)生不準(zhǔn),而網(wǎng)絡(luò)中會提供 NTP 服務(wù)來做時間校準(zhǔn),因此在做校準(zhǔn)的時候,服務(wù)器時鐘就會發(fā)生時鐘的跳躍或者回撥問題。

2.3 時鐘同步

那么服務(wù)器為什么會發(fā)生時鐘回撥或跳躍呢?

我們猜測是不是服務(wù)器上的時鐘不同步后,又自動進行同步了,前后時間不一致。

首先我們的每臺服務(wù)器上都安裝了 ntpdate? 軟件,作為 NTP 客戶端,會每隔 10 分鐘?向 NTP 時間服務(wù)器同步一次時間。

如下圖所示,服務(wù)器 1 和 服務(wù)器 2 部署了應(yīng)用服務(wù),每隔 10 分鐘向時間服務(wù)器?同步一次時間,來保證服務(wù)器 1 和服務(wù)器 2 的時間和時間服務(wù)器的時間一致。

圖片

每隔 10 分鐘同步的設(shè)置:

*/10 * * * * /usr/sbin/ntpdate <ip>

另外時間服務(wù)器會向 NTP Pool同步時間,NTP Pool 正在為世界各地成百上千萬的系統(tǒng)提供服務(wù)。它是絕大多數(shù)主流Linux發(fā)行版和許多網(wǎng)絡(luò)設(shè)備的默認“時間服務(wù)器”。(參考ntppool.org)

那問題就是 NTP 同步出了問題??

2.4 時鐘不同步

我們到服務(wù)器上查看了下時間,確實和時鐘服務(wù)器不同步,早了幾分鐘。

當(dāng)我們執(zhí)行 NTP 同步的命令后,時鐘又同步了,也就是說時間回撥了。同步的命令如下:

ntpdate  <時鐘服務(wù)器 IP>

在產(chǎn)生事故之前,我們重啟過服務(wù)器 1。我們推測服務(wù)器重啟后,服務(wù)器因網(wǎng)絡(luò)問題沒有正常同步。而在下一次定時同步操作到來之前的這個時間段,我們的后端服務(wù)已經(jīng)出現(xiàn)了因 ID 重復(fù)導(dǎo)致的大量異常問題。

這個 NTP 時鐘回撥的偶發(fā)現(xiàn)象并不常見,但時鐘回撥確實會帶了很多問題,比如潤秒 問題也會帶來 1s 時間的回撥。

為了預(yù)防這種情況的發(fā)生,網(wǎng)上也有一些開源解決方案。

三、解決方案

(1)方式一:使用美團 Leaf方案,基于雪花算法。

(2)方式二:使用百度 UidGenerator,基于雪花算法。

(3)方式三:用 Redis 生成自增的分布式 ID。弊端是 ID 容易被猜到,有安全風(fēng)險。

3.1 美團的 Leaf 方案

美團的開源項目 Leaf? 的方案:采用依賴 ZooKeeper 的數(shù)據(jù)存儲。如果時鐘回撥的時間超過最大容忍的毫秒數(shù)閾值,則程序報錯;如果在可容忍的范圍內(nèi),Leaf 會等待時鐘同步到最后一次主鍵生成的時間后再繼續(xù)工作。

重點就是需要等待時鐘同步!

圖片

3.2 百度 UidGenerator 方案

百度UidGenerator方案不在每次獲取 ID 時都實時計算分布式 ID,而是利用 RingBuffer 數(shù)據(jù)結(jié)構(gòu),通過緩存的方式預(yù)生成一批唯一 ID 列表,然后通過 incrementAndGet() 方法獲取下一次的時間,從而脫離了對服務(wù)器時間的依賴,也就不會有時鐘回撥的問題。

重點就是預(yù)生成一批 ID!

Github地址:

https://github.com/baidu/uid-generator

四、總結(jié)

本篇通過一次偶發(fā)的生產(chǎn)事故,引出了雪花算法的原理、雪花算法的不足、對應(yīng)的開源解決方案。

雪花算法因強依賴服務(wù)器的時鐘,如果時鐘產(chǎn)生了回撥,就會造成很多問題。

我們的系統(tǒng)雖然做了 NTP 時鐘同步,但也不是 100% 可靠,而且潤秒這種場景也是出現(xiàn)過很多次。鑒于此,美團和百度也有對應(yīng)的解決方案。

最后,我們的生產(chǎn)環(huán)境也是第一次遇到因 NTP 導(dǎo)致的時鐘回撥,而且系統(tǒng)中用到雪花算法的地方并不多,所以目前并沒有采取以上的替換方案。

雪花算法的代碼已經(jīng)上傳到 Gitlab:

https://github.com/Jackson0714/PassJava-Platform/blob/master/passjava-common/src/main/java/com/jackson0714/passjava/common/utils/SnowflakeUtilV2.java

參考資料:

https://time.geekbang.org/dailylesson/detail/100075739

https://blog.csdn.net/liangcsdn111/article/details/126103041

https://www.jianshu.com/p/291110ca60fc

責(zé)任編輯:武曉燕 來源: 悟空聊架構(gòu)
相關(guān)推薦

2017-11-09 09:06:29

流量暴增優(yōu)化

2021-04-13 08:54:28

dubbo線程池事故排查

2020-08-24 07:34:39

網(wǎng)絡(luò)超時請求

2021-03-05 22:41:55

CDH集群CDH集群

2019-03-15 16:20:45

MySQL死鎖排查命令

2021-05-13 08:51:20

GC問題排查

2020-09-25 07:57:42

生產(chǎn)事故系統(tǒng)

2023-01-04 18:32:31

線上服務(wù)代碼

2023-04-06 07:53:56

Redis連接問題K8s

2021-11-23 21:21:07

線上排查服務(wù)

2017-12-19 14:00:16

數(shù)據(jù)庫MySQL死鎖排查

2023-04-13 12:00:00

MySQLSQL線程

2022-10-10 09:10:07

命令磁盤排查

2022-12-07 16:00:00

Maven無法使用排查記錄

2021-03-29 12:35:04

Kubernetes環(huán)境TCP

2019-09-10 10:31:10

JVM排查解決

2019-01-21 11:17:13

CPU優(yōu)化定位

2022-10-25 18:00:00

Redis事務(wù)生產(chǎn)事故

2025-03-11 08:48:35

JVMOOM事故

2022-06-01 06:17:42

微服務(wù)Kafka
點贊
收藏

51CTO技術(shù)棧公眾號

精品毛片网大全| 国产日韩一区二区三区在线播放| 欧美午夜精品久久久久久久| 日韩国产在线一区| 99国产精品久久久久久久成人| 国内久久精品| 国产午夜精品全部视频播放| 欧洲在线免费视频| 6699嫩草久久久精品影院| 久久这里都是精品| 91欧美精品午夜性色福利在线 | 国产露脸无套对白在线播放| 激情成人综合| 在线视频精品一| 国产性猛交96| 欧美男男gaygay1069| 亚洲国产成人tv| 正在播放精油久久| 特黄aaaaaaaaa真人毛片| 久久精品免费看| 69影院欧美专区视频| 美国一级片在线观看| 日本国产精品| 日韩欧美国产精品一区| 亚洲黄色小视频在线观看| 18加网站在线| 中文字幕一区二区视频| 欧美精品一区三区在线观看| 色欲av伊人久久大香线蕉影院| 精品一区二区在线观看| 国产精品18久久久久久麻辣| 日韩伦人妻无码| 中文字幕一区二区av | 九七电影韩国女主播在线观看| 91视频国产资源| 99久久免费国| 国产免费黄色录像| 麻豆精品视频在线观看| 国产xxx69麻豆国语对白| 国产精品免费av一区二区| 亚洲最大av| www亚洲欧美| 国产精品久久久免费看| 日韩国产在线| 在线看日韩av| 成人黄色免费网址| 国产精品嫩模av在线| 日韩国产精品一区| 亚洲精品中文字幕在线播放| 久久a爱视频| 亚洲精品国精品久久99热一| 久久久无码人妻精品无码| 精品国产伦一区二区三区观看说明| 欧美午夜影院一区| 91日韩视频在线观看| 高清不卡av| 色婷婷av一区二区三区大白胸| 国产不卡一区二区视频| 黄色美女视频在线观看| 亚洲国产日韩a在线播放性色| 国产91在线亚洲| 色呦呦在线免费观看| 一区二区三区.www| 99在线精品免费视频| 超碰激情在线| 亚洲成a天堂v人片| 欧美,日韩,国产在线| 在线能看的av网址| 91久久精品一区二区二区| 亚洲欧美国产日韩综合| 日本久久二区| 欧美大片一区二区| 波多野结衣影院| 亚欧洲精品视频在线观看| 亚洲天堂成人在线| 国产成人在线网址| 欧美暴力喷水在线| 欧美激情欧美激情在线五月| 欧美bbbbbbbbbbbb精品| 久久国产欧美| 91亚洲国产成人精品性色| 国产成人精品a视频| 成人高清在线视频| 青青草成人网| 麻豆视频在线观看免费网站| 亚洲欧洲精品天堂一级 | 一本色道久久综合| 国产成人精品在线| jlzzjlzz亚洲女人18| 99久久婷婷国产综合精品| 午夜精品区一区二区三| 怡红院红怡院欧美aⅴ怡春院| 午夜精品久久久久久不卡8050| 天天摸天天碰天天添| 台湾天天综合人成在线| 亚洲二区中文字幕| av网在线播放| 午夜日本精品| 国产成人在线一区二区| 国产av精国产传媒| 久久色.com| 国风产精品一区二区| 亚洲精品永久免费视频| 91精品国产综合久久久久久久 | 卡通动漫国产精品| 中文字幕视频在线免费欧美日韩综合在线看 | 久久中文久久字幕| 国产成人一级片| 国产精品综合av一区二区国产馆| 久久久综合亚洲91久久98| 国产激情视频在线观看| 一本大道av伊人久久综合| 色婷婷一区二区三区在线观看| 一区二区三区视频免费观看| 色中色综合影院手机版在线观看| 精品国产www| 91在线精品秘密一区二区| 精品国产一区二区三区在线| 51一区二区三区| 国产丝袜视频一区| 久久综合久久鬼| 久久精品国产一区二区三区免费看 | 国产精品国产三级国产专播品爱网| 国产av天堂无码一区二区三区| 欧美在线在线| 久久精品在线视频| 中文字幕日产av| 国产亚洲欧美色| 黄色免费视频大全| 国产精品中文字幕制服诱惑| 欧美成人免费va影院高清| 中文字字幕在线观看| 国产视频一区二区在线观看| 免费成人午夜视频| 成人动态视频| 久久久久久成人精品| av一级黄色片| 亚洲另类一区二区| 91小视频在线播放| 久久综合成人| 成人网在线免费观看| 国产福利片在线| 在线看国产一区| 色一情一交一乱一区二区三区 | 欧美在线一区二区视频| 五月婷婷六月丁香综合| 亚洲成人av电影| 国产精品无码在线| 亚洲精品免费观看| 精品免费二区三区三区高中清不卡| www中文字幕在线观看| 精品国产乱码久久久久久浪潮 | 欧美成人午夜精品免费| 国产亚洲激情| 日产国产精品精品a∨| 色吧亚洲日本| 中文字幕国内精品| 亚洲一区二区三区高清视频| 中文字幕日韩精品一区| www.偷拍.com| 99热在线精品观看| 欧美日韩一区二| 国产精品亲子伦av一区二区三区| 在线观看欧美日韩| 国产剧情久久久| 一区二区三区四区视频精品免费| 日本天堂在线播放| 日韩午夜免费| 亚洲mv在线看| 日韩中文字幕无砖| 91黄色8090| yiren22综合网成人| 3d动漫精品啪啪一区二区竹菊| 免费麻豆国产一区二区三区四区| 不卡欧美aaaaa| 国产无套粉嫩白浆内谢的出处| 999国产精品| 国产乱码精品一区二区三区不卡| 自拍视频在线看| 日韩中文字幕国产| 韩国av在线免费观看| 欧美日韩色婷婷| 男人晚上看的视频| 99久久久久免费精品国产| 日本爱爱免费视频| 在线精品小视频| 蜜桃传媒视频第一区入口在线看| 日韩毛片免费看| 国内外成人免费激情在线视频网站 | 日韩视频免费在线| 天天干,天天操,天天射| 欧美三日本三级三级在线播放| 免费中文字幕在线| 26uuu国产电影一区二区| 男人添女人下面免费视频| 黄色国产精品| 一区二区三区在线视频看| 久久夜色精品国产噜噜av小说| 国产精品网站大全| √天堂8资源中文在线| 最近中文字幕日韩精品 | 九一免费在线观看| 国产精品手机在线播放| 成人18视频| 欧美综合影院| 日韩av成人在线观看| 在线看三级电影| 中文精品99久久国产香蕉| 蜜臀av在线观看| 91.com视频| 欧美视频xxxx| 精品欧美一区二区三区| 午夜少妇久久久久久久久| 国产日韩欧美不卡| 欧美大片免费播放器| 国产高清精品在线| 9久久婷婷国产综合精品性色| 亚洲高清不卡| 亚洲爆乳无码精品aaa片蜜桃| 欧美一区二区麻豆红桃视频| 久久99国产精品99久久| 一区二区三区高清在线观看| 成人免费网站在线| av成人在线看| 国产脚交av在线一区二区| 日本黄色免费在线| 欧美第一黄网免费网站| 国产写真视频在线观看| 色阁综合伊人av| freemovies性欧美| 亚洲天堂男人的天堂| 日本在线一二三| 亚洲精品久久久久久久久| 午夜精品久久久久久久99| 欧美一区二区三区四区五区| 一个人看的www日本高清视频| 91精品福利在线| chinese国产精品| 欧美性猛交xxxxx水多| 国产成人一级片| 色综合咪咪久久| 亚洲自拍一区在线观看| 欧美日韩一区二区在线播放| 制服.丝袜.亚洲.中文.综合懂色| 亚洲国产精品一区二区久久恐怖片| 唐朝av高清盛宴| 一区二区久久久| 国产在线观看成人| 亚洲成人av一区二区三区| 日韩三级av在线| 岛国av一区二区在线在线观看| 久久狠狠高潮亚洲精品| 精品久久久久久中文字幕大豆网| 日韩精品1区2区| 色偷偷成人一区二区三区91| 91黑人精品一区二区三区| 在线观看日产精品| 在线观看中文字幕码| 欧美四级电影网| 国产精品热久久| 欧美顶级少妇做爰| 亚洲爱爱综合网| 亚洲国产精品中文| 色视频精品视频在线观看| 亚洲免费视频观看| 亚洲s色大片| 欧美精品情趣视频| 超碰在线公开| 国产精品福利在线| 国产欧美日韩电影| 国产精品二区在线| 要久久爱电视剧全集完整观看| 日本高清不卡三区| 91精品观看| 亚洲 自拍 另类小说综合图区| 久久黄色网页| 精品亚洲视频在线| www.欧美色图| 日本成人免费在线观看| 亚洲美腿欧美偷拍| 日本三级一区二区| 欧美三级电影在线看| www.欧美国产| 亚洲人成在线观看网站高清| 黄网站视频在线观看| 68精品国产免费久久久久久婷婷| 国产精品蜜月aⅴ在线| 国产精成人品localhost| 亚洲人成精品久久久| 天天做天天爱天天高潮| 国产一级久久| 久久人人爽人人片| 久久久久久99精品| 国产日韩欧美在线观看视频| 日韩欧美一区视频| 国产成人av免费看| 亚洲性猛交xxxxwww| 天堂亚洲精品| 国产精品免费看久久久香蕉| 国产成人高清精品免费5388| 亚洲国产精品久久久久久女王| 国产精品va| 奇米影视四色在线| 99久久久国产精品| 男人操女人的视频网站| 91福利社在线观看| 色欲av永久无码精品无码蜜桃| 久久精品成人欧美大片| 欧美日韩免费看片| 成人欧美一区二区| 97精品视频| 国产一区二区视频免费在线观看| 国产成人欧美日韩在线电影| 91无套直看片红桃在线观看| 岛国av午夜精品| 日本人妻丰满熟妇久久久久久| 久久在精品线影院精品国产| а√天堂资源国产精品| 蜜桃导航-精品导航| 亚洲夜间福利| 中文字幕久久久久久久| 亚洲天堂成人在线观看| 中文字幕av久久爽| 亚洲性日韩精品一区二区| 男女羞羞在线观看| 国产精品伊人日日| 国产一区美女| 一起操在线视频| 国产精品久久久久久久久晋中 | 国产亚洲欧洲高清| jk漫画禁漫成人入口| 黄色国产精品一区二区三区| 欧美亚韩一区| 老司机av网站| 亚洲精品伦理在线| 99久久精品免费看国产交换| 日韩在线观看免费全| 国产亚洲欧美日韩精品一区二区三区| 欧美一区二区福利| 日韩电影免费在线| 51妺嘿嘿午夜福利| 欧美专区在线观看一区| av在线1区2区| 国产精品普通话| 91麻豆精品国产91久久久平台| jizz18女人| 亚洲视频在线一区观看| 国产露脸91国语对白| 欧美精品在线观看| 中文久久电影小说| 久久久亚洲精品无码| 99精品欧美一区二区三区综合在线| 日韩成人免费在线观看| 亚洲国产一区二区三区在线观看| 筱崎爱全乳无删减在线观看| 欧美视频1区| 免费看欧美女人艹b| 中文字幕91视频| 日韩欧美专区在线| 超黄网站在线观看| 精品日本一区二区| 天堂在线亚洲视频| 国产99在线 | 亚洲| 欧美疯狂做受xxxx富婆| 四虎亚洲精品| 久久久久久国产精品免费免费| 老牛影视一区二区三区| 亚洲一级理论片| 欧美一区二区三区爱爱| 超碰资源在线| 视频在线一区二区三区| 国内精品免费在线观看| 国产无码精品久久久| 亚洲欧美精品suv| 亚洲久草在线| 亚洲熟妇无码另类久久久| 久久久久久久久久久99999| 在线观看毛片视频| 欧美国产激情18| 国产videos久久| 伊人五月天婷婷| 精品日韩中文字幕| 午夜不卡视频| 九九九九精品| 久久精品999| 五月婷婷中文字幕| 久久夜色精品国产欧美乱| 精品三级av| 午夜啪啪小视频| 欧美午夜精品在线| 99久久精品免费观看国产| 麻豆av一区二区三区久久| 久久精品国产精品青草| www.国产成人| 久久亚洲成人精品| 欧美重口另类| 潘金莲一级淫片aaaaaaa| 91久久精品网| 91超碰在线| 国产成人精品免费看在线播放 |