閱讀819 返回首頁    go 騰訊雲


電商月將至,騰訊雲DCDB助力電商企業應對支付洪峰

第34屆中國數據庫學術會議(NDBC 2017)已於2017年10月20日至22日在浙江大學舉辦。本次會議,騰訊雲帶著其分布式數據庫DCDB(內部代號TDSQL)亮相大會,向全國600餘名數據庫技術的研究者、教師、同學和開發者展示了騰訊雲的數據庫技術。

浙江是中國電子商務大省,騰訊分布式數據庫DCDB(內部代號TDSQL)恰好是解決類似於電商、O2O的訂單交易、購買支付場景的利器。

為什麼說DCDB適用於電商、02O等業務呢?眾所周知,電商等互聯網模式和碎片化的行為,無異給核心交易數據庫帶來巨大的挑戰。即使是某些銀行高大上的業務係統,其平均TPS約在10000,常規峰值約1倍;而在互聯網場景中,任何智能設備都是交易終端,加上電商等經常出現限時搶購、秒殺等運營活動,無論哪種活動,從數據庫角度就都意味著短時間並發和請求總量都遠高於正常水平若不做好措施,結果就是花錢推廣,反而砸掉自己招牌。通過總結,互聯網場景的交易係統數據庫可能經常遭遇以下情況:

(1)峰值超過正常值數倍的業務請求。

(2)秒殺等場景將帶來大量的線程影響性能。

(3)故障是常態,如何確保故障數據不錯不丟,且不影響全局。

(4)性價比是業務重要考量點。

峰值超過正常值20倍以上的請求洪峰:

以騰訊米大師對接了騰訊內外十餘萬業務的支付交易,這些業務會不定期發布營銷運營活動,如電商大促、春節紅包、國慶獻禮、遊戲推廣等。在2016全年出現了30多次均值5倍的請求洪峰, 有5次甚至超20倍。下圖為近期某業務做午間大促,導致整個平台請求量勐增1倍(藍線是上一日對比數據,紅線是當日數據)。

類似問題也是電商等業務常見場景,而米大師的經驗是,除了通過架構將支付係統按場景、業務、流量進行解耦,利用雲的彈性(和雲的冗餘資源池),在活動時快速自動的部署業務服務器。並區分業務單元域(SET)部署,前置調度,做分流和異常隔離和緩存外,采用支持水平拆分的分布式架構的數據庫。

因為數據庫本身無法像邏輯層一樣做隔離請求,而將幾張大表水平拆分(分表)。能夠讓數據庫可以隨時橫向擴展,因此平時隻需要在性能方麵預留一定冗餘,確保偶發性小峰值並不影響整個數據庫性能。如果遇到可預見的超高峰值,例如年度大促、春節活動等,由業務部門決定是否進行水平擴容。當然,分布式數據庫的原來使得水平擴容十分簡單,而且通過自動再均衡方案,擴容可以僅影響集群中的少數節點,而其他節點可以在擴容時仍然正常運行不會受到影響。

熱點更新技術,從容應對秒殺等場景:

“秒殺”場景下,大量的用戶在極短的時間內請求少量商品。在數據庫中,一個商品是一行存儲,所以秒殺會導致大量的線程來競爭InnoDB行鎖,當並發度越高時等待的線程也會越多,導致TPS下降RT上升。這會導致什麼問題呢?要麼秒殺時,搶購一個商品但整個平台出故障;要麼就出現100個庫存賣出去105個等各類異常。

當然,業內也有一些從數據庫層麵的解決方案,例如:把熱點商品放到單獨的熱點庫中;通過緩存係統(如Redis/消息隊列等)緩存熱點請求;或讓業務層將lastmodifytime修改的多條SQL合並減少update。

而騰訊熱點更新功能,是通過一個全局HASH表存儲有INSERT/UPDATE請求的熱點對象,製定熱點SQL請求過來時,先查找HASH表中有無對應的熱點對象,有就獲取lock,會被阻塞;沒有該熱點對象,那麼創建該熱點對象的方式進行。這種方案通過簡單擴展SQL語法和參數,使得業務不改變架構,僅需修改幾行SQL的情況下,便可以快速應對秒殺等場景(原理如下圖)。當然,配合緩存使用,可以進一步為業務提高性能,減少擊穿的概率

根據測試,我們發現應用和不應用的熱點更新技術會的效果差異非常明顯(測試數據如下圖)。

故障是常態,重要的是如何應對故障:

如果您的業務是規模比較大,那麼無論是網絡、硬件、軟件或人為的故障都是難以避免。因此,數據庫係統必須做到以下幾點,才能盡可能小的影響業務

隻有保障數據強一致了才能保證故障切換的時候數據不錯不丟。

故障能不能影響全局,且盡量做到業務無感知。

支持同城雙活、兩地三中心等架構

立體組合的監控係統,能快速判斷故障,定位問題。

必須要有風險控製策略等措施保證數據安全

而騰訊分布式數據庫DCDB發展了13年,早已默認數據強同步複製,任何節點故障,隻要是已應答均可保證數據不錯不丟。也可設置多種同步方案,不同的業務數據庫采用不同複製策略以求在業務邏輯和數據一致性之間平衡。

分布式架構,也使得DCDB任意節點故障,並不會影響全局,且每個從節點都可用做隻讀訪問。在某些僅軟件故障的場景, DCDB的保持連接技術,可用軟件故障,確保邏輯層(TProxy)和數據庫連接不斷開,且自動重發失敗請求。此時業務是來說,感受就是某個請求時間稍長;即使是數據庫事務,或自動回滾,或直接報錯,數據不會錯亂的。

由於DCDB的設計之初就是應用於騰訊內部金融支付類業務,因此同城雙活、年底三中心對其來說早已成熟,常用方案如下圖:

通過對係統從硬到軟、從模塊到流程、從係統升級到常規運維的立體化監控,並結合 “自愈”能力,可讓99%常見故障自動解決,僅1%的故障需要人工幹預,自動化的流程極大提高了故障修複響應效率。

當然,DCDB也是騰訊首個將完整的信息安全要求和風控體係做到整個數據庫係統中的產品之一。包括業務和運維係統,我們提供惡意打擊、稽核、實時風控等能力;在數據庫層麵,也提供了安全審核平台,數據庫防火牆等一係列安全能力。

此外,成本控製是互聯網企業成功的要素之一,如果是采用商業數據庫,先互聯網這種體量成本將是天價。而采用基於開源協議的分布式數據架構DCDB和騰訊雲服務,按需使用且無高昂的license費用,將極大的節省業務使用數據庫成本。

目前,作為支撐了騰訊內外超過100億以賬戶,200億以上的交易流水和海量的虛擬交易的數據庫,騰訊雲分布式數據庫DCDB已經廣泛應用在銀行、保險、理財、電商、O2O等核心係統中。

最後更新:2017-10-23 22:33:52

  上一篇:go 阿裏雲、騰訊雲爭相搶鏡軟件網每日新聞播報│第10-25期
  下一篇:go 騰訊雲發布生物基因解決方案 助力生命科學研究