某郵儲銀行資料歸集系統在HTAP場景下的選型與實踐

OceanBase資料庫發表於2022-11-18
導語:面對HTAP能力的需求與雲原生時代的趨勢,以及國產化的浪潮,某郵儲銀行攜手OceanBase打造了雲原生時代下的國產分散式資料庫場景實踐體驗。以下內容整理自某郵儲銀行運維方DBA的自述。

 

業務痛點

 

我們有一套針對業務內部的運營資料歸集系統,各地的服務網點都將各類生產資料、經營資料及運營資料進行上報,還有前端使用者埋點資料、各子系統生產資料表單彙集,資料來源的格式多樣,資料聚合程度不一,計算方式複雜多樣。目前,我們採用兩種方式進行資料採集。

  • 人工上報:透過員工自行製表、填表將資料上報至系統中的固定頁面,進行運算。
  • 機器抓取:一些老系統或無法提供介面,就需要透過RPA自動化機器人抓取資料,這是整個基礎資料的來源。抓取資料後彙總,並用Java在程式中進行計算,將資料沉澱至報表,以供前臺實時讀取。

面對每天的資料增長,而且內部運營系統的資料不能直接完成實時分析,需要將其彙總成特定格式進行轉換計算,做成戰略皮膚,提供頂層決策分析能力。我們使用的資料庫系統是MySQL,在大眾印象中,MySQL側重於OLTP(聯機事務處理),在OLAP(線上分析處理)方面的效能如高可用、備份等方面表現較弱,這些痛點在我們使用MySQL的過程中也確實感受到了。而隨著我們業務併發量的提高和資料量的增長,既要求較強的OLTP能力,又需要OLAP能力的支撐,且軟硬體及服務成本不斷升高。面對傳統關係型資料庫的許多技術難題,比如海量資料下sacle in or out(彈性擴充套件)的算力不足、不能原生解決單點故障和全鏈路高可用、OLTP+OLAP場景無法實現一體化,我們決定探索HTAP(混合事務分析處理)資料庫,實現降本增效的目標。

 

產品調研

 

在決定探索HTAP資料庫後,我們最先了解到的是OceanBase。因為公司有一個專案正在使用阿里雲的PolarDB,但PolarDB必須在雲端部署,而我們的業務需求是本地部署,所以,OceanBase成為我們的首個研究目標。OceanBase相容MySQL的特性很吸引我們,而最終選擇OceanBase是出於以下幾個因素。

  • 因素1:穩定可靠。 OceanBase十二年穩定可靠的產品力和在支付寶全核心場景替換MySQL的實踐,以及應用於眾多行業多個大型客戶核心場景,為我們在業務場景中使用它建立了信心。
  • 因素2:AP效能優秀。 在類似的OLAP場景中,我們曾經使用過GBase、PostgreSQL、Greenplum,在複雜的SQL查詢方面速度較慢,並且當使用者量大的時候再連線這些資料庫,都會出現各種各樣的問題,也有可能是我們自身資源不足的導致的。我們在測試OceanBase的效能時,採用現有環境即2核40C80執行緒、256GB記憶體的環境,測試了TPS和QPS, 以下是在3000併發量下Sysbench的讀寫混合測試結果。這個測試結果完全滿足了業務要求。

 

