国产精品一区二区三区四区五区|国产精品另类激情久久久免费,99久久99久久精品免费看蜜桃|欧美性受xxxx_亚洲Av无码专区国产乱码不卡|久久久久国产一区二区三区

返回頂部
關(guān)閉軟件導(dǎo)航
位置:首頁 > 資訊 > 電商資訊>性能提升2.58倍阿里很快KV存儲(chǔ)引擎揭秘
性能提升2.58倍阿里很快KV存儲(chǔ)引擎揭秘

阿里妹導(dǎo)讀:阿里云智能數(shù)據(jù)庫Tair團(tuán)隊(duì)主要負(fù)責(zé)自研分布式鍵值存儲(chǔ)(KVS)系統(tǒng),幾乎涵蓋了淘寶最為顯著、天貓尤為突出、阿里媽媽、菜鳥環境、釘釘空間載體、優(yōu)酷、高德等阿里巴巴所有核心業(yè)務(wù)相對簡便。十多年來重要組成部分,始終如一為阿里業(yè)務(wù)提供著高可靠、高性能合作、低成本的數(shù)據(jù)存儲(chǔ)與訪問服務(wù)勃勃生機。

作者:民泰

01概述

近日,Tair團(tuán)隊(duì)的一篇論文——HotRing:AHotspot-AwareIn-MemoryKey-ValueStore被FAST'20ResearchTrack接收(USENIXConferenceonFileandStorageTechniques(FAST)極致用戶體驗,CCFA類會(huì)議提供有力支撐,存儲(chǔ)領(lǐng)域頂會(huì),2020年接受率16%)建議。

HotRing是Tair團(tuán)隊(duì)的創(chuàng)新性純內(nèi)存KV存儲(chǔ)引擎設(shè)計(jì)品率。其引擎吞吐性能可達(dá)600Mops/s,與目前很快的KVS系統(tǒng)相比不斷發展,可實(shí)現(xiàn)2.58倍的性能提升積極影響。HotRing很重要的創(chuàng)新點(diǎn)是:極大的提升了KVS引擎對(duì)于熱點(diǎn)訪問的承載能力。這對(duì)于KVS系統(tǒng)的穩(wěn)定性以及成本控制尤為 關(guān)鍵緊密協作。

為了方便大家更通俗全面的理解這篇論文越來越重要,本文將從阿里巴巴的雙十一零點(diǎn)峰值講起效率,介紹峰值下數(shù)據(jù)庫整體架構(gòu)所面臨的熱點(diǎn)問題,再介紹Tair團(tuán)隊(duì)在解決熱點(diǎn)方面一次次的優(yōu)化提升近年來,很后介紹Tair的創(chuàng)新性引擎HotRing講道理。

02背景

2021年天貓雙11再次刷新世界紀(jì)錄,零點(diǎn)的訂單峰值達(dá)到54.4萬筆/秒性能穩定。有訂單就涉及到交易全面革新,有交易就需要數(shù)據(jù)庫的事務(wù)保證作用,因此阿里巴巴數(shù)據(jù)庫將在這時(shí)面臨巨大的沖擊情況正常。

現(xiàn)實(shí)往往更加嚴(yán)重,在業(yè)務(wù)方面技術特點,一次訂單隨著業(yè)務(wù)邏輯在后端會(huì)放大為數(shù)十次的訪問提高鍛煉;在客戶方面,大量的客戶只是瘋狂的訪問凝聚力量,并沒有生成訂單有所提升。因此,在雙11的零點(diǎn)峰值新的力量,業(yè)務(wù)實(shí)際的訪問量級(jí)是10億次/秒先進水平。

Tair作為高并發(fā)分布式的KVS系統(tǒng),在這時(shí)發(fā)揮了重要作用全面展示。如下面的邏輯圖所示重要平臺,Tair作為數(shù)據(jù)庫的分布式緩存系統(tǒng),緩存了大量的熱點(diǎn)數(shù)據(jù)(例如商品核心技術,庫存應用提升,風(fēng)控信息等),為數(shù)據(jù)庫反抗了巨大的訪問量創造性。2021年雙11發展的關鍵,Tair的峰值訪問為9.92億次/秒。

