【金猿技術(shù)展】UPS時序ID——分布式時序ID生成策略準(zhǔn)運(yùn)轉(zhuǎn)技術(shù)
原創(chuàng) 銀聯(lián)智惠 | 2021-12-23 21:14
【數(shù)據(jù)猿導(dǎo)讀】 本項目由銀聯(lián)智惠投遞并參與“數(shù)據(jù)猿年度金猿策劃活動——2021大數(shù)據(jù)產(chǎn)業(yè)創(chuàng)新技術(shù)突破榜榜單及獎項”評選。

由于傳統(tǒng)UUID序列號存在儲存信息少、性能低、高并發(fā)下存在序列號重復(fù)的問題,所以經(jīng)過技術(shù)探討,決定基于SnowFlake算法,在其基礎(chǔ)上進(jìn)行技術(shù)創(chuàng)新,融入了全系統(tǒng)業(yè)務(wù)鏈路需要的訂單日期數(shù)據(jù)及服務(wù)節(jié)點id,生成金融系統(tǒng)特色的tranceid;此ID具有以下優(yōu)點:
1. 毫秒數(shù)在高位,自增序列在低位,整體處于遞增趨勢;
2. 容量大,可以做到秒級百萬自增ID;
3. 根據(jù)自身業(yè)務(wù)擴(kuò)展,可以靈活分配bit位。
同時基于原本SnowFlake算法的時鐘回?fù)軐?dǎo)致服務(wù)發(fā)號重復(fù)或者服務(wù)不可用問題做了技術(shù)優(yōu)化,增加了數(shù)字段位,避免了服務(wù)器之間毫秒級誤差引起時間回?fù)軉栴}。
技術(shù)說明
在過往項目中,我司業(yè)務(wù)的唯一流水號用的是UUID,隨著業(yè)務(wù)擴(kuò)展,技術(shù)革新,該技術(shù)的短板越發(fā)明顯:字符串占用空間較大、索引效率低、生成ID隨機(jī)性、在高并發(fā)下重復(fù)幾率大等問題;
經(jīng)過技術(shù)小組討論選型,決定初步使用SnowFlake生成traceID。雪花算法是技術(shù)不斷革新的產(chǎn)物,它的出現(xiàn)是為了解決高并發(fā)環(huán)境下對于唯一ID生成的需求。
該算法生成的唯一ID主要分為5個部分組成:1位標(biāo)識部分(在java中由于long的最高位是符號位,正數(shù)是0,負(fù)數(shù)是1,一般生成的ID為正數(shù),所以為0)、41位時間戳部分(這個是毫秒級的時間,一般實現(xiàn)上不會存儲當(dāng)前的時間戳,而是時間戳的差值(當(dāng)前時間-固定的開始時間),這樣可以使產(chǎn)生的ID從更小值開始;41位的時間戳可以使用69年,(1L << 41) / (1000L 60 60 24 365) = 69年)
10位節(jié)點部分(前5位作為數(shù)據(jù)中心標(biāo)識,后5位作為機(jī)器標(biāo)識,可以部署1024個節(jié)點)、12位序列號部分(支持同一毫秒內(nèi)同一個節(jié)點可以生成4096個ID)。
它的特點有以下幾點:
1、能滿足高并發(fā)分布式系統(tǒng)環(huán)境下ID不重復(fù)
2、生成效率高
3、基于時間戳,可以保證基本有序遞增
4、不依賴于第三方的庫或者中間件
5、生成的id具有時序性和唯一性
但是在原生的技術(shù)當(dāng)中也存在一些問題,依賴機(jī)器時鐘,如果機(jī)器時鐘回?fù)?,會?dǎo)致重復(fù)ID生成。
對于該缺陷,我們在隨機(jī)數(shù)層面增加了數(shù)字段位,避免了服務(wù)器之間毫秒級誤差引起時間回?fù)?,同時我們在ID生成源碼中對當(dāng)前時間和上一次時間進(jìn)行了判斷,如果當(dāng)前時間小于上一次的時間那么肯定是發(fā)生了回?fù)埽?/span>
1、如果時間回?fù)軙r間較短,比如配置5ms以內(nèi),那么可以直接等待一定的時間,讓機(jī)器的時間追上來。
2、如果時間的回?fù)軙r間較長,我們不能接受這么長的阻塞等待,那么又有兩個策略:
直接拒絕,拋出異常,打日志,通知RD時鐘回滾。
利用擴(kuò)展位,不同業(yè)務(wù)場景位數(shù)可能用不到那么多,我們可以把擴(kuò)展位數(shù)利用起來,比如當(dāng)這個時間回?fù)鼙容^長的時候,我們不需要等待,直接在擴(kuò)展位加1,2位的擴(kuò)展位允許我們有3次大的時鐘回?fù)?,一般來說就夠了,如果其超過三次我們還是選擇拋出異常,打日志。
最后,我們在改ID中加入了全鏈路訂單秒級時間戳,做到了所有訂單日期的秒級業(yè)務(wù)跟蹤和狀態(tài)查詢。
開發(fā)團(tuán)隊
·帶隊負(fù)責(zé)人 寇凌博
負(fù)責(zé)公司的項目產(chǎn)品規(guī)劃、產(chǎn)品開發(fā)方向、項目研發(fā)管理及控制:
1、組織并制定相關(guān)技術(shù)體系的技術(shù)標(biāo)準(zhǔn)和技術(shù)規(guī)范;
2、負(fù)責(zé)組織公司開發(fā)項目的總體方案設(shè)計,指導(dǎo)并審核公司產(chǎn)品項目的總體技術(shù)方案;
3、協(xié)調(diào)研發(fā)科室與業(yè)務(wù)部之間的工作,包括任務(wù)復(fù)雜度、任務(wù)處理時間等方面的協(xié)調(diào);
4、對客戶提出的開發(fā)需求進(jìn)行可行性評估和風(fēng)險評估,并制定相關(guān)開發(fā)計劃;
5、對項目開發(fā)進(jìn)度進(jìn)行監(jiān)督,并對各項目進(jìn)行最后的質(zhì)量評估。
·團(tuán)隊其他重要成員:周浩、周楷建、連玉強(qiáng)、唐國鳳
相關(guān)評價
“就如同然界中并不存在兩片完全一樣的雪花的,每一片雪花都擁有自己漂亮獨特的形狀、獨一無二;該技術(shù)在同時在原始的算法上,結(jié)合特定的業(yè)務(wù)需求,加入新的策略,避其糟粕,形成特有的UP時序ID,為公司業(yè)務(wù)發(fā)展提供了強(qiáng)有力支柱。”
——某大數(shù)據(jù)公司總經(jīng)理
“在該項技術(shù)上線之后,極大的方便了技術(shù)人員排查生產(chǎn)異常訂單問題,真正做到了秒級點位、快速解決,同時對于運(yùn)營人員來說,在客戶數(shù)據(jù)授權(quán)提取、賬單明細(xì)查詢、報表下載等客戶需求方面做到了良好的技術(shù)支撐,大大的提高了客戶支持效率。”
——某大數(shù)據(jù)公司部門副總經(jīng)理
來源:數(shù)據(jù)猿
刷新相關(guān)文章
我要評論
活動推薦more >
- 【大會嘉賓】威馬汽車集團(tuán)戰(zhàn)2021-08-02
- 【大會嘉賓】聯(lián)通智慧足跡CM2021-08-02
- 2018 上海國際大數(shù)據(jù)產(chǎn)業(yè)高2018-12-03
- 2018上海國際計算機(jī)網(wǎng)絡(luò)及信2018-12-03
- 中國國際信息通信展覽會將于2018-09-26
- 第五屆FEA消費(fèi)金融國際峰會62018-06-21
不容錯過的資訊
-
1首次開源!一行代碼輕松搞定中英文語音識
-
2《為你喝彩》:快看!人工智能反詐專家如
-
3數(shù)據(jù)+AI技術(shù),賦能企業(yè)業(yè)務(wù)和管理流程
-
4浦江環(huán)境可持續(xù)發(fā)展論壇終版議程,近百家
-
5亞馬遜 re:Invent 全球大會:把云計算
-
6阿里云數(shù)據(jù)治理系列(一):治理項目啟動
-
7美創(chuàng)數(shù)創(chuàng)平臺 數(shù)字化轉(zhuǎn)型 美創(chuàng)科技
-
8【金猿人物展】MobTech袤博科技CEO蘭旭:
-
9Dataphin核心功能(五)資源治理:每年節(jié)
-
102021智能制造領(lǐng)域最具商業(yè)合作價值企業(yè)盤