SQL statistics:
    queries performed:
        read:                            2405494
        write:                           687284
        other:                           343642
        total:                           3436420
    transactions:                        171821 (2859.31 per sec.)
    queries:                             3436420 (57186.17 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.0903s
    total number of events:              171821

Latency (ms):
         min:                                   29.15
         avg:                                  104.83
         max:                                  414.93
         95th percentile:                      155.80
         sum:                             18012703.78

Threads fairness:
    events (avg/stddev):           572.7367/30.91
    execution time (avg/stddev):   60.0423/0.02

 

因素3:運維簡單。 目前的業務需求需要在AP與TP之間找到一個平衡點,如果AP場景和TP場景使用不同的資料庫,勢必會增加技術棧的深度,增大運維難度,而業務對於兩種使用場景並不是強依賴的關係。使用混合型的HTAP產品,無疑是最好的選擇,也是一種良好的探索與嘗試。OceanBase運維簡單,只需一套OCP工具就能搞定。且系統告警提供了豐富的擴充套件功能,可以與現有監控對接。運維人員每天只是關注重要數值,觀察有沒有報警,運維管理比較輕鬆。

因素4:國產化趨勢。 我們無法預料MySQL在未來是否會被限制,也無法確定是否所有系統都會逐漸成Linux,但可以肯定的是要防患於未然。因此,研究完全國產自研且開源的資料庫是一條出路,未來如果真要替換全部系統,至少到那時我們已經有一定的技術積累和沉澱,能夠應對引進軟體限制的問題。

因素5:適用業務且容錯。 OceanBase主打HTAP,具有高可用和容災能力,非常適用於我們的業務。同時,我們要應用資料庫的系統不完全是生產系統,而是一個後臺的報表,它處於核心系統與邊緣系統之間,有一定的容錯性,因此,決定先在這個報表環境中嘗試使用OceanBase。

因素6:及時響應。 OceanBase開源後社群活動與響應都很積極,雖然有些生態還在完善,但是能感覺到OceanBase開源的產品力在顯著提高。

 

場景實踐

 

決定使用OceanBase後,我們開始了環境部署,表1列出部署引數。

 

Image

Image

圖1 OceanBase三節點部署架構

 

上文提到,隨著業務資料量的增大,我們原本使用的MySQL不符合業務要求,部署OceanBase後,我們開始重構系統和底層資料底座,經歷了以下四個階段。

 

第一,POC階段。 “如果有什麼問題或者和MySQL不一致,你們就直接報錯,我們看如何解決”,這是我當時對OceanBase的研發支援人員說的話,但我驚喜地發現,OceanBase能夠與我們使用的MySQL 5.7.18版本良好相容,可以輕鬆實現零成本遷移。在此過程中,我們遇到了兩個問題,一是SQLSTATE[0A000]: Feature not supported: 1235 while parameter _ob_enable_prepared_statement is disabled, prepared statement not supported,透過引數調整,輕鬆搞定;二是應用資料的遷移人員在使用Navicat進行遷移的時候,出現了一些結構化語句不相容的問題,我們驚喜地發現Navicat16.1版本開始,有了OceanBase的專用驅動連線,使用後相容性問題完美解決。

 

第二,資料遷移階段。 我們使用了OceanBase 遷移服務(OceanBase Migration Service,OMS)完成了MySQL資料的線上無縫遷移。

 

第三,資料庫側改造階段。 我們的應用測試基本不用改造,就將MySQL的分割槽資料、表結構等遷移到了OceanBase,並且一切執行正常,查詢效能和查詢效率都超出預期。同時,對於開發人員來說,他們無需投入學習成本,在OB上操作與此前在mysql上無異。

 

第四,實際上線階段。 在該階段,我們暫停了業務寫入,等待系統遷移完成,並在新業務流量寫入OceanBase叢集后,觀察業務波動。割接後近一個月的試用,系統執行穩定,分析資料處理時間縮短到了原來的1/3,達到了我們的使用預期。

 

業務收穫

 

以上就是我們應用OceanBase的實踐過程。從業務角度看,在此次的資料庫實踐中,我們有五點收穫。

 

  • 原生的高可用體系: OceanBase基於PAXOS協議高可用,避免單點故障,RPO=0。
  • 無感知的DDL: OceanBase DDL無感知,可以加快業務迭代效率。
  • 完善的管理平臺: OCP平臺整合了部署、監控、診斷等功能,大大降低了運維與開發成本。
  • 線上擴充套件能力: 後期業務資料體系可以透過橫向增加機器資源實現scale in or out。
  • 賦能HTAP能力: 資料讀寫與實時統計分析場景用一個資料產品解決。

 

當然,對於OceanBase,我們也有三個期望與建議。

  • 希望OCP實現整合效能測試。
  • 使用SATA硬碟實際測試出的TPS是官網的1/2,建議使用SSD作為硬碟儲存。
  • 期望OceanBase能在更多場景替換MySQ,並不斷完善其三地五中心等高階能力。

不得不說,隨著國產化浪潮和雲原生趨勢的推動,企業對資料產品的要求日趨增高。面對老牌資料產品的能力,或許勇於嘗試一些優秀的新型產品才能找到良好的解決方案。此次對OceanBase的探索,讓我們解決了以往在高可用、線性擴充套件、儲存成本等方面遇到的難題,並且,在擁有了HTAP能力的同時還能持續降低業務成本。

相關文章