閱讀679 返回首頁    go 阿裏雲 go 技術社區[雲棲]


HybridDB · 最佳實踐 · 阿裏雲數據庫PetaData

前言

隨著互聯網DT時代的高速發展,業界需要簡單高效的數據處理方式在海量數據中挖掘價值,企業廠商和開源界目前較流行的的做法,是提供支持類SQL接口的數據庫服務,或者是提供SDK接口的數據處理平台服務。

在SQL接口的數據庫服務中,傳統的關係數據庫,如MySQL、PG等,處理海量數據顯得越來越力不從心,既無法突破單機硬件資源限製,又無法並行利用多機硬件資源;大數據NewSQL數據庫,必須依賴外部數據庫保證數據的事務特性,並通過數據導入工具將完整提交的數據導入進來計算,係統複雜度和成本較高。

在SDK接口的數據處理平台服務中,用戶需要進行再次開發,擴展性和自由度較好,但是上線周期較長,易用性較差,且需要長期維護代碼,保證穩定性和性能。

那麼問題來了,是否有一類產品,能夠兼顧易用性、大容量、低成本,既支持高並發低延遲OLTP業務,又支持海量數據的OLAP業務,一站解決這些問題呢?本文將介紹阿裏雲HTAP數據庫HybridDB for MySQL,為用戶解決海量數據處理的問題。

阿裏雲HTAP數據庫HybridDB for MySQL

HTAP數據庫是數據庫專業評級機構Gartner提出的新數據庫象限,指能夠同時支持OLTP和OLAP業務的分布式數據庫,典型的產品如,國外的SAP Hana和Oracle RAC,阿裏雲自研的HybridDB for MySQL等。

1.建設初衷和設計思路

HTAP數據庫是數據庫專業評級機構Gartner提出的新數據庫象限,指能夠同時支持OLTP和OLAP業務的分布式數據庫,典型的產品如,國外的SAP Hana和Oracle RAC,阿裏雲自研的HybridDB for MySQL等。

在過去的幾年,阿裏雲出現了大量的全鏈路監控分析類需求,包括監測物理機的資源消耗、網絡的流量延遲、業務實例的內部統計,多維聚合分析各類監控數據並找出全鏈路異常,找出具體問題進行自動化運維等。在選型數據庫時考慮到了這些問題:

  1. 數據總量大,日新增數據量大:單個業務每日新增各類統計數據,從2T-20T不等,數據保存至少30天,總量百T甚至上P;
  2. 訪問並發大:數據庫總連接在數百到數萬不等,並發活躍連接在數百到數千不等;
  3. 響應延遲低,支持update批量數據:寫入延遲不得超過秒級,部分業務需要update批量數據,以支持多輪迭代分析;
  4. 支持多維度檢索和複雜分析:支持從不同維度查詢數據,且各維度查詢均不得超過秒級,同時要支持各類複雜的分析類需求,分析類sql支持範圍覆蓋tpc-h、tpc-ds等,分析類查詢時間範圍在秒級到小時級;
  5. 數據自動過期:用戶設定一個數據保留的時間範圍,數據庫可以自動幫助用戶清理;
  6. 在線擴容:數據庫可隨數據總量規模擴大而擴容,以承載更大規模的業務;
  7. 使用簡便:用戶可以使用SQL接口,無需額外寫計算代碼;無需關心數據備份等運維問題,監控告警係統完善;數據操縱、數據導入等生態周邊齊全,支持常用的網絡鏈路類型;
  8. 成本:數據庫有低成本方案,支持冷數據以更低成本存儲;

在這些苛刻的需求下,使得我們無法選擇kv類存儲引擎,因為在非主鍵類查詢場景下,必須掃描全庫數據,這導致查詢完全不可用;也無法選擇mr類計算引擎,因為其單次查詢延遲過高,無法用在高並發業務場景中。RDS團隊決定自己動手,自研一個數據庫,以解決同類問題。
pic
HTAP數據庫的技術思路,是將鏈路、存儲、計算完全分離,且各個組件均允許水平擴容,存儲分區間無共享,一份存儲數據,擴容時無需搬動全局數據,精細地對每一類業務場景的SQL設計執行鏈路,以保證低延遲和高吞吐,各個組件的硬件容器可以替換,從而保證高性能和低成本可以兼得。用戶隻需要利用MySQL的各類連接器和客戶端,如jdbc、navicat等,就可以直接使用和訪問數據庫,兼容用戶的各類使用習慣。

2.HTAP數據庫雲化服務

經曆數年的成長,HybridDB for MySQL先後服務了集團內外的多個用戶,包括RDS、SLB、CDN、菜鳥、安全等團隊,日新增數據數百T,存量數據數P。

在公有雲上,HybridDB for MySQL已經積累了大量的雲服務接口,與RDS和傳統解決方案對比起來:
pic

此外,HybridDB for MySQL也在努力補齊其他雲服務功能,以對齊RDS for MySQL,支持常用的數據操縱平台,如DMS等,支持常用的數據遷移平台,如DTS、CDP等。

HTAP數據庫在阿裏雲的最佳實踐

隨著互聯網DT時代的高速發展,業界需要簡單高效的數據處理方式在海量數據中挖掘價值,企業廠商和開源界目前較流行的的做法,是提供支持類SQL接口的數據庫服務,或者是提供SDK接口的數據處理平台服務。

1.典型應用和架構

HybridDB for MySQL的一個典型應用,是在阿裏雲全鏈路大盤業務中,該業務涉及了阿裏雲多個核心產品的數據匯總分析、多維處理,引用該案例,可以介紹HTAP數據庫的最佳實踐。
pic

