企業TP+AP需求如何解決?騰訊雲提供HTAP架構全鏈路閉環方案

伺服器頻道 發表於 2021-11-25
騰訊

在動輒談雲原生資料庫、分散式資料庫、圖資料庫、時序資料庫等新潮名詞的時候,在資料庫領域再談TP和AP,過時了嗎?答案是沒有。作為資料庫的兩種基本型別,以前TP、AP是分開場景來算,必須做選擇,魚和熊掌不可兼得。而現在,為應對大規模事務和分析型需求,TP&AP融合成為近幾年資料庫技術發展的重要方向之一。

但是,構建HTAP資料庫面臨著資料一致性和計算實時性等挑戰。如何有效解決HTAP落地問題,在一個生態內同時支援TP與AP的工作負載?騰訊雲資料庫總經理林曉斌與筆者分享了騰訊雲HTAP資料庫解決方案,並詳細解讀了HTAP資料庫應用實踐場景和未來發展趨勢。

如何打破事務處理和分析之間的“牆”?

針對HTAP這一話題,其實業內早有探討,並不新鮮。作為混合OLTP和OLAP業務同時處理的系統,2014年Gartner公司給出HTAP嚴格的定義:混合事務/分析處理(HTAP)是一種新興的應用體系結構,它打破了事務處理和分析之間的“牆”。它支援更多的資訊和“實時業務”的決策。

“HTAP不是新課題,但確實是我們現在碰到的一些更具有挑戰性的問題之一,這個也和時代有關”。騰訊雲資料庫總經理林曉斌認為,隨著要處理的資料量越來越大,尤其是百億級別的資料已經出現,同時,對資料分析的需求開始增加,實時性要求越來越高,資料量變,對計算要求就變高,客戶需求越來越嚴苛,HTAP已經成為一個挑戰。“第七次人口普查,給應用後臺分析來說時間是非常短的,整個資料量非常大,我們也越來越深刻的感覺到HTAP這種解決方案的挑戰。”

為什麼需要HTAP?“如果用一句話來說,HTAP就是一個生態內需要支援TP和AP的工作負載”。在此之前的大部分業務部署中,大多會把TP和AP分開,在中間可能有ETL或者流複式的技術將兩套系統進行互動。但更理想的情況是可以在一套系統中同時完成兩種業務型別的支援。騰訊推出的HTAP就是從具體的需求出發,更偏向於TP,同時兼顧了比較好的AP處理能力,在一套系統裡儘量做到比較好的相容。林曉斌從延遲、併發、吞吐、一致性四個方面做了詮釋。

首先是延遲。針對的是資料庫中需求寫下去的反饋時間,目前基本都能達到毫秒級。作為HTAP系統,TDSQL 支援行列混合儲存的。行儲存是TDSQL的基本儲存格式,為了支援高效的OLAP,TDSQL也提供了完整的列存混合儲能力,業務可以根據自己的需要對寫入資料庫中的資料選擇需要的儲存格式。TDSQL 的列儲存能力包括兩種,其一是輕量式壓縮。第二種是透明壓縮,可以在大量查詢分析的時候減少IO訪問量,提升查詢效率。林曉斌透露,在第七次全國人口普查系統案例中,TDSQL的異構庫海量資料同步延遲達到分鐘級。

其次是併發。如果使用者需要在事務或者併發交易量上有要求的話,就需要一套比較好的分散式事務的系統。併發經過多年的發展其實有多種演進方案,AP系統如果一條一條寫的話效能支撐是不夠的,如果併發寫的話,序列構建AP的資料,可能十萬行資料,延遲就很明顯。TDSQL 支援MPP架構,支援平行計算。此外,TDSQL 在高速平行計算方面從三個層級:節點級、程式級以及指令級並行進行優化,從而滿足複雜查詢、實時計算的高效能要求。

另外是吞吐。AP系統儲存比較好,尤其是查詢能力或者單點併發,而OLTP的資料量相對較小,很多中小型的系統都不會達到TB級的資料量,但對事務的要求和查詢請求的要求會比較高,吞吐達到百萬級TPS以上。TP系統需要跟上AP的吞吐能力和一致性,GTM是TDSQL 叢集中負責處理事務資訊的模組,它的處理能力直接決定了系統的事務吞吐量。而且GTM是系統中唯一的單點,它的處理上限直接影響到系統處理能力的天花板。為此騰訊雲資料庫團隊對 GTM進行了專門的優化和設計。主要集中在網路頻寬、CPU使用率、系統鎖以及免鎖佇列四個方面。

最後是一致性,這裡指的不是落地就一定能實現的最終一致性,而是是強一致性這個挑戰。TDSQL 團隊通過一致性建模技術,從概念、模型、基於模型的操作、事務模型框架、資料結構和高效演算法設計等多個角度,基於TDSQL實現了“多級一致性”技術,該技術在正確性方面,給出了滿足強一致性的線性可序列化、順序可序列化級別的定義和證明等,使得前述的事務一致性方面的資料異常如寫偏序、分散式一致性方面的分散式異常如Steal read等問題被消除。而在效能方面,有著優異的表現。

