每隔一段時間,TiDB 會發布一些關於架構演進的大新聞。比如 2020 年的 TiFlash 和 HTAP,2021 年的 MPP,比如今年的 TiDB Cloud。在靠近年底時,我們很高興又有大新聞可以跟大家說: TiDB Serverless 內嵌下一代雲原生架構上線了 。
面向經濟適用場景
一直以來 TiDB 都是面向大體量關鍵線上業務而設計的,這使得我們的產品定位也偏向這類場景。 而實際上,作為一個通用型資料庫,除了大體量關鍵業務之外,TiDB 也在無數使用者的非關鍵或者中小規模場景發揮著巨大作用。 例如歷史資料查詢,實時資料服務和洞察,溫資料儲存,SMB 場景等,這類場景無疑和關鍵線上業務的看點與需求都有相當大的不同:例如對成本更敏感,儲存和計算資源比更大,更看重彈性以及按需伸縮等等。TiDB 單一產品要兼顧這些不同的場景,會顯得力有未逮且定位模糊。現在我們新推出的 TiDB Serverless Tier 正是為了解決這個問題而設計的。
新雲原生和 Serverless Tier
雲原生一直都是諸多資料庫廠商發力目標,但非常少有人能解釋清楚何為雲原生。作為資料庫廠商之一, 我們認為雲原生意味著藉助雲上基礎架構提供遠強於私有部署的能力 。例如雲原生架構的先驅之一 Snowflake, 藉助雲物件儲存和虛擬機器資源池,提供非常低成本的儲存以及非常彈性的計算能力,這是任何私有部署的資料倉儲平臺完全無法企及的「超能力」 。將儲存委託到雲端物件儲存使得資料庫擁有超高的可用性和永續性,但與此同時也需要仔細處理隨之而來的高延遲。因此,重度依賴 S3 作為儲存之前都是分析型資料庫的專屬設計。但 TiDB 邁出了全新一步。 TiDB 在新的雲原生架構下,原創性地藉助由本地快取輔以便宜可靠的物件儲存作為主存實現了更低成本,更具彈性,甚至更高效能的儲存架構。 TiDB 在原有架構中,資料是分別儲存在各個 TiKV 的 RocksDB 中,每次寫入會透過 Raft Log 向各個副本同步。在新架構中,資料在保留原有的 Raft Log 傳輸機制確保快速寫入的基礎上,將經由 S3 來同步不同副本的持久化資料,這種設計在不引入更高延遲的前提下,獲得了諸多雲原生特有的優勢。 另外,計算資源則由池化的虛擬機器提供資源,這使得計算節點(TiDB 和 TiFlash)隨時可以按照負載彈性變化。 更少的消耗 在新的架構中,TiKV 的寫入不需要在多個副本之間重複應用,而只需改變主副本並經由物件儲存向其餘副本擴散,這使得寫入的 CPU 消耗由三倍大幅減小到略高於一倍,整體儲存層可以達到 30% 乃至 50% 的 CPU 效率提升(或者理解為成本下降)。
更高的穩定性,更少的資源預留
由於主存改為共享的物件儲存,在新架構下,諸如 LSM 整理、Analyze Table,Add Index,甚至 BR 等以往間歇性干擾正常作業的操作,得以委託到獨立的微服務中,按需獲取資源並執行。以往,使用者需要為此 預留 1/3 ~ 1/4 資源 ,而在新架構下則不再需要這些預留,且效能將更穩定。與此同時,由於無需兼顧業務穩定,諸如備份等重量級操作,可達數量級的速度提升。
對溫資料儲存更友好
在新設計中,不同 Region 不再共享同一顆 LSM 樹,從而大幅降低了層數,提升了讀寫效能,且能承受遠超以往的 Region 大小,降低 Raft Region 相關的維護開銷。這也使得單 TiKV 節點的儲存容量上限可遠大於現有的 4T 上限,對於溫資料儲存場景,我們可以選擇更少的單節點 CPU 以及更大的儲存( 1~2倍存算配比提升 ),大幅節省單位儲存所需計算資源。
超高的彈性
在以往設計中,TiDB 計算層的彈性較為容易實現,但儲存層擴縮容實際需要經由 Leader Region 向目標節點寫出副本資料以實現搬遷。由於這個動作需要佔用一定量的資源,因此我們不得不限定副本遷移的速度以防影響線上業務的執行。而在新架構下,資料存放於幾乎可視作無限頻寬的物件儲存,資料均衡將僅僅受限於節點本身的入口頻寬,這使得儲存層擴縮容可以以 原本 30 倍甚至更快 的速度完成。這大大提升了 TiDB 應對更頻繁流量漲跌的能力,也使得使用者可以真的僅僅為所需的負載規劃資源,例如,白天和夜晚使用不同量的資源以大幅降低成本。除此之外,在 Serverless 下 TiDB 配合資源池將更好地提供基於負載的資源彈性伸縮,使得低負載時無需為空轉的資源付費。
所以?這又如何?
TiDB 在大家認知中,往往更合適中大型規模的資料量(TB 規模以上),畢竟如果單機 MySQL 所能處理的規模下,之前的 TiDB 設計並不具備更好的效能和價效比;此外,雖然具備不錯的彈性,但我們也經常遇到使用者白天和晚上短時間內的負載有非常大差異,但叢集卻無法快速伸縮以節省資源的例子;而在中低負載下的溫資料儲存場景,TiDB 的固有消耗也使得部分使用者對其保有成本有所顧慮。 但在新架構下,Serverless Tier 提供了一個更好的選擇 : 它在業務啟動負載較低的情況下提供了優於 MySQL 的價效比,獨特的 HTAP 能力而無需建立複雜的分析平臺,內建的高可用而無需擔心業務連續性;而隨著業務的不斷增長,使用者也完全無需重新規劃和選型新資料庫,TiDB Serverless 可根據負載上升持續提供良好的效能和彈性的資源。 無需為未來可能的業務增長預先墊付資料庫支出,這在當前的經濟環境下,是一個值得考慮選擇 。
歡迎品嚐
針對 5 GB 以下的小規模應用,新的雲原生架構搭配 Serverless 已經在 TiDB Cloud (AWS)以免費的形式提供給廣大使用者, 點選文末閱讀原文即可註冊 TiDB Cloud 體驗 Serverless Tier 。而如果你想嘗試更大規模場景,歡迎直接聯絡我們 ,在「PingCAP 訂閱號」後臺回覆 【serverless 交流群】 可以加入微信群與我們討論。