選單

首次揭秘雙11雙12背後的雲資料庫技術!|Q推薦

從 2009 年到 2021 年,從千萬交易額到千億交易額,雙 11 已經開展了 12 年。如今,每年的雙 11 以及一個月後的雙 12,已經成為真正意義上的全民購物狂歡節。剛剛過去的 2021 年雙 11,就有超過 8 億消費者參與。

與攀升的交易額和參與人數相反,雙 11 的主要陣地“淘寶 APP”、雙 12 的主要陣地“天貓 APP”的崩潰情況逐年減少近無。在此基礎上,淘寶及天貓還在不斷吸收來自消費者的反饋,最佳化功能,比如在 2021 年開始支援購物車實時顯示券後到手價、搜尋已經購買過的訂單……應用上大量的操作請求流轉到技術後臺,給資料庫帶來了不小的壓力。

是什麼樣的資料庫撐起了 2021 年的雙 11 雙 12 的穩定進行?《資料 Cool 談》第三期,阿里巴巴大淘寶技術部雙 12 隊長朱成、阿里巴巴業務平臺雙 11 隊長徐培德、阿里巴巴資料庫雙 11 隊長陳錦賦與 InfoQ 主編王一鵬,一同揭秘了雙 11 雙 12 背後的資料庫技術。

首次揭秘雙11雙12背後的雲資料庫技術!|Q推薦

讓熱點秒殺真正意義上實現“拼手速”

秒殺作為電商中的常見業務場景,在淘寶上如今也是一個常態化的業務,比如每天晚上 8 點手機淘寶上搶茅臺的活動。但是這種活動在早年間,其實並不容易穩定進行。當海量的資料瞬間湧入,對系統造成脈衝式的衝擊,一下子就會把系統打掛。這個時候使用者看到的就是頁面掛了。淘寶開始考慮透過加入排隊能力,解決系統秒掛的情況,但在使用者側會看到頁面在轉圈圈後顯示搶購結果,體驗感並不好。

在雙 11 雙 12,這種方式的弊端會被進一步放大。資料顯示,在雙 11 秒殺系統中,秒殺峰值交易資料每秒超過 50 萬筆,是一個非常典型的電商秒殺場景。在 0 點那一刻下單爆發後,隨著第一波下單的完成,消費者很快開始重新逛淘寶。在逛的過程中,消費者往往會選擇多個商品後才會下單,所以逛的流量遠遠要比下單的流量高。當有千百萬個消費者一起在逛的時候,會數量級地放大資料庫讀鏈路的查詢壓力。

在資料庫層面,往往一個商品 ID 對應資料庫內的一行記錄。消費者下單那一刻核銷資產或者卡券,在關係資料庫裡被稱為完成了一個事務。為了保證在這樣的大促尖峰能夠支撐逛的高併發,阿里雲在資料庫的選擇上經歷了從開源 MySQL 到 AliSQL 的迭代。

體現在業務層面,消費者如今參加秒殺活動,無論是否是雙節的大促高峰期,瞬時就可以得到搶購結果的反饋,不需要等待。在資料庫層面實現搶購公平,意味著秒殺活動已經是真正意義上的“拼手速”的事情。

事實上為了保證穩定,往年雙 11 為了保證大促高峰能夠平穩地過去,在一些計算量比較大或者穩定性風險比較高的地方就會實行降級策略,確保能夠平穩度過流量高峰。2021 年開始,阿里巴巴更強呼叫戶體驗,所以“必須蹚過這些難關”就是對資料庫團隊的要求。朱成談到:“這裡面就需要涉及到很多基礎鏈路的改造,只有資料庫能力的提升才能夠做到。”