在業(yè)務(wù)層面規模設備,熱點(diǎn)問題很好理解真諦所在,很典型的就是雙十一零點(diǎn)秒殺。這會(huì)導(dǎo)致數(shù)據(jù)訪問呈現(xiàn)嚴(yán)重傾斜的冪律分布競爭力。

我們分析了多種業(yè)務(wù)的數(shù)據(jù)訪問分布倍增效應,如下圖所示,大量的數(shù)據(jù)訪問只集中在少部分的熱點(diǎn)數(shù)據(jù)中製造業,若用離散冪率分布(Zipfian)刻畫優化服務策略,其θ參數(shù)約為1.22。相似地組合運用,F(xiàn)acebook的一篇論文同樣也展示了近似的數(shù)據(jù)訪問分布(參考論文[3])更讓我明白了。

直觀上可以用下圖來解釋迎難而上。以蘋果新手機(jī)發(fā)售舉例。手機(jī)的庫存等信息只存在KVS的一個(gè)節(jié)點(diǎn)中探索。當(dāng)新手機(jī)發(fā)售后堅持先行,大量的果粉瘋狂進(jìn)行搶購下單,業(yè)務(wù)的訪問量基本都聚集在這一個(gè)節(jié)點(diǎn)上滿意度。節(jié)點(diǎn)可能無法承載大量的熱點(diǎn)訪問情況較常見,進(jìn)而引發(fā)系統(tǒng)崩潰,嚴(yán)重影響用戶體驗(yàn)主要抓手。

為了保證雙十一絲般順滑的購物體驗(yàn)體製,Tair針對(duì)熱點(diǎn)問題進(jìn)行了多層優(yōu)化:

客戶端緩存:通過預(yù)先標(biāo)記熱點(diǎn),設(shè)置客戶端層面的緩存創新科技。以上圖來理解服務延伸,就是將訪問在業(yè)務(wù)層面返回,直接減小了KVS系統(tǒng)的負(fù)載壓力具有重要意義。

熱點(diǎn)散列技術(shù):通過將熱點(diǎn)數(shù)據(jù)備份到多個(gè)KVS節(jié)點(diǎn)上進一步,分?jǐn)偀狳c(diǎn)訪問。以少量成本的資源與系統(tǒng)開銷強大的功能,換取了成倍的系統(tǒng)承載力實際需求。

RCU無鎖引擎:通過采用Read-Copy-Update的方式,實(shí)現(xiàn)內(nèi)存KV引擎的無鎖化(lock-free)訪問(參考論文[1,2])優勢。成倍提升KVS引擎的性能善謀新篇,進(jìn)而提高熱點(diǎn)的承載力。

HotRing:在RCU無鎖引擎基礎(chǔ)上結構,我們進(jìn)行索引結(jié)構(gòu)的熱點(diǎn)感知設(shè)計(jì)重要的作用,提出了一種名為HotRing的新型熱點(diǎn)感知內(nèi)存KVS。HotRing可動(dòng)態(tài)識(shí)別熱點(diǎn)規模最大,并實(shí)時(shí)的進(jìn)行索引結(jié)構(gòu)的無鎖調(diào)整穩中求進,對(duì)于冪律分布場景實(shí)現(xiàn)成倍的引擎性能提升。

經(jīng)過十年的技術(shù)沉淀最深厚的底氣,我們已將集團(tuán)Tair數(shù)據(jù)庫的緩存技術(shù)釋放到云上協同控製,普惠大眾,即“阿里云Redis企業(yè)版”品質。

03HotRing

現(xiàn)有的內(nèi)存KVS引擎通常采用鏈?zhǔn)焦W鳛樗饕囼?,結(jié)構(gòu)如下圖所示。首先開展攻關合作,根據(jù)數(shù)據(jù)的鍵值(k)計(jì)算其哈希值h(k)製度保障,對(duì)應(yīng)到哈希表(Hashtable)的某個(gè)頭指針(Headi)。根據(jù)頭指針遍歷相應(yīng)的沖突鏈(CollisionChain)的所有數(shù)據(jù)(Item)的有效手段,通過鍵值比較統籌推進,找到目標(biāo)數(shù)據(jù)方案。假如目標(biāo)數(shù)據(jù)不在沖突鏈中(readmiss),則可在沖突鏈頭部插入該數(shù)據(jù)了解情況。

