跨越數據庫發展鴻溝,談分佈式數據庫技術趨勢

跨越數據庫發展鴻溝,談分佈式數據庫技術趨勢

作者介紹

王濤巨杉數據庫聯合創始人、CTO與總架構師。曾是北美IBM DB2 Lab核心研發成員,負責DB2 核心引擎研發,還曾參與世界第一款分佈式數據庫DPF的研發。具有超過15年的數據庫核心架構設計、研發和創新經驗。自2011年以來,其領導的巨杉數據庫技術團隊從零開始打造的分佈式關係型數據庫SequoiaDB,目前已擁有超過50家大型銀行用戶,以及超過一千家企業用戶。

一、金融行業架構轉型需求

隨著移動化與互聯網化的不斷髮展,我國金融行業的商業模式與技術體系已經逐漸走上了與西方世界完全不同的道路。眾所周知,歐美國家的移動化普及率遠遠不如我國,同時人口基數也有著數量級的不同。這就使得國內外金融行業所面臨的業務類型、數據量、併發量都存在巨大的差異,導致對整個IT基礎設施的需求截然不同。

在最近的一兩年中,國內部分科技領先的銀行已經率先對微服務與分佈式技術進行了探索,一些新建的互聯網金融類業務也已經開始嘗試使用微服務架構、分佈式技術、DevOps框架進行應用的開發與維護。甚至一些銀行在規劃下一代核心體系架構時,也會嘗試適當引入分佈式架構,以滿足未來業務壓力與數據量不斷增長的需求。

與新一代分佈式架構相比,中間件加數據庫的傳統“煙囪式”架構在面向海量數據、高併發、高響應速度的業務應用時存在諸多問題。

  • 從業務部門和系統來看,複雜的業務導致企業中系統數量多、分散、數據之間完全隔離無法共享;

  • 系統缺乏靈活的水平伸縮能力,性能瓶頸明顯,很容易遇到硬件瓶頸,無法滿足彈性擴張的業務需求;

  • 系統無法快速響應順勢爆發的海量請求,例如雙十一期間、秒殺等業務導致的瞬時爆發性增長很難處理;

  • 採購和運維成本高昂,小型機設備與軟硬件分別採購獨立運維,導致整體擁有成本高昂;

  • 缺乏自主掌控能力,高度依賴國外的廠商,出了嚴重問題本地支持團隊很難在短時間內解決問題,導致生產運營風險增加。

二、銀行架構演進歷程

在過去的近二十年間,我國銀行的IT架構歷經了幾個階段的變化。我國的第一代銀行核心系統構建在大型機之上,採用的是典型的大集中架構。

而隨著SOA概念的提出,一些銀行也開始逐漸進行了去大機化,將核心業務系統從主機或400下移到UNIX小型機。虛擬化技術的增強使得一些銀行和金融機構在其基礎架構中引入虛擬化機制,將開發環境以及一些生產環境的應用程序部署在虛擬機上。

如今,很多銀行都已經基於分佈式與PC服務器架構建設了大數據平臺,而一些基於微服務體系的應用程序則更是將業務邏輯進行了容器化封裝,結合後臺的分佈式存儲與數據庫技術,實現了端到端的分佈式架構體系。

正如同很多銀行的科技部門都經歷過核心系統從大集中向SOA轉型的艱辛,由當前的小型機體系向分佈式架構轉型同樣面臨巨大的挑戰,例如技術堆棧的選擇、應用程序的開發、與DevOps體系的搭建等。

應用開發從傳統架構向分佈式轉型,最先面臨改造的自然就是應用程序框架。如今的微服務框架已經非常成熟,其代表性架構往往包括協議處理、服務拼裝、原子服務、以及底層持久化四層。業務邏輯從傳統的單一中間件被拆解成眾多微服務模塊,每個微服務模塊由完全對等的一系列容器構成,可以簡單通過增加容器的方式實現對該服務吞吐處理能力的擴容。

