作者:李海翔,騰訊TDSQL專家工程師
“在分佈式背景下,怎麼實現雙一致性(事務一致性、分佈式一致性),並提高分佈式事務型集群的處理效率?”騰訊TDSQL數據庫長期致力於基礎研究創新,並持續獲得關鍵技術突破。
2020年12月21日,第11屆DTCC(中國數據庫技術大會)大會上,騰訊TDSQL數據庫專家工程師李海翔分享了數據庫領域的核心技術——分佈式事務處理技術的核心——多級一致性技術。該技術在遵循了ACID特性的同時,使得事務處理技術符合CAP原理,並在理論層面相較“嚴格可串行化”技術做了擴展,進一步提出了多種強一致性的完整技術。同時該技術在工程實踐層面落地了較高的性能,是同類產品Spaneer性能的4+倍,是CorchroachDB的2+倍,高併發場景下是Greenplum性能的3+倍。
這意味著,TDSQL實現了數據庫行業首個高性能的強一致性工程系統,對推動分佈式數據庫核心技術以及產業應用有著重要意義。
0. 問題的背景
科學研究,始於問題。在分佈式事務處理領域,有很多重要的問題,遠不止是2PC技術所能囊括的。例如,騰訊TDSQL目前在解決的一個複雜且是一個複合的問題如下:
事務型數據庫必須要解決的問題,是數據的一致性問題。該問題是事務ACID特性的C的問題,如果不滿足C,會有多種數據異常,如髒讀、不可重複讀、幻讀、讀偏序、寫偏序等數據異常。
而分佈式系統,遵循CAP理論,其中的C,也是“一致性”,是操作之間讀取數據的一致性。如果CAP的C不被滿足,則會出現Steal read、Immortal write、Causal reverse等一致性異常問題(如圖2所示)。
而分佈式事務型數據庫,則同時面臨以上兩類問題,如圖1所示。在分佈式事務型數據庫中,該兩類問題各自解決都有難度(例如很多數據庫像Oracle都不提供可串行化不能確保數據異常不發生、NoSQL系統為了保證CAP中的A和P而丟掉了C),更不用說協同被解決了。
圖1 多級一致性研究背景和問題
圖2 分佈式系統下存在的問題
TDSQL作為一個分佈式事務型數據庫,就面臨著如上的兩個問題疊加(分佈式一致性+事務一致性)這樣一個複合且複雜的技術問題,其難點在於保證正確性的背景下如何做到高效率,這直接影響著分佈式事務數據庫的事務處理的吞吐量(Transaction throughput)。
1. 學術界的研究與問題的複雜度
在學術界,前述問題的一種解決方式,被稱為“嚴格可串行化”,該技術可以解決掉事務的一致性和CAP的一致性引發的問題。如圖3所示(文獻《Highly available transactions: Virtues and limitations》),其中的樹根,就是事務一致性和分佈式一致性的結合點,嚴格可串行化。而樹的左子樹(事務一致性)和右子樹(分佈式一致性),是兩個獨立的系統,他們之間沒有關聯關係。
圖3 學術界對於“事務一致性和分佈式一致性的結合點”的研究(1)
從圖3也可以看出,左子樹的事務一致性隔離級別有很多種,右子樹的分佈式一致性有很多種,因此,需要系統地研究各種級別的事務的一致性和分佈式系統的一致性,才能更好的分析問題、解決問題(而不是隻考慮樹根的唯一結合點)。而如圖4告知我們,分佈式一致性有很多,圖4總結有60種左右,這為研究該項問題,帶來了複雜度。
圖4 分佈式一致性關係圖
儘管融合分佈式一致性的問題有很大的複雜度,但是這樣的攔路虎是阻止不了我們對問題深入研究的熱情和步伐的。TDSQL在前行探索中,如圖5所示,看到了方向和曙光(紅色方框處)。圖5中藍色方框,是事務中的與隔離性相關的一致性等級、和分佈式一致性,在橫軸的“Isolation(transactional)”列,對應的是事務的隔離級別,而他們相交處,是紅色方框所框住的,卻是“一片空白”。這片空白處,正是研究所未及處,也正是這片無人區,讓TDSQL的研究有了空間和舞臺。
圖5 學術界對於“事務一致性和分佈式一致性的結合點”的研究(2)
另外,業界經常提及“強一致性”,但概念混亂不清晰。文獻《Consistency in Non-Transactional Distributed Storage Systems》指出如下內容,澄清了強一致性的含義:
In a hybrid consistent system,strongoperations are guaranteed to be seen in some sequential orderbyall processes(as in sequential consistency), whileweakoperations 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.
所以,是否被“所有進程”可見,是判斷強一致性的標準,而在分佈式一致性中,只有線性一致性和順序一致性滿足強一致性的含義。而結合事務一致性,需要再滿足可串行化才能稱為分佈式事務的強一致性。
綜上所述,TDSQL所研究的問題,正是ACID的C、CAP的C,以及強一致之間的內在聯繫,他們有兩個維度的表現:一是考慮這些因素時如何保證正確性,二是在有這些因素存在影響下如何保證所實現的系統有好的性能。如果沒有好的性能,提供再強的一致性也難以實用,因此強一致性背景下實現高性能成為挑戰。
2. 產業界的實現與存在的問題
在產業界,目前只有Google的Spanner系統,實現了“嚴格可串行化”,Spanner稱之為“外部一致性”(《Spanner:Googles globally distributed database》)。該項技術在2012年發表,使得數據庫界的研究和實踐從NoSQL時代買入NewSQL時代,具有劃時代的意義。其實現的技術本質,是把分佈式中的線性一致性和事務一致性的可串行化相結合,從而實現了“嚴格可串行化”。
圖6 工業界對於“事務一致性和分佈式一致性的結合點”的實踐
但是,Spanner的實現,存在一個問題:正確性能夠保證,但性能低下(如圖6所示的事務吞吐量的計算公式)。因此,該系統具有象徵意義。而實踐中,對於需要在金融級的事務處理場景中,其性能不符合要求。
3. 騰訊TDSQL的多級一致性技術
TDSQL深入研究了分佈式一致性問題,解決了一些技術難題。例如圖7,線性一致性有多個子類,那麼線性一致性和事務一致性結合時,是否應該有多個級別的“嚴格可串行化”?再如,為什麼順序一致性可以和可串行化結合而能確保強一致性?這些問題,都需要在理論層面加以證明,然後才能遷移到工程系統中指導工程實現。
圖7 線性一致性的定義
在深入研究了ACID的C和CAP的C以及強一致性之後,TDSQL團隊通過一致性建模技術,從概念、模型、基於模型的操作、事務模型框架、數據結構和高效算法設計等多個角度,基於TDSQL和Greenplum實現了“多級一致性”技術(基於Greenplum目的是為了便於和業界的產品實現對比發現問題),該技術在正確性方面,給出了滿足強一致性的線性可串行化、順序可串行化級別的定義和證明等,使得前述的事務一致性方面的數據異常如寫偏序、分佈式一致性方面的分佈式異常如Steal read等問題被消除。而在性能方面,有著優異的表現。
該技術在Google雲上對比測試了Spanner的性能,對比測試了業界知名的NewSQL系統CorchroachDB、對比測試了原生的Greenplum,均獲得了較好的結果,如圖8所示(TDSQL的多級一致性:SER-L,線性可串行化;SER-S,順序可串行化),從多個角度驗證對比了TDSQL多級一致性的性能,在圖8中給出部分實驗數據。圖8的實驗分為4個層面進行了對比:
對比Spanner的性能:圖8左上角的子圖,同樣性價比的同等資源情況下,TDSQL的多級一致性是Spanner性能的4+倍。
對比CorchroachDB的性能圖8左下角的子圖,同樣硬件測試環境下,TDSQL的多級一致性是CorchroachDB性能的2+倍。
對比原生的Greenplum的性能:圖8右子圖,硬件測試環境下,TDSQL的多級一致性是原生的Greenplum性能的3+倍。
存在一定程度的網絡延時的情況下,TDSQL多級一致性的性能表現:圖8右子圖,還測試在分佈式環境下,當網絡存在1.5ms和5ms的延時情況下,高併發場景下的TDSQL多級一致性技術,依然好於無延時情況的Greenplum的RC隔離級別的性能,這表明具有更高一致性的隔離級別可以做到更好的性能(CorchroachDB早期版本實現了快照隔離和可串行化,但在新版本中,只保留了更嚴格的可串行化級別,大家可想想為什麼呢?)。
圖8 TDSQL多級一致性技術性能驗證
4. TDSQL多級一致性工作的意義
TDSQL多級一致性的研究與實踐工作,有幾個價值:
第一個實現多種強一致性的工程系統:在目前已知的系統內,實現強一致性的只有Spanner和TDSQL;實現多種級別的強一致性系統,只有TDSQL。這對於深入實踐強一致性系統,有著榜樣的作用,我們可從中知道,工程實踐中,該方向的理論是可行的。
第一個高性能的強一致性工程系統:確保正確性的系統,未必能夠有效運用到實際的環境中,因為高性能是衡量一個系統的核心指標。而多種強一致性下的TDSQL,有著可以滿足實際應用的性能。在無任何數據異常和一致性異常出現的情況下,用戶不必再擔心數據或操作出現意想不到的問題,但卻可以享受極佳的性能體驗,這表明,工程實踐中,該技術落地是可行的。
我們期待,序幕拉開,真正的強一致性系統將如雨後春筍……
5. 未來工作
一個好消息是,未來該項技術大概率會開源。
TDSQL的事務處理技術,已經有一部分開源了,大家可以在github上找到3TS這個開源項目,該項目專注於事務處理技術,會深入涉及與事務處理技術相關的各個層面,進行有價值、有深度的研究和實踐。目前該項目下已經開源了13種併發訪問控制算法,並提供了詳細的文檔資料。
圖9 TDSQL未來的技術發展方向
騰訊TDSQL和中國人民大學數據工程與知識工程教育部重點實驗室期望,能用自己的實際行動,讓我們攜手完成的項目,為學術界和工程界做出有意義的貢獻,推動數據庫技術向前發展。路漫漫其修遠兮,我們在努力前行中,歡迎加入TDSQL,一起在先進技術的海洋中暢遊。
12月23日19:30
TAPD團隊的小萌
將結合研發過程中的具體場景分享
如何基於TAPD實現團隊敏捷研發度量
轉載請超鏈接註明:頭條資訊 » 首次揭秘:騰訊TDSQL分佈式多級一致性數據庫系統技術
免責聲明 :非本網註明原創的信息,皆為程序自動獲取互聯網,目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責;如此頁面有侵犯到您的權益,請給站長發送郵件,並提供相關證明(版權證明、身份證正反面、侵權鏈接),站長將在收到郵件24小時內刪除。