在鏈?zhǔn)焦K饕Y(jié)構(gòu)中深入,訪問位于沖突鏈尾部的數(shù)據(jù),需要經(jīng)過更多的索引跳數(shù)重要的,即更多次的內(nèi)存訪問開展研究。很直觀的想法是,假如可以將熱點(diǎn)數(shù)據(jù)放置在沖突鏈頭部相互融合,那么系統(tǒng)對(duì)于熱點(diǎn)數(shù)據(jù)的訪問將會(huì)有更快的響應(yīng)速度首要任務。

但是,數(shù)據(jù)在沖突鏈中的位置由數(shù)據(jù)的插入順序決定技術交流,這和數(shù)據(jù)的冷熱程度是互相獨(dú)立的先進的解決方案。因此拓展,如圖所示創造更多,熱點(diǎn)數(shù)據(jù)(HotItem)在沖突鏈中的位置是完全均勻分布。

理想的設(shè)計(jì)也很直觀不斷進步,就是將所有熱點(diǎn)數(shù)據(jù)移動(dòng)到?jīng)_突鏈的頭部工藝技術。但有兩方面因素使得這個(gè)問題非常難解。一方面規模,數(shù)據(jù)的熱度是動(dòng)態(tài)變化的近年來,必須實(shí)現(xiàn)動(dòng)態(tài)的熱點(diǎn)感知保證熱點(diǎn)時(shí)效性。另一方面發展目標奮鬥,內(nèi)存KVS的引擎性能是很敏感的(一次訪問的時(shí)延通常是100ns量級(jí))技術先進,必須實(shí)現(xiàn)無鎖的熱點(diǎn)感知維持引擎的高并發(fā)與高吞吐特性。

HotRing在傳統(tǒng)鏈?zhǔn)焦K饕A(chǔ)上延伸,實(shí)現(xiàn)了有序環(huán)式哈希索引設(shè)計(jì)認為。如下圖所示,將沖突鏈?zhǔn)孜策B接形式?jīng)_突環(huán)大數據,保證頭指針指向任何一個(gè)item都可以遍歷環(huán)上所有數(shù)據(jù)長效機製。然后,HotRing通過lock-free移動(dòng)頭指針數字技術,動(dòng)態(tài)指向熱度較高的item(或根據(jù)算法計(jì)算出的很優(yōu)item位置)奮戰不懈,使得訪問熱點(diǎn)數(shù)據(jù)可以更快的返回。

下面通過如下4方面進(jìn)行介紹:

設(shè)計(jì)1:為什么要實(shí)現(xiàn)為有序環(huán)措施?

設(shè)計(jì)2:如何動(dòng)態(tài)識(shí)別熱點(diǎn)并調(diào)整頭指針大大縮短?

設(shè)計(jì)3:如何保證無鎖的并發(fā)訪問?

設(shè)計(jì)4:如何根據(jù)熱點(diǎn)數(shù)據(jù)量的動(dòng)態(tài)變化進(jìn)行無鎖rehash緊密相關?

實(shí)現(xiàn)環(huán)式哈希索引后更默契了,第一個(gè)問題是要保證查詢的正確性新技術。若為無序環(huán),當(dāng)一個(gè)readmiss操作遍歷沖突環(huán)時(shí)順滑地配合,它需要一個(gè)標(biāo)志來判定遍歷何時(shí)終止深入,否則會(huì)形式死循環(huán)。但是在環(huán)上前沿技術,所有數(shù)據(jù)都會(huì)動(dòng)態(tài)變化(更新或刪除)基礎,頭指針同樣也會(huì)動(dòng)態(tài)移動(dòng),沒有標(biāo)志可以作為遍歷的終止判定多種方式。

利用key排序可以解決這個(gè)問題對外開放,若目標(biāo)key介于連續(xù)兩個(gè)item的key之間,說明為readmiss操作深入交流研討,即可終止返回資料。由于實(shí)際系統(tǒng)中,數(shù)據(jù)key的大小通常為10~100B關註度,比較會(huì)帶來巨大的開銷橫向協同。哈希結(jié)構(gòu)利用tag來減少key的比較開銷。