在 2021 年雙 11 雙 12 中,有一種無所不在的技術力保證了整體系統的穩定,如 PolarDB 具備的極致彈性、海量儲存和高併發 HTAP 訪問的產品特性。值得一提的是存算分離方面,阿里巴巴將神龍 ESC、ESSD 和 PolarDB 的檔案系統的技術棧能力組合,能夠實現減少核心層面一些沒有意義的開銷,讓很多資料庫層面的操作不透過作業系統轉換就能直通硬體。僅這一環技術能力的提升,在業務層面能縮減交易訂單庫的叢集規模 40% 以上,提升實時分析型業務資料流轉效率 30%。開源屬性,也將為 PolarDB 帶來更多的想象空間。

除了秒殺場景流量峰值的情況,在日常的業務中,還是需要低成本維持業務穩定性,這就要求資料庫儲存機頭能夠實現升降配。“大促的時候用比較高規格的儲存機頭,就是計算儲存節點,一些熟悉資料庫朋友的可能把它定義為引擎層、執行層,那是一個高規格的資料執行節點,但是我在日常不需要這麼好的節點,就意味著它有個升降配的過程。在沒有儲存計算分離之前做這個操作,其實是一個挺耗時間的操作。其實降機頭的操作就意味著有點像帶管的摩托車,只不過馬力大一點,馬力小一點的問題,不同場景,我再換不同規格的摩托車機頭。”徐培德談道。

讓到手價在購物車中清晰可見

當穩定成為常態,業務層的訴求開始被逐一滿足。朱成表示,以前消費者更強調買買買,現在則更喜歡逛逛逛,有兩個明顯的訴求,一是價格能夠更加清晰,知道這個東西到手價是多少、券後價是多少,二是使用者希望一個訂單裡面可以支援多個地址,可以在一鍵下單的時候享受更多的優惠和折扣,達到最高的價效比。

券後到手價的實現依賴資料庫兩方面的能力,算力和資料存取。如果僅僅依靠 RDS 去做升配或者擴容,成本將難以預估。資料庫作為底層產品,重要的三個指標就是成本、效率和穩定性。在做產品選擇時,需要系統考慮這三個指標。因此,阿里巴巴資料庫團隊推出了 Tair 記憶體資料庫。“Tair 在此之前,不管是用作快取還是持久儲存,更多是 KV 類資料結構。但是我們需要的是一種關係型的、結構化的存取能力,所以 Tair 推出了 SQL 模型,我們稱之為 TairSQL,一個關係型的記憶體資料庫,用一個比較低的硬體成本,來提供一個高效能的讀寫併發能力。”徐培德介紹道。

當消費者在逛的過程中,一旦下單,卡券就會核銷或者凍結,資產狀態隨即更新到 TairSQL 中,對於異構資料來源間低時延提出了更高要求。與此同時,使用者資產的資料量非常大,如果全用記憶體,那整體儲存成本非常昂貴。“高效能、大容量、低成本的要求,看似很難平衡,但這在 Tair 上得到了很好的解決。Tair 近幾年深耕的持久記憶體技術很好匹配了當今眾多的類似場景,也就是在雲上正在售賣的 Tair 持久記憶體形態(Tair-PMEM)。今天 Tair 採用持久記憶體之後,做到了每個操作都持久化,效能吞吐幾乎與記憶體持平。同時整個儲存的空間透過新型的硬體,容量可以提升一個數量級。”陳錦賦談到。

也就是說,PMEM 和 Tair 的結合,實現了超大記憶體儲存,能夠將消費者平臺紅包、店鋪紅包、平臺優惠券、店鋪優惠券、店鋪會員折扣、店鋪限時折扣等幾十項資產進行持久化歸一儲存,讓業務在計算價格時,可以從一個地方獲取所有資料。此外,Tair 記憶體資料庫整體架構採用 share-nothing 架構,併為使用者提供了分割槽單執行緒 ACID 能力。在水平擴充套件的叢集中,每個節點服務數十個分割槽,每個分割槽使用單獨執行緒響應的事務處理模型避免了鎖競爭的開銷。據悉,在大促場景下,Tair 提供了幾乎直線般的 P99 訪問延時。

讓歷史訂單能夠實時檢索