但是微服務的拆分即意味著每個服務都擁有自己獨立的執行邏輯與存儲。從數據庫的角度來看,微服務體系的拆分對數據庫存儲提出了極大的挑戰。如果每個微服務依然將數據存放在傳統的單點數據庫中,其存儲與處理能力均無法隨著微服務容器數量的上升提供同樣的擴展能力。在這種情況下,數據庫將會成為微服務體系框架中性能與擴展性的最大制約瓶頸。

而如果每個微服務使用獨立的數據庫進行存放,整個企業IT的數據架構將會變得支離破碎。數據庫的數量從過去的幾百被拆分為上萬個數據庫,整個運維團隊的管理成本與數據庫採購成本面臨幾何級數的提升。

因此,分佈式數據庫的目標不僅僅作為傳統Oracle或DB2的單一替代,將一個數據庫存放不下的數據放到多個物理機存放。在實際環境中,大部分銀行都有著較為完善的數據生命週期管理策略,一般不會在生產環境中堆積大量的歷史數據,因此數據量一般來說不會是使用分佈式數據庫的最重要原因。

三、分佈式數據庫架構體系

分佈式數據庫的核心價值在於對分佈式應用程序提供一個彈性可擴張的數據服務資源池,也可稱之為DBPaaS平臺。

其主要能力在於為上層數以萬計的來自不同開發商、不同業務類型、不同SLA安全級別、不同數據類型的微服務提供一個可彈性擴展、高響應速度、易維護的數據庫服務平臺,同時必須支持在不同微服務數據間進行高可用配置、容災策略定義、多租戶、業務數據邏輯物理隔離、交易分析混合模式隔離、冷熱數據隔離等一系列數據隔離與治理機制。

一些採用微服務架構的互聯網企業,20餘人的數據庫運維團隊可以支撐幾十萬個不同的數據庫實例,運維最核心便是構建了企業統一的DBPaaS平臺,通過分佈式數據庫的故障自愈、彈性擴展等機制大規模簡化了運維人員對數據庫的管理。

當前業界存在眾多分佈式數據庫產品,主要分為三種架構體系。

1、應用垂直拆分

應用垂直拆分是一種最傳統的分佈式理念。其中一種實現方式是將應用拆解成多個獨立的子服務,每個服務對應整體中的部分數據;另一種實現方式則是在一個服務中對接多個數據庫連接,在應用內部根據業務規則選擇數據源。例如,應用根據用戶賬戶ID進行切分,ID為一到一百萬之內的用戶存在數據庫A、從一百萬零一到兩百萬存在數據庫B,以此類推。

該機制通過在應用程序內預設一個規則,每次進行數據訪問首先要從規則庫篩選出目標所在的數據庫實例,然後再直接獲取連接進行訪問。

使用這種機制,一方面跨數據庫的事務極為難以實現,另一方面從應用程序來說,分佈式能力的業務侵入性極強,需要非常多的定製化開發才能完成基本業務邏輯,同時每次擴容需要對應用邏輯做完整的端到端梳理,可能會存在大量的風險與二次開發工作。

2、中間件分庫分表

隨著需要分佈式存儲能力需求的普及,業界開始逐漸出現了另一類技術體系,稱為中間件分庫分表。這類技術體系的思路是在應用程序和數據庫之間構建一個SQL解析器服務,將傳統的SQL進行解析然後翻譯成底層每個數據庫所對應的子查詢,然後將查詢直接下發給底層的傳統數據庫進行執行。

該機制的優勢在於數據存儲能夠繼續基於傳統關係型數據庫不變,同時上層對於應用程序接口得到了一定程度的封裝。但是,中間件分庫分表的機制從整個行業來看,可以認為是從傳統單點數據庫向分佈式數據庫轉型的過渡階段。

在新型基於PC服務器構建的分佈式數據庫普及之前,一些急需數據拆分的應用可以先通過該方式緩解業務與數據量暴漲的壓力,但在未來原生分佈式數據庫成熟且得到驗證後會其優勢將很難繼續保持。

