精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

色哟哟在线观看| 日本一区二区三区免费视频| 日韩五码电影| 亚洲激情图片小说视频| 国产精选在线观看91| 免费av网站在线| 国产二区精品| 亚洲精品白浆高清久久久久久| 麻豆tv在线播放| bbbbbbbbbbb在线视频| 国产成人在线视频免费播放| 国内免费久久久久久久久久久| 91视频在线网站| 国产激情欧美| 五月婷婷激情综合| 亚洲人一区二区| 午夜视频福利在线观看| 久久99精品久久久久久国产越南| 992tv成人免费影院| 阿v天堂2014| 狼人精品一区二区三区在线| 欧美日韩综合色| 国产精品无码av在线播放| av午夜在线| 波多野结衣视频一区| 国产欧美一区二区三区在线看 | 亚洲成人免费视频| 一区二区在线观看网站| 日韩欧美电影在线观看| 国产不卡在线一区| 成人一区二区电影| 免费看av在线| 久久亚洲综合| 欧美又大又硬又粗bbbbb| 久久午夜无码鲁丝片午夜精品| 欧美一区二区三| 亚洲免费电影一区| 亚洲av综合色区无码另类小说| 国产精品伊人| 欧美日韩中文一区| 不卡av免费在线| 卡通欧美亚洲| 精品毛片网大全| 久久综合九色综合88i| 国精一区二区三区| 亚洲一级二级三级在线免费观看| 中文字幕黄色大片| 伊人免费在线| 国产精品国产自产拍在线| 日本在线播放一区| 天堂v视频永久在线播放| av成人免费在线| 精品视频第一区| 亚洲欧美日韩动漫| 久久伊人蜜桃av一区二区| 久久久久久久久久久久久久一区| 日本韩国免费观看| 97国产精品videossex| 精品久久久久久一区二区里番| 狠狠躁夜夜躁av无码中文幕| 丁香另类激情小说| 国产一区二区三区奇米久涩| 天天爱天天干天天操| av综合在线播放| 久久国产精品 国产精品| 日韩有码电影| 国产精品视频九色porn| 亚洲一区bb| 在线免费观看的av| 亚欧色一区w666天堂| 久久美女福利视频| av成人在线观看| 91麻豆精品91久久久久同性| 91人妻一区二区三区| 丁香五月缴情综合网| 亚洲国产精品电影| 久久美女免费视频| 亚洲h色精品| 97国产在线视频| 久久艹免费视频| 免费观看久久久4p| 99影视tv| 狠狠狠综合7777久夜色撩人| 国产精品萝li| 国产成人永久免费视频| 婷婷电影在线观看| 欧美精品免费视频| 亚洲欧美一区二区三区不卡| 国产成人夜色高潮福利影视| 亚洲色图15p| 精品国产视频在线观看| 亚洲麻豆av| 国产精品一二三在线| 亚洲精品国产精| 国产亚洲短视频| 亚洲爆乳无码精品aaa片蜜桃| 超碰国产一区| 欧美一级欧美一级在线播放| 亚洲永久无码7777kkk| 色综合蜜月久久综合网| 91国内精品久久| 91麻豆国产视频| 久久午夜羞羞影院免费观看| av磁力番号网| 国产v综合v| 亚洲第一二三四五区| 亚洲av无一区二区三区| 亚洲作爱视频| 91九色在线观看| 国产片在线观看| 亚洲va国产天堂va久久en| 在线观看国产一级片| 亚洲人成伊人成综合图片| 欧美巨乳在线观看| 中文字幕人妻一区二区三区视频| 不卡一区二区在线| 51xx午夜影福利| 88xx成人网| 精品视频中文字幕| 黄色激情视频在线观看| 国产在线播精品第三| 欧美一二三区| 国产黄大片在线观看| 欧美一级日韩免费不卡| 国产农村妇女精品一区| 久久精品伊人| 久久久精品国产一区二区三区| caopeng在线| 欧美精品18+| 日本成人免费在线观看| 日韩和欧美一区二区三区| 国产视色精品亚洲一区二区| 影音先锋中文在线视频| 91精品在线一区二区| 婷婷综合在线视频| 人人精品人人爱| 日韩一区二区电影在线观看| 成人国产二区| 亚洲免费视频网站| 日韩免费不卡视频| 成人a免费在线看| 日本香蕉视频在线观看| 午夜日韩影院| 欧美黑人极品猛少妇色xxxxx| 国产女人高潮时对白| 亚洲你懂的在线视频| 日本在线播放一区二区| 久久精品国产www456c0m| 国产精品久久久久久久久男| 国产在线你懂得| 欧美性猛片aaaaaaa做受| av黄色在线免费观看| 日韩激情av在线| 亚洲国产欧美一区二区三区不卡| 美女色狠狠久久| 精品国内产的精品视频在线观看| 一级黄色大片免费| 国产精品女同一区二区三区| 亚洲成人福利在线| 天天综合网91| 国产成人精品自拍| 华人av在线| 国产香蕉一区二区三区在线视频 | 免费在线观看91| 韩国美女久久| 在线一区二区日韩| 亚洲天天综合网| 亚洲精品日韩专区silk| 久久久久久婷婷| 麻豆九一精品爱看视频在线观看免费| 日本成人三级| 大胆国模一区二区三区| 欧美激情欧美激情在线五月| 亚洲欧美日本在线观看| 欧美日韩久久一区| 久久中文字幕无码| 91偷拍与自偷拍精品| 手机在线看福利| 91精品推荐| 国产在线精品一区二区三区》 | 成人手机在线免费视频| 日日嗨av一区二区三区四区| 在线观看欧美亚洲| 国产欧美三级电影| 国产精品成熟老女人| av片在线观看永久免费| 国产丝袜一区视频在线观看 | 精精国产xxxx视频在线播放| 亚洲午夜久久久影院| 国产又大又黑又粗| 精品动漫一区二区三区| 日本人亚洲人jjzzjjz| 国产成+人+日韩+欧美+亚洲| 欧美精品第三页| 欧美.www| 日韩国产美国| 91精品尤物| 国产精品免费小视频| 超碰在线97国产| 日韩中文综合网| 深夜福利在线观看直播| 91精品国模一区二区三区| 国产一级片毛片| 夜夜精品浪潮av一区二区三区| 中文字幕人妻一区二区| 粉嫩嫩av羞羞动漫久久久| 欧美两根一起进3p做受视频| 黄色亚洲在线| 最新精品视频| 成人免费在线观看av| 精品不卡在线| 日韩精品一区二区三区中文| 国产精品欧美亚洲777777| 国产精品yjizz视频网| 久久深夜福利免费观看| 国产高清视频在线| 精品亚洲一区二区| 亚洲免费一级片| 91精品国产综合久久婷婷香蕉| 精品久久久久久久久久久久久久久久久久| 一二三四区精品视频| 极品魔鬼身材女神啪啪精品| 国产色产综合色产在线视频| 国产美女视频免费观看下载软件| 国产麻豆成人精品| 狠狠干狠狠操视频| 日韩精品91亚洲二区在线观看| 91视频 -- 69xx| 伊人久久大香线蕉av超碰演员| 400部精品国偷自产在线观看| 大色综合视频网站在线播放| 日韩欧美手机在线| 亚洲自拍都市欧美小说| 精品国产91亚洲一区二区三区www| 狂野欧美xxxx韩国少妇| 成人情趣片在线观看免费| 久久久人成影片一区二区三区在哪下载 | 欧美亚洲自拍偷拍| 无码人妻丰满熟妇精品| 欧美日韩国产色| 日韩女同强女同hd| 欧美日韩精品在线播放| 欧美三级午夜理伦| 精品久久香蕉国产线看观看亚洲 | 色噜噜狠狠狠综合欧洲色8| 精品国偷自产在线| а√天堂官网中文在线| 久久精品国产亚洲精品2020| 欧洲不卡av| 啊v视频在线一区二区三区| 1024国产在线| 欧美超级乱淫片喷水| 最新黄网在线观看| 久久久久久久国产| 国产粉嫩在线观看| 欧美一区二区大胆人体摄影专业网站| 色偷偷偷在线视频播放| 日韩免费在线播放| 亚洲www啪成人一区二区| 国产精品视频一区国模私拍| 成人在线视频观看| 91日韩在线视频| 综合中文字幕| 欧美另类视频在线| 成人影院在线| 中国老女人av| 尤物精品在线| 免费男同深夜夜行网站| 久久国产精品无码网站| 色男人天堂av| 99re这里只有精品首页| 91国模少妇一区二区三区| 国产精品视频一二| 久久久国产精品人人片| 狠狠久久五月精品中文字幕| 无码人妻精品一区二区50| 欧美久久久久久蜜桃| 亚洲精品人妻无码| 亚洲视屏在线播放| av在线免费观看网址| 91福利视频在线观看| av免费在线一区| 国产精品一区二区三区免费 | 精品亚洲一区二区三区在线观看| 裸体xxxx视频在线| 久久久99久久精品女同性| 黄网站在线观| 国产精品久久久久久久美男 | 欧美连裤袜在线视频| 91精品国产成人观看| 2018国产在线| 九九**精品视频免费播放| 在线精品视频播放| 国产精品久久久久毛片软件| 精品午夜福利视频| 精品1区2区3区| 天天色天天操天天射| 日韩中文字幕免费看| 欧美男男tv网站在线播放| 国产中文日韩欧美| 亚洲欧洲美洲国产香蕉| 99热都是精品| 久久视频一区| 熟妇高潮一区二区| 日韩一区在线看| 日韩一级在线视频| 欧美mv和日韩mv国产网站| 成年人视频在线看| 98精品国产自产在线观看| 国产一区二区三区视频在线| 欧美性bbwbbwbbwhd| 激情综合在线| 亚洲天堂网站在线| 国产免费成人在线视频| 国产精品免费av一区二区| 欧美一区二区三区在线电影 | 欧美国产亚洲精品久久久8v| 国产成+人+综合+亚洲欧美| 九色一区二区| 尤物精品在线| 香蕉视频免费网站| 亚洲人一二三区| 亚洲在线精品视频| 亚洲色图av在线| 最新中文字幕在线播放| 国产三区精品| 黑丝一区二区三区| 激情成人在线观看| 亚洲女同一区二区| 国产影视一区二区| 中文字幕自拍vr一区二区三区| 日韩av中字| 欧美男人的天堂| 免费一区视频| 久久精品国产亚洲AV熟女| 五月激情综合婷婷| 无码精品黑人一区二区三区| 久久久久久久久久久av| 亚洲精品高潮| 17c丨国产丨精品视频| 国产激情一区二区三区桃花岛亚洲| 国产一区在线观看免费| 欧美亚一区二区| 2021av在线| 日韩欧美一区中文| 黄色在线观看av| 亚洲综合一区在线| xxxx国产精品| 欧美日韩福利在线观看| 亚洲精品一区二区三区中文字幕 | 亚洲自拍偷拍精品| 亚洲妇女屁股眼交7| 少妇荡乳情欲办公室456视频| 午夜精品久久久99热福利| 精品三级在线观看视频| 欧美日韩精品在线一区二区| av电影在线观看不卡| av资源免费观看| 亚洲天堂av在线播放| 成人在线免费| 日本一二三区视频在线| 丁香婷婷深情五月亚洲| 欧美一区二区激情视频| 亚洲裸体xxxx| 99久久er| 男女裸体影院高潮| 成人h精品动漫一区二区三区| 日韩 欧美 综合| 国产一区二区日韩| 高清精品久久| 99在线精品免费视频| 国产清纯美女被跳蛋高潮一区二区久久w | 色综合久久天天| 99免在线观看免费视频高清| 91久久精品日日躁夜夜躁国产| 欧美女激情福利| 800av在线播放| 欧美色图在线观看| 五月花成人网| 开心色怡人综合网站| 老司机精品视频在线| 国产主播在线播放| 亚洲色图校园春色| 欧美影院精品| 日本熟妇人妻xxxxx| 亚洲人成小说网站色在线| 日韩性xxxx| 成人日韩在线电影| 国产日韩欧美三区| 日韩欧美123区| 亚洲老头同性xxxxx| 国产日韩一区二区三免费高清| 日本在线xxx| 亚洲欧洲成人精品av97| 午夜av免费观看| 亚洲一区二区三区sesese| 午夜在线a亚洲v天堂网2018| 东方av正在进入| 国产一区二区三区在线| 999久久精品|