如下圖所示敢於挑戰,tag是哈希值的一部分不斷創新,每個(gè)key計(jì)算的哈希值,前k位用來哈希表的定位提供了遵循,后n-k位作為沖突鏈中進(jìn)一步區(qū)分key的標(biāo)志參與水平。為了減小排序開銷,我們構(gòu)建字典序:order=(tag,key)服務效率。先根據(jù)tag進(jìn)行排序明確相關要求,tag相同再根據(jù)key進(jìn)行排序。

下圖比較了HotRing與傳統(tǒng)鏈?zhǔn)焦9餐?。以itemB舉例行業內卷,鏈?zhǔn)焦P枰闅v所有數(shù)據(jù)才能返回readmiss。而HotRing在訪問itemA與C后很重要,即可確認(rèn)Breadmiss能力和水平。因此針對(duì)readmiss操作,鏈?zhǔn)焦P枰闅v整個(gè)沖突鏈異常狀況;而HotRing利用字典序研究,不僅可以正確終止,且平均只需遍歷1/2沖突環(huán)應用創新。

HotRing實(shí)現(xiàn)了兩種策略來實(shí)現(xiàn)周期性的熱點(diǎn)識(shí)別與調(diào)整提高。每R次訪問為一個(gè)周期(R通常設(shè)置為5),第R次訪問的線程將進(jìn)行頭指針的調(diào)整的特性。兩種策略如下:

隨機(jī)移動(dòng)策略:每R次訪問交流,移動(dòng)頭指針指向第R次訪問的item基礎。若已經(jīng)指向該item,則頭指針不移動(dòng)還不大。該策略的優(yōu)勢(shì)是高產,不需要額外的元數(shù)據(jù)開銷,且不需要采樣過程發揮作用,響應(yīng)速度極快良好。

采樣分析策略:每R次訪問,嘗試啟動(dòng)對(duì)應(yīng)沖突環(huán)的采樣銘記囑托,統(tǒng)計(jì)item的訪問頻率引領。若第R次訪問的item已經(jīng)是頭指針指向的item,則不啟動(dòng)采樣示範。

采樣所需的元數(shù)據(jù)結(jié)構(gòu)如下圖所示應用前景,分別在頭指針處設(shè)置TotalCounter,記錄該環(huán)的訪問總次數(shù)運行好,每個(gè)item設(shè)置Counter記錄該item的訪問次數(shù)首次。因?yàn)閮?nèi)存指針需要分配64bits,但實(shí)際系統(tǒng)地址索引只使用其中的48bits統籌推進。我們使用剩余16bits設(shè)置標(biāo)志位(例如TotalCounter方案、Counter等)關鍵技術,保證不會(huì)增加額外的元數(shù)據(jù)開銷的必然要求。該策略的優(yōu)勢(shì)是,通過采樣分析取得了一定進展,可以計(jì)算選出很優(yōu)的頭指針位置完善好,穩(wěn)態(tài)時(shí)性能表現(xiàn)更優(yōu)。

這一部分的細(xì)節(jié)設(shè)計(jì)有很多:

采樣分析策略如何選出很優(yōu)位置積極參與;

針對(duì)RCU更新操作的采樣優(yōu)化問題分析,

熱點(diǎn)繼續(xù)防止冷啟動(dòng)。

本文不再具體描述交流研討,有愛好請(qǐng)參考HotRing論文更加完善。

Tair的RCU無鎖引擎是HotRing的設(shè)計(jì)基礎(chǔ)。參考論文[1,2]對(duì)如何實(shí)現(xiàn)無鎖鏈表進(jìn)行了具體講解建設應用,后續(xù)的所有無鎖設(shè)計(jì)基本都沿用了他們的策略支撐作用。有愛好可以讀一下。這里我們舉一個(gè)典型的并發(fā)示例進(jìn)行介紹動力。