同時,該技術對於應用無法做到100%完全透明,一般來說需要在應用拼裝SQL的時候指定一些參數或使用較獨特的語法,很難做到對應用完全透明無感知。

3、原生分佈式數據庫

不同於中間件分庫分表技術,原生分佈式數據庫從底層的存儲引擎直接以PC服務器為基礎進行重構,從數據存儲結構、數據安全機制、分佈式事務控制等多個領域針對分佈式存儲與執行進行優化。

原生分佈式數據庫是底層完全從零開始研發,完全拋棄小型機體系,基於PC服務器硬件架構設計的分佈式數據庫,將高可用、容災、分佈式等機制天然融入到數據存儲體系的方方面面。

譬如說,一些分佈式數據庫產品能夠在做到與MySQL 100%兼容的前提下,實現對應用完全透明的分佈式存儲與執行能力。從開發者的角度看,用戶完全不需要關注一個表存在幾億還是幾十億記錄,只要在建表時配置好容量與最大物理資源消耗策略,數據會自動在集群的多個物理設備中進行均衡,從應用來看就像訪問標準的表一樣直接進行讀寫請求。

4、原生分佈式數據庫技術趨勢

為了支撐未來IT微服務框架,分佈式交易型數據庫的引入需要從傳統技術兼容性、以及新技術前瞻性兩個維度進行評估。

ACID的支持與SQL完整性的支持是評估一款新型分佈式數據庫是否能夠提供與傳統數據庫技術兼容的兩大關鍵指標。

1)ACID的支持

從安全性上來看,不論採用新技術或傳統技術,數據不錯不丟是所有數據庫的必備基礎。

在分佈式數據庫業界中,一些針對互聯網技術設計的產品以分佈式(Partition Tolerance)加高可用(Availability)作為目標,在安全一致性(Consistence)上無法保證數據的正確,很難在金融業務中被廣泛使用。

因此,銀行所關注的新型分佈式數據庫必須首先保證數據的安全和一致性,其中分佈式事務、分佈式鎖、四種隔離級別的支持等都是該指標中的關鍵技術點。

2)SQL完整性支持

SQL完整性指的是新型分佈式數據庫與傳統關係型數據庫的開發友好性。

越是成熟的分佈式數據庫,其SQL語法越能做到與傳統關係型數據庫兼容,同時其數據切分對應用程序則越發透明。如今大部分分佈式數據庫技術都號稱支持MySQL語法,而主流新型應用程序也都將MySQL作為其默認支持的數據庫選項。因此,對MySQL語法協議支持的強弱則成為分佈式數據庫SQL完整性支持的評判關鍵。

新技術前瞻性指的是分佈式數據庫與未來開發方式和IT架構是否吻合。

3)分佈式與彈性擴展能力

作為數據服務資源池,分佈式數據庫必須做到可彈性擴張,才能在服務於上層不斷增加微服務類型與數量。同時對於每個微服務來說,其數據存放在一臺物理設備還是多臺物理設備,必須對其中的應用代碼完全透明。

4)多模式引擎

服務於上層來自不同開發商、不同業務場景、不同數據類型的微服務,分佈式數據庫必然需要支持多種SQL協議與計算引擎。從存儲引擎來看,結構化與半結構化數據都可能將會在應用中同時使用。因此,新一代分佈式數據庫需要從訪問接口到存儲結構均支持多模(Multi-Model)引擎。

5)HTAP(Hybrid Transactional/Analytical Processing)

HTAP即混合交易分析處理能力。在傳統銀行IT架構中,聯機交易與統計分析系統往往採用不同的技術與物理設備,通過定期執行的ETL將聯機交易數據向分析系統中遷移。而作為數據服務資源池,同一份數據可能被不同類型的微服務共享訪問。

當一些聯機交易與審計類業務針對同一份數據同時運行時,必須保證請求在完全隔離的物理環境中執行,做到交易分析業務無干擾。