“HTAP系統可以解決TP與AP之間的資料同步鏈路,但也有種聲音擔憂HTAP系統做成大鍋匯,出現TP效能不如純TP,AP效能不如純AP,這其實是取決於實現形式,還有內部的實現機制。”林曉斌表示,作為資料庫服務提供商,系統應該提供很多靈活的能力。比如騰訊雲資料庫的實現模式就是TPSQL,從整個架構來說TPSQL加DPS再加一個AP引擎,在這種情況下,即使一個使用者要求TP毫秒級的響應,AP可以到分鐘級的響應,這個時候其實可以做到,TP的多個節點用強一致發揮,但是AP非同步同步。

提供從源到端的全鏈路閉環方案

“當前HTAP有幾種不同的方案,有很多把HTAP做到整個系統的資料庫,基本上認為把元件擴充套件外延搭積木,整個基本流程變化不大。還有一些解決方案直接在TP系統上做分析,另外一個思路上是直接在AP系統上增加TP能力,目前來看沒有很成功的案例。”林曉斌表示,當前的HTAP系統解決方案主要有兩大痛點,一是TP與AP之間的資料同步鏈路,在實時性和穩定性之間不好把握,舉例來說,匯入太快,會造成AP端負載較高,影響查詢效能。而匯入太慢,帶來的延遲性較大,實時性不免受到影響。二是資料一致性方面缺乏完整的方案。包括UPDATE/DELETE的同步、DDL語句的同步以及水平擴容過程中的資料一致性等等。

如何解決這些痛點?林曉斌認為,應該是提供源到端的全鏈路閉環。使用者視角來說就是一個入口,一個出口,甚至入口和出口做到同一個,降低接入的難度。騰訊雲資料庫的思路就是提供一整套穩定的解決方案,讓使用者感覺到使用一致性的同一個系統,將資料同步、延遲、一致性校驗等工作去實現。

該方案可以實現系統的穩定性。在源端,通過無鎖遷移與binlog訂閱從TP節點同步資料,從而降低TP節點的影響,在AP側通過修改核心,增加更多的觀測指標與診斷資訊。AP系統單獨寫入非常慢,一行一行寫可能一秒寫兩三萬,而DTS通過批量寫入的方式,提高AP系統的吞吐量,可避免高頻寫入對AP造成的負載衝擊;系統通過核心暴露的關鍵指標(比如小檔案個數,請求負載等),自動調節批量的大小與寫入的頻率,實現寫入的自動擁塞控制;AP系統一方面把資訊暴露給外面,一方面保證AP系統能寫進去,也不會導致浪費。而系統知道能接受多大的寫入量,用這種方式來調節視窗。而DTS後續會通過旁路寫入的方式,進一步提升AP節點寫入的穩定性。

“在寫入資料的時候通過不同資料型別做區分,有些資料是實時的,需要強同步,可以寫進系統以後進行同步,超過80%的資料應用是可以接受TP寫完,通過AP旁路方式寫進去,保證最終一致性。”林曉斌介紹,通過讓DTS和AP、TP系統形成聯動,避免出現黑盒,這樣調整的能力就比較高,可以通過這樣的方式實現系統的穩定性。

其次,實現資料的一致性。資料一致性要求自動對映,在生產系統裡常規資料寫入,資料庫裡面有邏輯日誌,這些日誌可以環節資料的內化,可以同步到系統當中。實現資料的一致性,對TP系統有一類調整,第一是資料型別的挑戰,第二是系統做遷移的挑戰,另外AP系統本身也有擴容的需求。在這個過程中,實現業務寫入和讀取資料能夠實現無感知,常見做法是先有一個AP,設定節點,然後再進行擴充套件,做資料同步和拆分。騰訊雲在探索一些本地擴容的方法,實現AP叢集的一致性水平擴容。

對於HTAP的服務未來如何發展?林曉斌表示,後續可能增加新的角色,管理所有的節點,包括對整個叢集的資訊結構的控制,做統一管理。其次是加入節點和水平過載過程中,叢集統一管理實現從源到端的閉環。“這個路線需要更多的細節的把握和優化,核心的點還是AP系統怎麼無縫的接到整個體系裡,把內部資訊暴露出來提供給整個系統的能力,最終保證系統的穩定性,這是這個系統最大的挑戰。”

時代呼喚應勢而為、勇於擔當者。把握關鍵之年,做好對全行業有益的事情,這樣的擔當彌足珍貴。林曉斌表示,雖然接下來挑戰重重,而且技術不斷變換,但HTAP是一個可以深耕的領域,又可以明確感知到在生產或者生活領域的系統當中,需求一直存在,騰訊雲資料庫的努力和貢獻也就一直會在。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545803/viewspace-2844166/,如需轉載,請註明出處,否則將追究法律責任。