第二個被滿足的業務層訴求就是雙節期間歷史訂單能被實時檢索。這個功能也是過往在大促高峰時會被降級的功能。淘寶發展至今,累積了大量的歷史訂單資料,在做好這些資料儲存的基礎上還要實現精準地檢索,並不是一件容易的事情。使用者的訂單檢索依賴的是模糊匹配功能,僅依賴資料庫很難實現精準檢索的體驗。一方面,資料庫需要對消費者輸入的關鍵詞語義進行高相關性的匹配,比如搜尋一個茶杯帶回的資料包括茶杯和茶具。

這樣的描述很容易讓技術人聯想到搜尋引擎。搜尋引擎的確在功能上能夠滿足這些訴求,在技術上也非常成熟,但是應用在企業內部僅為了實現這一項功能,成本太高。“特別在阿里內部的話,為了給使用者一個比較及時體驗,他幾乎可以認為他的索引是全記憶體狀態去儲存的。”徐培德談道。發展近 20 年,淘寶積累了千億級別的訂單數量,“千億級別的訂單量的索引列,全部丟進記憶體的話,我的機器成本肯定是兜不住的。”

最終,阿里巴巴團隊和資料庫團隊一起選擇了 ADB(AnalyticDB),早在 2015、2016 年就可以透過離線的方式將資料輸入,透過 Ad Hoc 即席查詢,不僅能保證訂單新增不受影響,還具有豐富的檢索相關性排序。2019 年 7 月,分析型資料庫 ADB 3。0(AnalyticDB for MySQL 3。0) 釋出,高度相容 MySQL 協議以及 SQL:2003 語法標準,支援對海量資料進行即時的多維分析透視和業務探索,快速構建企業雲上資料倉庫。在 2021 年的雙 11 雙 12 中,ADB 3。0 真正實現了無論是否在峰值場景,都能讓歷史訂單實時檢索。

具體而言,ADB 3。0 解決了三方面的問題:

全量資料遷移與實時同步。DMS 庫倉一體化架構,藉助 DTS 高效傳輸能力,將 MySQL 全量資料遷移至 ADB,並保持實時同步。

行級儲存能力。ADB 儲存格式採用行列混存的 PAX 格式,能夠提供高效的基於行號的隨機查詢能力,又可以按照 Chunk 粒度切分讀取的並行度,多 Chunk 並行掃描,提高離線讀吞吐效能,兼顧線上低延遲查詢和離線高吞吐場景。

自適應索引。在應對訂單搜尋需求隨時變化的情況下,ADB 自研自適應索引框架,支援字串 InvertIndex、點陣圖索引、KDTree 索引、JSON 索引和向量索引五種索引型別,列級不同型別的索引可以支援多種條件(交、並、差)的任意組合,相比較傳統資料庫,無需手工構建組合索引,且支援 OR/NOT 等更多條件的索引下推。

如今,ADB 3。0 讓阿里巴巴拿到了訂單搜尋業務上的高滿意度,相比 2020 年的單項客訴量降低了 86% 左右。在陳錦賦看來,雲原生資料倉庫 ADB3。0 很大的一個價值部分在於能夠實現資料的線上化實時化,能夠挖掘到一些目前還未被發現到的商業價值。“那這背後對於一個新的資料庫產品型別的要求,實際上整個業界大家都是在探索階段。”

寫在最後

雙 11 雙 12 背後的資料庫技術支援遠不止於此。一個訂單達成交易的背後,資料庫層面有近 50 次請求的實現,遠不是一款單一的資料庫產品提供的支援。雙 11 雙 12 豐富的運營活動和千億交易額背後,資料庫層面是包括 RDS、PolarDB、Tair、ADB(ADB3。0) 以及 Lindorm 等資料庫產品提供的組合技。2021 年是阿里巴巴首個雲上 100% 上雲的雙 11 的一年,也是阿里雲資料庫全面雲原生化的一年,但是峰值計算成本相比 2020 年下降了 50%,雲資料庫巨大的商業價值和潛力可見一斑。雲原生資料庫未來的優勢和帶來的價值,也將超過資料庫本身。