總體來說,分佈式數據庫技術趨勢需要從傳統技術兼容性以及新技術前瞻性兩個維度進行評判,其中ACID數據安全與SQL完整性是傳統技術兼容性的重要指標,而彈性擴展能力、多模式引擎、以及HTAP則是新技術前瞻性的幾個重要衡量標準。

5、金融分佈式數據庫應用場景

當前金融行業中,分佈式數據庫在五大領域中得到應用:數據倉庫、大數據平臺、內容管理平臺、數據中臺、與聯機交易。對於聯機分佈式數據庫的使用,當前業界主要圍繞著三類業務場景。

1)聯機交易系統

聯機交易系統是銀行重要的生產運行環境。

我國一些分佈式技術探索走在前沿的銀行,已經開始逐漸將核心業務流程系統從IBM和Oracle的大機與小機架構下移到分佈式環境,做到集群可彈性擴張,滿足隨時爆發的業務增長需求。一些典型使用到分佈式數據庫的系統包括網貸核心、渠道整合、信用卡積分等。

2)數據中臺

如今,很多企業提出了重中臺、輕前臺的IT架構。而數據中臺作為企業IT數據整合的關鍵平臺,為前臺靈活多變的業務需求,與後臺相對固定的數據模型相結合,起到了“數據匯聚、連接前後”的作用。譬如銀行能夠先以生產系統瘦身作為目標,從歷史流水賬單查詢打印開始,逐漸擴展到用戶畫像、資產視圖等準實時數據服務。

3)內容管理平臺

傳統的內容管理平臺主要以後督與審計為目的進行建設,前端業務基本不會直接參與非結構化數據的使用。而隨著自助設備與移動應用的普及,越來越多的流程處理需要非結構化數據的直接參與。

因此,內容管理平臺也在很多銀行從過去的後端走向前端,大量對客應用直接連接到內容管理平臺,一些開戶、信貸、甚至自助設備大量流程都在高度依賴內容管理平臺的實時交互能力,使得內容管理系統從傳統的對內後臺審計走向對外聯機服務。

可以看到,作為離線分析類業務場景來說,分佈式數據庫在銀行早已經得到了普遍應用。而針對聯機業務來說,MPP數據倉庫與大數據平臺無論從可靠性、併發能力、與響應速度均無法滿足需求。

四、小結

如今一些對分佈式技術研究較深的銀行,已經開始針對分佈式數據庫進行試點應用。分佈式數據庫的核心價值不僅在於將傳統數據庫存放不下的數據分散到多個物理設備中存儲,更重要的是針對未來微服務化的應用開發模型,面對來自不同開發商、不同SLA級別、不同高可用容災特性、不同業務類型的數據,提供一個可彈性擴展、多模式接口的數據服務平臺(DBPaaS)。

當前的科技人員經常問的一個問題:分佈式數據庫是否能夠在未來取代Oracle?

這個問題的答案可以說非常直觀。分佈式應用框架與PC服務器集群化一定是未來IT發展的方向,而微服務取代煙囪式軟件架構,一定需要將數據庫從傳統的“點”向平臺的“面”進行轉移。

每個應用程序都存在相應的迭代週期,如今已經可以看到很多應用程序都開始將MySQL等開源數據庫作為自身默認支持的數據庫選項,未來必須使用Oracle的場景也將會越來越少。

因此,分佈式數據庫未來必將取代Oracle等傳統單點數據庫。銀行的科技部門也應該儘早對分佈式數據庫技術進行前瞻性研究,以適應未來銀行IT架構從煙囪式模式向微服務轉型的趨勢。

跨越數據庫發展鴻溝,談分佈式數據庫技術趨勢

掌握更多分佈式數據庫技術

不妨來DAMS學點獨家技能

屆時,王濤老師也將出席DAMS分享:

《分佈式數據庫“計算-存儲”分離架構設計與實踐》

↓↓掃碼可瞭解更多詳情及報名↓↓

2019 DAMS中國數據智能管理峰會-上海站

相關推薦

推薦中...