上圖中體現了HybridDB for MySQL的幾個典型應用:

  1. 作為分布式數據庫,承接第一手數據寫入和更新事務,保證數據的完整性,並為各類外部查詢業務,提供不同層麵的查詢支持,包括高並發多維在線查詢、數據報表、複雜分析等;
  2. 作為數據倉庫,將HybridDB for MySQL內的數據進行二次加工,以支持ETL類業務;
  3. 作為更大規模數據處理係統(如odps)的數據緩存,利用數據交換工具工具,將外部數據源的數據匯總到HybridDB for MySQL中,以支持活躍數據的存儲和計算;
  4. 作為各個子係統的數據總線,利用數據交換工具工具,將數據過濾導出到各個子係統中,以幫助這些專項子係統對數據進一步處理;
    接下來將逐步介紹HybridDB for MySQL在這些應用場景的最佳實踐。

2.實時寫入、實時多維查詢、實時分析

支持實時、高並發、低延遲類大數據業務,是HybridDB for MySQL的殺手鐧,整套係統,僅有一份數據,既可保證在線業務的數據,具備事務特性,又可支持超越傳統數據庫的分析函數、計算語法等。

在阿裏雲全鏈路大盤中,包括RDS、SLB、CDN等產品的原始性能數據(如主機cpu、iops,業務實例qps、副本延遲,全局網絡延遲等),需要實時匯總到中心HybridDB for MySQL數據庫中,而這些數據在storm、flink、galaxy等流計算平台進行聚合分析(如每個時間窗口的統計量加和、join、開窗分組等),產生的分析結果,也將匯入相同的HybridDB for MySQL數據庫中,單個業務產生的性能數據,常常達到每秒數百萬條,並發活躍連接常常達到數百條甚至上千條。而這些原始數據和流式分析結果,也需要支持實時、多維度的呈現在用戶麵前,有的分析結果用於人工排查問題;有的分析結果則可以直接觸發報警;有的分析結果可以指導自動化運維,如數據遷移等;有的分析結果可以用於指導產品運營狀況、用戶畫像等。
pic

RDS數據分析係統是這類業務的翹楚,並引領了一股實時寫入、實時分析的風潮,幫助RDS大幅改善了運維體驗,提升了整個RDS的穩定性,發現和解決問題的周期,由過去的月、周級,減少到了現在的天、小時級,且有進一步提升的趨勢。

3.批處理ETL

有些計算場景下,單次流計算並不能解決所有問題,一些較複雜的業務場景,比如參照大量的曆史數據、外部數據源數據,進行級聯事件分析(如全鏈路大盤參考ECS、SLB等產品的性能數據,挖掘RDS在過去一個月內的鏈路延遲狀況)、事件回放,這類計算業務,則依賴HybridDB for MySQL已經存儲的曆史數據和外部數據源的數據進行綜合計算,此時需要批量數據的ETL,重新抽取各個數據源的曆史數據,進行再次計算。

在HybridDB for MySQL中,ETL則簡化為了一類SQL語句模式:Insert into … Select …,這類語句,從HybridDB for MySQL的各個數據表中抽取數據,進行複雜計算,並將計算結果持久化下來,以便用戶的多次訪問。ETL功能可以令HybridDB for MySQL形成數據閉環,進一步降低用戶導數據的開銷和複雜度。
pic

HybridDB for MySQL的ETL功能預計6月初上線,阿裏雲部分雲產品的數據分析係統正在試用該功能。

4.實時數據總線

在HybridDB for MySQL不能解決所有大數據問題時,用戶還可以將HybridDB for MySQL當做數據總線,利用數據交換工具(如DTS、CDP等),將數據導出到其它數據存儲和計算係統上,從而發揮數據更大的價值。
pic

從HybridDB for MySQL導出數據,可以有不同的目的,包括:導入到大數據計算存儲平台(如ODPS、OSS),用於存儲更長期限的曆史數據,在需要時,亦可導回HybridDB for MySQL計算;導入到隊列(如loghub、kafka),以供用戶自己的消息總線播散數據,並級聯到其它係統上;導入到RDS,以供用戶在RDS生態下,繼續擴展數據業務。

用HybridDB for MySQL充當數據總線的業務,以公有雲用戶居多,這些用戶同時使用了阿裏雲的多套產品,組合出複雜的業務網,為了降低係統間的耦合性和成本,通常選擇HybridDB for MySQL,既充當一級數據存儲和計算係統,又充當二級數據總線,串聯起其他的服務端。

5.實時數據緩存

憑借強大的存儲和計算帶寬,HybridDB for MySQL還可作為外部數據源的實時分布式數據緩存,利用數據交換工具(如DTS、CDP等),從其它數據存儲和計算係統上,將數據導入到HybridDB for MySQL,可以幫助這些係統具備海量數據的實時處理能力。
pic

用HybridDB for MySQL充當數據總線的業務,以搜索類、日誌類用戶居多,這類用戶期望在大數據存儲和計算平台上的數據(如ODPS)也能有實時查詢的能力,或者期望暫存數據係統(如loghub、kafka)能夠支持多維數據檢索,又或者期望小型數據庫(如RDS)能夠存儲更多的曆史數據,HybridDB for MySQL便很好的彌補了這些係統的缺憾,從而與這些係統共同提升和改進。

後記

HybridDB for MySQL依靠實時、高並發、低延遲的特性,已經應用在集團內外數十個企業級業務中,隨著生態和功能越來越完善,HybridDB for MySQL將能承載更多的業務類型,幫助用戶在DT時代快速發展。

最後更新:2017-09-21 09:03:25

  上一篇:go  MySQL · 捉蟲動態 · show binary logs 靈異事件
  下一篇:go  PolarDB · 新品介紹 · 深入了解阿裏雲新一代產品 PolarDB