如下圖所示同時,在鏈A->B->D上,線程1進(jìn)行插入C的操作效高性,同時(shí)線程2進(jìn)行RCU更新B的操作模式,嘗試更新為B'自動化。線程1修改B的指針指向C,完成插入高品質。而線程2修改A的指針指向B'完成更新不折不扣。兩個(gè)線程并發(fā)修改不同的內(nèi)存,均可成功返回資源優勢。但是這時(shí)遍歷整條鏈(A->B'->D)有效保障,將發(fā)現(xiàn)C無法被遍歷到,導(dǎo)致正確性問題長效機製。

解決措施是利用上圖(ItemFormat)中的Occupied標(biāo)志位講實踐。當(dāng)線程2更新B時(shí),首先需要將B的Occupied標(biāo)志位置位奮戰不懈。線程1插入C需要修改B的指針(NextItemAddress)市場開拓,若發(fā)現(xiàn)Occupied標(biāo)志位已置位,則需要重新遍歷鏈表大大縮短,嘗試插入要落實好。通過使并發(fā)操作競爭修改同一內(nèi)存地址,保證并發(fā)操作的正確性不容忽視。

利用相同原理組織了,我們保證了頭指針移動(dòng)操作,與CRUD操作的并發(fā)正確性說服力。因此實(shí)現(xiàn)了HotRing的無鎖并發(fā)訪問搶抓機遇。

如背景所述,對(duì)于極端的冪率分布場景表示,大量的數(shù)據(jù)訪問只集中在少部分的熱點(diǎn)數(shù)據(jù)中全面闡釋。因此只要保證熱點(diǎn)數(shù)據(jù)可以位于頭指針位置,沖突環(huán)即使很長競爭力所在,對(duì)于引擎的性能表現(xiàn)并不影響引人註目。引擎性能的降低,必然是因?yàn)闆_突環(huán)上存在多個(gè)熱點(diǎn)溝通機製。因此HotRing設(shè)計(jì)了適應(yīng)熱點(diǎn)數(shù)據(jù)量的無鎖rehash策略來解決這一問題好宣講。

HotRing利用訪問所需平均內(nèi)存訪問次數(shù)(accessoverhead)來替代傳統(tǒng)rehash策略的負(fù)載因子(loadfactor)。在冪率分布場景領先水平,若每個(gè)沖突環(huán)只有一個(gè)熱點(diǎn),HotRing可以保證accessoverhead

在本論文中,我們進(jìn)行索引結(jié)構(gòu)的熱點(diǎn)感知設(shè)計(jì)橋梁作用,提出了一種名為HotRing的新型熱點(diǎn)感知內(nèi)存KVS長遠所需,針對(duì)冪率分布的熱點(diǎn)場景進(jìn)行大量優(yōu)化。HotRing可動(dòng)態(tài)識(shí)別熱點(diǎn),并實(shí)時(shí)的進(jìn)行索引結(jié)構(gòu)的無鎖調(diào)整規模,進(jìn)而提供高并發(fā)高性能的無鎖化訪問穩定發展。

性能提升2.58倍阿里很快KV存儲(chǔ)引擎揭秘1

與傳統(tǒng)的內(nèi)存KVS索引相比,HotRing采用輕量級(jí)的熱點(diǎn)識(shí)別策略聯動,且沒有增加元數(shù)據(jù)存儲(chǔ)開銷增持能力。但在冪律分布的應(yīng)用場景中,HotRing的引擎吞吐性能可達(dá)600Mops/s行業內卷,與目前很快KVS相比追求卓越,可實(shí)現(xiàn)2.58倍的性能提升。

如果您覺得 性能提升2.58倍阿里很快KV存儲(chǔ)引擎揭秘 這篇文章對(duì)您有用參與能力,請(qǐng)分享給您的好友合理需求,謝謝
文章地址:http://61py.com/article/online/12530.html
解放雙手無盡可能,有問題添加天線貓微信
井陉县| 开阳县| 密山市| 广南县| 惠安县| 都兰县| 正蓝旗| 平果县| 新宾| 桐梓县| 枣庄市| 司法| 定远县| 自治县| 邮箱| 瑞丽市| 开阳县| 噶尔县| 阿合奇县| 鹤峰县| 青川县| 汪清县| 高安市| 甘孜县| 罗山县| 台中市| 云林县| 东丽区| 沙洋县| 开鲁县| 彝良县| 双桥区| 东乌| 定兴县| 钟祥市| 会泽县| 万荣县| 金湖县| 抚顺县| 霍州市| 永胜县|