<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>

          首次揭秘:騰訊TDSQL分布式多級(jí)一致性數(shù)據(jù)庫系統(tǒng)技術(shù)

          共 4780字,需瀏覽 10分鐘

           ·

          2020-12-27 06:17


          作者:李海翔,騰訊TDSQL專家工程師
          “在分布式背景下,怎么實(shí)現(xiàn)雙一致性(事務(wù)一致性、分布式一致性),并提高分布式事務(wù)型集群的處理效率?”騰訊TDSQL數(shù)據(jù)庫長期致力于基礎(chǔ)研究創(chuàng)新,并持續(xù)獲得關(guān)鍵技術(shù)突破。
          2020年12月21日,第11屆DTCC(中國數(shù)據(jù)庫技術(shù)大會(huì))大會(huì)上,騰訊TDSQL數(shù)據(jù)庫專家工程師李海翔分享了數(shù)據(jù)庫領(lǐng)域的核心技術(shù)——分布式事務(wù)處理技術(shù)的核心——多級(jí)一致性技術(shù)。該技術(shù)在遵循了ACID特性的同時(shí),使得事務(wù)處理技術(shù)符合CAP原理,并在理論層面相較“嚴(yán)格可串行化”技術(shù)做了擴(kuò)展,進(jìn)一步提出了多種強(qiáng)一致性的完整技術(shù)。同時(shí)該技術(shù)在工程實(shí)踐層面落地了較高的性能,是同類產(chǎn)品Spaneer性能的4+倍,是CorchroachDB的2+倍,高并發(fā)場景下是Greenplum性能的3+倍。
          這意味著,TDSQL實(shí)現(xiàn)了數(shù)據(jù)庫行業(yè)首個(gè)高性能的強(qiáng)一致性工程系統(tǒng),對(duì)推動(dòng)分布式數(shù)據(jù)庫核心技術(shù)以及產(chǎn)業(yè)應(yīng)用有著重要意義。
          ?

          0.?問題的背景

          科學(xué)研究,始于問題。在分布式事務(wù)處理領(lǐng)域,有很多重要的問題,遠(yuǎn)不止是2PC技術(shù)所能囊括的。例如,騰訊TDSQL目前在解決的一個(gè)復(fù)雜且是一個(gè)復(fù)合的問題如下:

          事務(wù)型數(shù)據(jù)庫必須要解決的問題,是數(shù)據(jù)的一致性問題。該問題是事務(wù)ACID特性的C的問題,如果不滿足C,會(huì)有多種數(shù)據(jù)異常,如臟讀、不可重復(fù)讀、幻讀、讀偏序、寫偏序等數(shù)據(jù)異常。

          而分布式系統(tǒng),遵循CAP理論,其中的C,也是“一致性”,是操作之間讀取數(shù)據(jù)的一致性。如果CAP的C不被滿足,則會(huì)出現(xiàn)Steal read、Immortal write、Causal reverse等一致性異常問題(如圖2所示)。

          而分布式事務(wù)型數(shù)據(jù)庫,則同時(shí)面臨以上兩類問題,如圖1所示。在分布式事務(wù)型數(shù)據(jù)庫中,該兩類問題各自解決都有難度(例如很多數(shù)據(jù)庫像Oracle都不提供可串行化不能確保數(shù)據(jù)異常不發(fā)生、NoSQL系統(tǒng)為了保證CAP中的A和P而丟掉了C),更不用說協(xié)同被解決了。

          圖1 多級(jí)一致性研究背景和問題
          ?
          圖2 分布式系統(tǒng)下存在的問題
          ?
          TDSQL作為一個(gè)分布式事務(wù)型數(shù)據(jù)庫,就面臨著如上的兩個(gè)問題疊加(分布式一致性+事務(wù)一致性)這樣一個(gè)復(fù)合且復(fù)雜的技術(shù)問題,其難點(diǎn)在于保證正確性的背景下如何做到高效率,這直接影響著分布式事務(wù)數(shù)據(jù)庫的事務(wù)處理的吞吐量(Transaction throughput)。
          ?

          1.?學(xué)術(shù)界的研究與問題的復(fù)雜度


          在學(xué)術(shù)界,前述問題的一種解決方式,被稱為“嚴(yán)格可串行化”,該技術(shù)可以解決掉事務(wù)的一致性和CAP的一致性引發(fā)的問題。如圖3所示(文獻(xiàn)《Highly available transactions: Virtues and limitations》),其中的樹根,就是事務(wù)一致性和分布式一致性的結(jié)合點(diǎn),嚴(yán)格可串行化。而樹的左子樹(事務(wù)一致性)和右子樹(分布式一致性),是兩個(gè)獨(dú)立的系統(tǒng),他們之間沒有關(guān)聯(lián)關(guān)系。

          圖3 學(xué)術(shù)界對(duì)于“事務(wù)一致性和分布式一致性的結(jié)合點(diǎn)”的研究(1)

          從圖3也可以看出,左子樹的事務(wù)一致性隔離級(jí)別有很多種,右子樹的分布式一致性有很多種,因此,需要系統(tǒng)地研究各種級(jí)別的事務(wù)的一致性和分布式系統(tǒng)的一致性,才能更好的分析問題、解決問題(而不是只考慮樹根的唯一結(jié)合點(diǎn))。而如圖4告知我們,分布式一致性有很多,圖4總結(jié)有60種左右,這為研究該項(xiàng)問題,帶來了復(fù)雜度。
          ?
          圖4 分布式一致性關(guān)系圖
          ?
          盡管融合分布式一致性的問題有很大的復(fù)雜度,但是這樣的攔路虎是阻止不了我們對(duì)問題深入研究的熱情和步伐的。TDSQL在前行探索中,如圖5所示,看到了方向和曙光(紅色方框處)。圖5中藍(lán)色方框,是事務(wù)中的與隔離性相關(guān)的一致性等級(jí)、和分布式一致性,在橫軸的“Isolation(transactional)”列,對(duì)應(yīng)的是事務(wù)的隔離級(jí)別,而他們相交處,是紅色方框所框住的,卻是“一片空白”。這片空白處,正是研究所未及處,也正是這片無人區(qū),讓TDSQL的研究有了空間和舞臺(tái)。

          圖5 學(xué)術(shù)界對(duì)于“事務(wù)一致性和分布式一致性的結(jié)合點(diǎn)”的研究(2)

          另外,業(yè)界經(jīng)常提及“強(qiáng)一致性”,但概念混亂不清晰。文獻(xiàn)《Consistency in Non-Transactional Distributed Storage Systems》指出如下內(nèi)容,澄清了強(qiáng)一致性的含義:

          In a hybrid consistent system,?strong?operations are guaranteed to be seen in some sequential orderby?all processes(as in sequential consistency), while?weak?operations aredesigned to be fast, and they eventually become visible by all processes (muchlike in eventual consistency). Weak operations are only guaranteed to beordered according to their interleaving with strong operations: if twooperations belong to the same session and one of them is strong, then theirrelative order of invocation is respected and visible by all processes.

          所以,是否被“所有進(jìn)程”可見,是判斷強(qiáng)一致性的標(biāo)準(zhǔn),而在分布式一致性中,只有線性一致性和順序一致性滿足強(qiáng)一致性的含義。而結(jié)合事務(wù)一致性,需要再滿足可串行化才能稱為分布式事務(wù)的強(qiáng)一致性

          綜上所述,TDSQL所研究的問題,正是ACID的C、CAP的C,以及強(qiáng)一致之間的內(nèi)在聯(lián)系,他們有兩個(gè)維度的表現(xiàn):一是考慮這些因素時(shí)如何保證正確性,二是在有這些因素存在影響下如何保證所實(shí)現(xiàn)的系統(tǒng)有好的性能。如果沒有好的性能,提供再強(qiáng)的一致性也難以實(shí)用,因此強(qiáng)一致性背景下實(shí)現(xiàn)高性能成為挑戰(zhàn)。
          ?

          2. 產(chǎn)業(yè)界的實(shí)現(xiàn)與存在的問題

          在產(chǎn)業(yè)界,目前只有Google的Spanner系統(tǒng),實(shí)現(xiàn)了“嚴(yán)格可串行化”,Spanner稱之為“外部一致性”(《Spanner:Googles globally distributed database》)。該項(xiàng)技術(shù)在2012年發(fā)表,使得數(shù)據(jù)庫界的研究和實(shí)踐從NoSQL時(shí)代買入NewSQL時(shí)代,具有劃時(shí)代的意義。其實(shí)現(xiàn)的技術(shù)本質(zhì),是把分布式中的線性一致性和事務(wù)一致性的可串行化相結(jié)合,從而實(shí)現(xiàn)了“嚴(yán)格可串行化”。


          圖6 工業(yè)界對(duì)于“事務(wù)一致性和分布式一致性的結(jié)合點(diǎn)”的實(shí)踐
          ?
          但是,Spanner的實(shí)現(xiàn),存在一個(gè)問題:正確性能夠保證,但性能低下(如圖6所示的事務(wù)吞吐量的計(jì)算公式)。因此,該系統(tǒng)具有象征意義。而實(shí)踐中,對(duì)于需要在金融級(jí)的事務(wù)處理場景中,其性能不符合要求。

          ?

          3. 騰訊TDSQL的多級(jí)一致性技術(shù)

          TDSQL深入研究了分布式一致性問題,解決了一些技術(shù)難題。例如圖7,線性一致性有多個(gè)子類,那么線性一致性和事務(wù)一致性結(jié)合時(shí),是否應(yīng)該有多個(gè)級(jí)別的“嚴(yán)格可串行化”?再如,為什么順序一致性可以和可串行化結(jié)合而能確保強(qiáng)一致性?這些問題,都需要在理論層面加以證明,然后才能遷移到工程系統(tǒng)中指導(dǎo)工程實(shí)現(xiàn)。

          圖7 線性一致性的定義
          ?
          在深入研究了ACID的C和CAP的C以及強(qiáng)一致性之后,TDSQL團(tuán)隊(duì)通過一致性建模技術(shù),從概念、模型、基于模型的操作、事務(wù)模型框架、數(shù)據(jù)結(jié)構(gòu)和高效算法設(shè)計(jì)等多個(gè)角度,基于TDSQL和Greenplum實(shí)現(xiàn)了“多級(jí)一致性”技術(shù)(基于Greenplum目的是為了便于和業(yè)界的產(chǎn)品實(shí)現(xiàn)對(duì)比發(fā)現(xiàn)問題),該技術(shù)在正確性方面,給出了滿足強(qiáng)一致性的線性可串行化、順序可串行化級(jí)別的定義和證明等,使得前述的事務(wù)一致性方面的數(shù)據(jù)異常如寫偏序、分布式一致性方面的分布式異常如Steal read等問題被消除。而在性能方面,有著優(yōu)異的表現(xiàn)。

          該技術(shù)在Google云上對(duì)比測試了Spanner的性能,對(duì)比測試了業(yè)界知名的NewSQL系統(tǒng)CorchroachDB、對(duì)比測試了原生的Greenplum,均獲得了較好的結(jié)果,如圖8所示(TDSQL的多級(jí)一致性:SER-L,線性可串行化;SER-S,順序可串行化),從多個(gè)角度驗(yàn)證對(duì)比了TDSQL多級(jí)一致性的性能,在圖8中給出部分實(shí)驗(yàn)數(shù)據(jù)。圖8的實(shí)驗(yàn)分為4個(gè)層面進(jìn)行了對(duì)比:
          1. 對(duì)比Spanner的性能:圖8左上角的子圖,同樣性價(jià)比的同等資源情況下,TDSQL的多級(jí)一致性是Spanner性能的4+倍。

          2. 對(duì)比CorchroachDB的性能圖8左下角的子圖,同樣硬件測試環(huán)境下,TDSQL的多級(jí)一致性是CorchroachDB性能的2+倍。

          3. 對(duì)比原生的Greenplum的性能:圖8右子圖,硬件測試環(huán)境下,TDSQL的多級(jí)一致性是原生的Greenplum性能的3+倍。

          4. 存在一定程度的網(wǎng)絡(luò)延時(shí)的情況下,TDSQL多級(jí)一致性的性能表現(xiàn):圖8右子圖,還測試在分布式環(huán)境下,當(dāng)網(wǎng)絡(luò)存在1.5ms和5ms的延時(shí)情況下,高并發(fā)場景下的TDSQL多級(jí)一致性技術(shù),依然好于無延時(shí)情況的Greenplum的RC隔離級(jí)別的性能,這表明具有更高一致性的隔離級(jí)別可以做到更好的性能(CorchroachDB早期版本實(shí)現(xiàn)了快照隔離和可串行化,但在新版本中,只保留了更嚴(yán)格的可串行化級(jí)別,大家可想想為什么呢?)。


          圖8 TDSQL多級(jí)一致性技術(shù)性能驗(yàn)證
          ?

          4.?TDSQL多級(jí)一致性工作的意義

          TDSQL多級(jí)一致性的研究與實(shí)踐工作,有幾個(gè)價(jià)值:

          1. 第一個(gè)實(shí)現(xiàn)多種強(qiáng)一致性的工程系統(tǒng):在目前已知的系統(tǒng)內(nèi),實(shí)現(xiàn)強(qiáng)一致性的只有Spanner和TDSQL;實(shí)現(xiàn)多種級(jí)別的強(qiáng)一致性系統(tǒng),只有TDSQL。這對(duì)于深入實(shí)踐強(qiáng)一致性系統(tǒng),有著榜樣的作用,我們可從中知道,工程實(shí)踐中,該方向的理論是可行的。

          2. 第一個(gè)高性能的強(qiáng)一致性工程系統(tǒng):確保正確性的系統(tǒng),未必能夠有效運(yùn)用到實(shí)際的環(huán)境中,因?yàn)楦咝阅苁呛饬恳粋€(gè)系統(tǒng)的核心指標(biāo)。而多種強(qiáng)一致性下的TDSQL,有著可以滿足實(shí)際應(yīng)用的性能。在無任何數(shù)據(jù)異常和一致性異常出現(xiàn)的情況下,用戶不必再擔(dān)心數(shù)據(jù)或操作出現(xiàn)意想不到的問題,但卻可以享受極佳的性能體驗(yàn),這表明,工程實(shí)踐中,該技術(shù)落地是可行的


          我們期待,序幕拉開,真正的強(qiáng)一致性系統(tǒng)將如雨后春筍……


          5.?未來工作


          一個(gè)好消息是,未來該項(xiàng)技術(shù)大概率會(huì)開源。

          TDSQL的事務(wù)處理技術(shù),已經(jīng)有一部分開源了,大家可以在github上找到3TS這個(gè)開源項(xiàng)目,該項(xiàng)目專注于事務(wù)處理技術(shù),會(huì)深入涉及與事務(wù)處理技術(shù)相關(guān)的各個(gè)層面,進(jìn)行有價(jià)值、有深度的研究和實(shí)踐。目前該項(xiàng)目下已經(jīng)開源了13種并發(fā)訪問控制算法,并提供了詳細(xì)的文檔資料。

          圖9 TDSQL未來的技術(shù)發(fā)展方向
          ?
          騰訊TDSQL和中國人民大學(xué)數(shù)據(jù)工程與知識(shí)工程教育部重點(diǎn)實(shí)驗(yàn)室期望,能用自己的實(shí)際行動(dòng),讓我們攜手完成的項(xiàng)目,為學(xué)術(shù)界和工程界做出有意義的貢獻(xiàn),推動(dòng)數(shù)據(jù)庫技術(shù)向前發(fā)展。路漫漫其修遠(yuǎn)兮,我們?cè)谂η靶兄?,歡迎加入TDSQL,一起在先進(jìn)技術(shù)的海洋中暢游。



          版權(quán)申明:內(nèi)容來源網(wǎng)絡(luò),版權(quán)歸原創(chuàng)者所有。除非無法確認(rèn),我們都會(huì)標(biāo)明作者及出處,如有侵權(quán)煩請(qǐng)告知,我們會(huì)立即刪除并表示歉意。謝謝!





          感謝閱讀



          瀏覽 14
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  欧美内射视频网站 | 欧美一级aaa | 曰韩性交云播 | 超碰人人操| 影音先锋AV一区二区三区 |