<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從火山引擎TerarkKV存儲引擎看持久內(nèi)存實戰(zhàn)表現(xiàn)

          共 6733字,需瀏覽 14分鐘

           ·

          2021-09-24 22:32



          引言


          字節(jié)跳動旗下的火山引擎,深諳存儲引擎在企業(yè)合作與解決方案市場,以及AI領(lǐng)域中的戰(zhàn)略核心作用。為應對每秒數(shù)千萬次且時延在毫秒級的客戶查詢需求,火山引擎導入性能接近DRAM,并能以更優(yōu)成本提供更高容量,且具備數(shù)據(jù)持久性優(yōu)勢的英特爾? 傲騰? 持久內(nèi)存,打造了全新的數(shù)據(jù)庫存儲引擎TerarkKV, 更好地兼顧了成本控制及數(shù)據(jù)訪問低時延的要求。



          執(zhí)行概要



          隨著大數(shù)據(jù)技術(shù)和應用的迅猛發(fā)展,數(shù)據(jù)背后的價值日益凸顯,企業(yè)也紛紛制訂或優(yōu)化 其數(shù)字化轉(zhuǎn)型戰(zhàn)略,以期充分利用數(shù)據(jù)挖掘來獲取深刻洞察并據(jù)此搶占市場先機。然而,呈爆發(fā)式增長和來源日趨多樣的數(shù)據(jù),也讓企業(yè)從數(shù)據(jù)采集、存儲到處理和業(yè)務(wù) 決策等各個層面均面臨更多也更為艱巨的挑戰(zhàn)。

          作為字節(jié)跳動旗下的數(shù)字服務(wù)與智能科技品牌,火山引擎也早已認識到“數(shù)據(jù)”對于每個組織的無限價值,從品牌創(chuàng)建伊始,火山引擎就將“幫助每一個組織釋放‘增長潛能’”列為自身的重要使命之一。作為企業(yè)級智能技術(shù)服務(wù)平臺的火山引擎,正依托自身在大數(shù)據(jù)、人工智能等領(lǐng)域的深厚技術(shù)能力,以增長理念及方法論,為客戶提供產(chǎn)品與技術(shù)解決方案。



          郭寬寬 火山引擎單機存儲引擎組


          英特爾? 傲騰? 持久內(nèi)存可以說是二十年來對數(shù)據(jù)庫而言最具革命性的硬件創(chuàng)新之一,我們并不想把它作為DRAM內(nèi)存的簡單替代, 而是根據(jù)它字節(jié)尋址、超低延遲和持久化的能力構(gòu)建專用數(shù)據(jù)結(jié)構(gòu),重新設(shè)計了數(shù)據(jù)庫的I/O模型,從業(yè)務(wù)架構(gòu)層面縮減了工程成本和設(shè)備成本。


          通過對行業(yè)及市場的充分調(diào)研與分析,火山引擎的洞察是:要幫助組織充分利用數(shù)據(jù)驅(qū)動業(yè)務(wù)發(fā)展與增長,要打造優(yōu)秀的產(chǎn)品與平臺,“數(shù)據(jù)平臺”這個技術(shù)與產(chǎn)品基座將起到至關(guān)重要的底層支撐作用,這其中,存儲引擎的角色又尤為重要。


          例如,在DataLeap(大數(shù)據(jù)開發(fā)與數(shù)據(jù)治理套件)、DataRangers(一站式分析與增長平臺)和DataWind(一站式數(shù)據(jù)洞察平臺,智能推薦等組件及平臺)中,高效穩(wěn)定的數(shù)據(jù)索引以及追求更優(yōu)性能表現(xiàn)的元數(shù)據(jù)查詢能力是必不可少的,要針對如此大規(guī)模及高復雜度的系統(tǒng)提供高效穩(wěn)定的支撐,數(shù)據(jù)庫存儲引擎的性能和成本控制能力就必須要經(jīng)受住更加嚴苛的考驗。


          作為企業(yè)合作與解決方案市場的新秀和數(shù)據(jù)產(chǎn)品及人工智能領(lǐng)域的創(chuàng)新引領(lǐng)者,火山引擎深諳存儲引擎的戰(zhàn)略重心作用,并擁有專注存儲引擎開發(fā)與推廣的團隊。為應對每秒 數(shù)千萬次且延遲在毫秒級的客戶查詢需求,火山引擎與正在全力推進內(nèi)存-存儲架構(gòu) 革新的英特爾公司展開了深入交流與合作,利用其性能接近 DRAM 內(nèi)存、并能以更優(yōu) 成本提供更高容量且具備數(shù)據(jù)持久性的英特爾? 傲騰? 持久內(nèi)存(以下或簡稱為“傲騰? 持久內(nèi)存”或“持久內(nèi)存”),打造了全新的數(shù)據(jù)庫存儲引擎——TerarkKV。持久內(nèi)存的導入,讓TerarkKV能夠更好的控制成本并滿足業(yè)務(wù)場景對數(shù)據(jù)訪問低延遲的需求。



          現(xiàn)狀分析與挑戰(zhàn)



          在構(gòu)建TerarkKV之前,RocksDB及其各種優(yōu)化版本是火山引擎采用的主要數(shù)據(jù)庫存儲引擎。


          作為著名的LSM類存儲引擎之一,RocksDB在火山引擎產(chǎn)品中占據(jù)了非常重要的地位,其大量的數(shù)據(jù)庫、存儲系統(tǒng)都是基于 RocksDB進行構(gòu)建或改進。LSM在設(shè)計之初是為順序?qū)懶阅艽蠓葍?yōu)于隨機寫性能的設(shè)備而設(shè)計的。近年來RocksDB雖然有了很多改進,但客觀上并不適用于所有場景,尤其是其讀寫放大問題讓那些對延遲比較敏感的業(yè)務(wù),如Redis、機器學習參數(shù)服務(wù)、通用緩存、圖計算等場景比較難以接受。


          以圖數(shù)據(jù)庫為例,它的應用正變得越來越普及,也越來越重要。據(jù)Gartner預測:“到2022年,圖分析處理和圖數(shù)據(jù)庫 (Graph Database) 的應用將以每年100%的速度增長【1】?!比欢鴮D的單次遍歷或者關(guān)聯(lián)查詢,往往需要進行很多次底層KV請求來獲取邊和點信息,且這些KV請求只能串行化,再考慮到KV內(nèi)部的讀放大,單次I/O延遲的重要性就凸顯出來了。因此,進一步優(yōu)化存儲引擎性能來為這類場景提供更好的支持已是勢在必行。


          RocksDB本身的流行度很高,社區(qū)處于較活躍的狀態(tài)。RocksDB社區(qū)內(nèi)也針對持久內(nèi)存與RocksDB的搭配進行了一些優(yōu)化,如 優(yōu)化傲騰? 持久內(nèi)存中存儲Value的所在位置、大幅優(yōu)化壓縮效率、WAL(Write-Ahead Logging) 從寫固態(tài)盤(SSD)改為寫傲騰? 持久內(nèi)存。這些優(yōu)化確實取得了一定程度的收益,但火山引擎的單機引擎團隊認為它們依然遠未發(fā)揮出傲騰? 持久內(nèi)存的巨大價值潛能。為了更加充分地釋放這一全新硬件的能力和降低產(chǎn)品成本,火山引擎準備嘗試更具突破意義的創(chuàng)新研究。



          傲騰?持久內(nèi)存

          助力火山引擎突破延遲瓶頸



          選擇英特爾? 傲騰? 持久內(nèi)存的理由


          基于英特爾? 3D XPoint? 存儲技術(shù)打造的英特爾? 傲騰? 持久內(nèi)存, 為上述問題的破解提供了全新思路,原因在于其具備以下優(yōu)勢:



          ?  高性能、大容量、低成本: 在圖1所示的存儲層級架構(gòu)的 “金字塔”中,越靠近塔頂?shù)膶蛹壦俣仍娇?、容量越小、單位存儲容量成本也越高。英特? 傲騰? 持久內(nèi)存在該“金字塔”中位于DRAM內(nèi)存和固態(tài)盤之間。與DRAM內(nèi)存相比,持久內(nèi)存具有更經(jīng)濟的價格和更大的容量,和固態(tài)盤相比則擁有更優(yōu)的數(shù)據(jù)響應速度和傳輸速度(接近 DRAM 內(nèi)存),其高性能、大容量和高性價比的特性,有助于用戶在幾乎不影響系統(tǒng)性能的同時降低總體擁有成本(以下簡稱“TCO”)。


          字節(jié)尋址能力簡化底層I/O:傳統(tǒng)的數(shù)據(jù)庫主要依靠磁盤存儲數(shù)據(jù),但磁盤不能按字節(jié)尋址,所以數(shù)據(jù)庫讀取數(shù)據(jù)一般是按塊,過程就是把整塊數(shù)據(jù)讀到內(nèi)存,然后再根據(jù)偏移量、按 字節(jié)尋址的方式讀取具體的數(shù)據(jù)。持久內(nèi)存具備字節(jié)尋址能力,因此能夠大大簡化底層I/O,加快查詢速度。此外,如果將數(shù)據(jù)保存在DRAM內(nèi)存中,雖然也能實現(xiàn)字節(jié)尋址,但鑒于DRAM內(nèi)存的數(shù)據(jù)易失性,為保證安全必須定期備份數(shù)據(jù)到磁盤,從而帶來了數(shù)據(jù)同步等一系列復雜操作。


          ? 數(shù)據(jù)非易失性提高可靠性:持久內(nèi)存具備數(shù)據(jù)持久性,因此在實例重啟或斷電等計劃內(nèi)或計劃外的停機情況下都不會造成數(shù)據(jù)丟失,從而可以快速恢復服務(wù)。


          基于持久內(nèi)存探索更優(yōu)方案


          在啟動針對RocksDB的創(chuàng)新研究之前,火山引擎基于英特爾? 傲騰? 持久內(nèi)存的上述優(yōu)勢,廣泛調(diào)研了業(yè)界已有的各類相關(guān)方案,并總結(jié)了一些明顯的問題。


          其一,火山引擎發(fā)現(xiàn)部分社區(qū)工作主要集中在對RocksDB和WiredTiger等存儲引擎的改造上面,并沒有從本質(zhì)上改變它們原有的數(shù)據(jù)結(jié)構(gòu)和讀寫模式,僅是把傲騰?持久內(nèi)存當作一種更加快速的存儲介質(zhì)來使用,甚至部分設(shè)計還保留了4K/16K的頁尺寸,  無法發(fā)揮持久內(nèi)存字節(jié)尋址的優(yōu)勢。


          其二,部分設(shè)計僅僅把傲騰? 持久內(nèi)存當作更便宜的DRAM內(nèi)存替代品,用來擴展本機的內(nèi)存容量,并把緩存數(shù)據(jù)存放在傲騰? 持久內(nèi)存中。這種方案雖然利用了持久內(nèi)存字節(jié)尋址的特性,但其查詢?nèi)圆豢杀苊獾匾M行從DRAM內(nèi)存到持久內(nèi)存,再到固態(tài)盤的三級跳,造成了不必要的浪費。


          鑒于這些既有方案均不能充分利用持久內(nèi)存的應用優(yōu)勢,火山引擎決定根據(jù)英特爾? 傲騰? 持久內(nèi)存的上述特性,并結(jié)合自身的 業(yè)務(wù)需求來打造全新的數(shù)據(jù)庫存儲引擎。


          App Direct模式開辟提速新途徑


          為了在新存儲引擎中充分釋放英特爾? 傲騰? 持久內(nèi)存的潛能,火山引擎團隊對其兩種主要工作模式——內(nèi)存模式和App Direct 模式(以下或簡稱“AD 模式”)進行了評估。


          在內(nèi)存模式下,CPU內(nèi)存控制器會把持久內(nèi)存視作易失性的系統(tǒng)內(nèi)存,而將DRAM內(nèi)存用作持久內(nèi)存的高速緩存。雖然該模式能夠提供更大的內(nèi)存容量,但在這種模式下數(shù)據(jù)訪問請求會首先先在DRAM內(nèi)存上檢查是否命中,如果命中,數(shù)據(jù)直接從內(nèi)存中獲??;如果沒有命中,會再到持久內(nèi)存上進行訪問,這會帶來 更多的I/O開銷并增加延遲。


          切換到AD模式后,火山引擎發(fā)現(xiàn),支持行業(yè)標準NVM持久化內(nèi)存編程模式的軟件和應用,都能直接與傲騰? 持久內(nèi)存通信,且能充分利用其字節(jié)尋址能力,從而顯著降低延遲,滿足高速 業(yè)務(wù)場景的需求。如果預設(shè)DRAM內(nèi)存和持久內(nèi)存在容量比例上存在一定的懸殊,比如DRAM內(nèi)存設(shè)為512GB、持久內(nèi)存設(shè)為3TB或6TB的容量配比,那么大部分數(shù)據(jù)就將存儲在持久內(nèi)存中,而索引全部保存在DRAM內(nèi)存中,這樣就可以保證所有關(guān)鍵字的查詢都在速度更高的DRAM內(nèi)存中進行,也就能更好地讓DRAM內(nèi)存和持久內(nèi)存實現(xiàn)互補,充分發(fā)揮各自的優(yōu)勢。


          經(jīng)過評估,火山引擎最終確定:要在新存儲引擎中采用英特爾? 傲騰? 持久內(nèi)存的App Direct模式。


          持久內(nèi)存+ 數(shù)據(jù)結(jié)構(gòu)優(yōu)化,助新引擎攻克讀放大難題


          經(jīng)過一系列的研究、探索和對比評估工作,火山引擎基于英特爾? 傲騰?持久內(nèi)存,針對偏緩存或內(nèi)存的業(yè)務(wù)場景打造了全新的存儲引擎——TerarkKV。如圖2所示,該引擎分為兩部分,一部分是數(shù)據(jù)索引層,由DRAM內(nèi)存承載,用于存放索引數(shù)據(jù)結(jié)構(gòu);另一 部分是數(shù)據(jù)存儲層,由持久內(nèi)存和固態(tài)盤承載,用于存放大量數(shù)據(jù),對內(nèi)與持久內(nèi)存進行交互,對外暴露offset到數(shù)據(jù)映射。



          火山引擎團隊還同步為該存儲引擎自主開發(fā)了一種新的索引數(shù)據(jù)結(jié)構(gòu)——CSGT(Concurrent SiGnature Tree)。這是一種有序索引數(shù)據(jù)結(jié)構(gòu),主要特性是增加了DRAM內(nèi)存中的索引數(shù)量。


          索引一條KV記錄,悲觀估計消耗16字節(jié),一般消耗13.5字節(jié),在這種情況下,1GB DRAM內(nèi)存可索引的KV記錄可高達8千萬條【2】。對于大部分應用場景來說,CSGT幾乎都可確保其索引存放在高速DRAM內(nèi)存中。


          這種做法有別于將持久內(nèi)存作為緩存使用的常規(guī)做法,常規(guī)做法就是索引通常需要先到DRAM內(nèi)存中查詢數(shù)據(jù)是否存在,沒有找到時再到持久內(nèi)存中查詢。在TerarkKV使用的全新索引數(shù)據(jù)結(jié)構(gòu)的幫助下,查詢可做到單次I/O即可定位到數(shù)據(jù)位置,因此不存在讀放大的弊端。此外,其索引是記錄級別而非傳統(tǒng)的頁級別,因此大大提升了Value訪問速度。經(jīng)測試,持久內(nèi)存單次I/O延遲只有150ns左右,這使得TerarkKV能夠適用于大多數(shù)內(nèi)存密集型客戶應用場景【3】。



          性能驗證及成果體現(xiàn)



          高并發(fā)、高吞吐、低延遲全面兼顧


          為驗證基于英特爾? 傲騰? 持久內(nèi)存(App Direct模式)打造的 全新TerarkKV存儲引擎的性能表現(xiàn),火山引擎與英特爾一同對TerarkKV的吞吐量、每秒查詢數(shù)(QPS)和延遲進行了測試。



          由圖3所示的測試結(jié)果可知,TerarkKV在吞吐性能上的表現(xiàn)非常出色,且最佳適用場景為Value長度在512B以內(nèi)的簡單查詢。同時,其單機上千萬的QPS(Query Per Second,每秒查詢數(shù))表現(xiàn),也幾乎可以覆蓋到所有的應用場景。


          從表1可以看出,采用傲騰? 持久內(nèi)存的TerarkKV的P99和P999延遲都是微秒級的【5】。據(jù)火山引擎介紹,這與采用純DRAM內(nèi)存配置的測試結(jié)果相比,差距僅為1-2微秒【6】。


          更重要的是,相對于DRAM內(nèi)存昂貴的成本和難以突破的容量限制,持久內(nèi)存 的引入不僅能保證查詢性能達到與 DRAM 內(nèi)存相近的程度,還能 更為高效和經(jīng)濟實惠地擴充內(nèi)存容量,降低客戶的TCO。而且,在該存儲引擎中,DRAM內(nèi)存和持久內(nèi)存的容量配比為1:4,就可 實現(xiàn)全部索引存放于DRAM內(nèi)存中,同時待查詢的Value 值存放于持久內(nèi)存中這種較為理想的狀態(tài)。


          DRAM內(nèi)存中的一次跳轉(zhuǎn)延遲僅為40-60ns【7】,因而對索引的查詢即便要經(jīng)過多次跳轉(zhuǎn),也只會消耗較低的延遲。對于持久內(nèi)存中的數(shù)據(jù),通過索引獲得地址后就可直接讀取,無需再在持久內(nèi)存中繼續(xù)查找,這就可以保證一次 I/O就能完成KV查詢。



          TerarkKV——成功滿足更廣泛客戶場景需求


          目前,TerarkKV已完成了在圖數(shù)據(jù)庫、IPS(用戶特征服務(wù))等組件中的PoC 驗證,并獲得了令人滿意的結(jié)果。這類業(yè)務(wù)的主要特征有二:一是上層的單次查詢需要下層有多次數(shù)據(jù)跳轉(zhuǎn);二是業(yè)務(wù)的請求串行化嚴重,需要以相當快的速度獲得響應結(jié)果。


          例如在智能推薦應用場景中,用戶之間的關(guān)系、內(nèi)容之間的關(guān)系以及用戶與內(nèi)容之間的關(guān)系,往往都會用圖數(shù)據(jù)結(jié)構(gòu)來描述。隨著移動互聯(lián)網(wǎng)技術(shù)的持續(xù)發(fā)展,更多元化的媒體對象,如短文本、視頻等正被補充進客戶的數(shù)據(jù)池中,從而進一步加大了圖結(jié)構(gòu)的 復雜性,意味著圖數(shù)據(jù)結(jié)構(gòu)中的沿路徑查詢需要跳轉(zhuǎn)多次。在這種情況下,如果使用RocksDB存儲引擎來對圖數(shù)據(jù)進行查詢,一次跳轉(zhuǎn)可能存在十倍讀放大,十次跳轉(zhuǎn)就可能達到百倍讀放大。由LSM樹的形態(tài)與具體業(yè)務(wù)場景決定了性能的優(yōu)劣,讀放大達到 40倍的情況也不罕見,這種延遲上的消耗顯然是延遲敏感型 系統(tǒng)所無法承擔的。而且,圖數(shù)據(jù)庫天然需要持久化,在這種 情況下,基于英特爾? 傲騰? 持久內(nèi)存構(gòu)建的TerarkKV存儲引擎無疑將成為承載圖計算場景的更優(yōu)選擇,并能很好地解決讀放大的 問題。


          除圖數(shù)據(jù)庫外,TerarkKV還適用于對延遲要求嚴苛的Flink流處理場景,以及機器學習中向量查詢等典型業(yè)務(wù),這些模塊在火山 引擎的產(chǎn)品矩陣中也有非常廣泛的使用,由此不難預見:該存儲引擎未來將有很多用武之地。



          總結(jié)與展望



          火山引擎與英特爾基于英特爾? 傲騰? 持久內(nèi)存(AD模式)打造的 全新數(shù)據(jù)庫存儲引擎TerarkKV,在IOPS、QPS及延遲方面都能更好地滿足偏緩存的應用場景的需求,同時還能實現(xiàn)明顯的成本節(jié)約。它的問世不但見證了雙方在持久內(nèi)存應用探索方面的又一次成功協(xié)作,也進一步驗證了英特爾? 傲騰? 持久內(nèi)存在數(shù)據(jù)處理和存儲加速方面的出色潛能。


          以此為基礎(chǔ),火山引擎還將與英特爾一道,計劃圍繞持久內(nèi)存及相關(guān)產(chǎn)品與技術(shù),開展更多、更廣泛、也更為深入的技術(shù)交流與協(xié)作,讓持久內(nèi)存能在更多的業(yè)務(wù)場景中發(fā)揮作用,進而向用戶提供更優(yōu)質(zhì)的產(chǎn)品與服務(wù)體驗。




          ▼ ▼ ▼


          【1】 數(shù)據(jù)引自:

          https://www.gartner.com/en/newsroom/press-releases/2019-02-18-gartner-identifies-top-10-data-and-analytics-technolo。


          【2】, 【3】, 【4】, 【5】, 【6】, 【7】, 【8數(shù)據(jù)援引自火山引擎內(nèi)部測試與評估,更多詳情請咨詢火山引擎。測試平臺配置:處理器:雙路英特爾? 至強? 鉑金 8260處理器(24 內(nèi)核,48 線程);內(nèi)存:256 GB DRAM (DDR4-2933, 32 GB x 8) + 1024 GB 英特爾? 傲騰? 持久內(nèi)存 (128 GB x 8);內(nèi)核版本:Linux 4.19;TerarkKV hash tag: a52d4783580a9c0cdce8330dcc7f916e6bb613a6;GCC 版本:9.2.1 20190909 (Debian 9.2.1-8)。

          英特爾并不控制或?qū)徲嫷谌綌?shù)據(jù)。請您審查該內(nèi)容,咨詢其他來源,并確認提及數(shù)據(jù)是否準確。


          英特爾技術(shù)特性和優(yōu)勢取決于系統(tǒng)配置,并可能需要支持的硬件、軟件或服務(wù)得以激活。產(chǎn)品性能會基于系統(tǒng)配置有所變化。沒有任何產(chǎn)品或組件是絕對安全的。更多信息請從原始設(shè)備制造商或 零售商處獲得,或請見intel.cn。


          性能測試中使用的軟件和工作負荷可能僅在英特爾微處理器上進行了性能優(yōu)化。諸如 SYSmark 和 MobileMark 等測試均系基于特定計算機系統(tǒng)、硬件、軟件、操作系統(tǒng)及功能。上述任何要素的變動 都有可能導致測試結(jié)果的變化。請參考其他信息及性能測試(包括結(jié)合其他產(chǎn)品使用時的運行性能)以對目標產(chǎn)品進行全面評估。更多信息,詳見www.intel.cn/benchmarks。


          描述的成本降低情景均旨在特定情況和配置中舉例說明特定英特爾產(chǎn)品如何影響未來成本并提供成本節(jié)約。情況均不同。英特爾不保證任何成本或成本降低。


          英特爾、英特爾標識以及其他英特爾商標是英特爾公司或其子公司在美國和/或其他國家的商標。


          ? 英特爾公司版權(quán)所有




          - END-


            ?
          歡迎文末評論補充!
          歡迎新聞投稿
          歡迎技術(shù)投稿
          歡迎各種爆料
          Aming全天候在線
          全球存儲觀察為你開啟新視野

          歡迎點贊,點在看,點分享
          瀏覽 88
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  豆花无码短视频在线观看网址 | 日本三级韩国三级欧美三级 | 精品久久久久不卡 | 一区二区三区亚洲动漫 | 中文字幕欧美在线 |