您好,登錄后才能下訂單哦!
在最近的一兩年中,國內部分科技領先的銀行已經率先對微服務與分布式技術進行了探索,一些新建的互聯網金融類業務也已經開始嘗試使用微服務架構、分布式技術、DevOps框架進行應用的開發與維護。甚至一些銀行在規劃下一代核心體系架構時,也會嘗試適當引入分布式架構,以滿足未來業務壓力與數據量不斷增長的需求。
與新一代分布式架構相比,中間件加數據庫的傳統“煙囪式”架構在面向海量數據、高并發、高響應速度的業務應用時存在諸多問題。
? 從業務部門和系統來看,復雜的業務導致企業中系統數量多、分散、數據之間完全隔離無法共享;
? 系統缺乏靈活的水平伸縮能力,性能瓶頸明顯,很容易遇到硬件瓶頸,無法滿足彈性擴張的業務需求
? 系統無法快速響應順勢爆發的海量請求,例如雙十一期間、秒殺等業務導致的瞬時爆發性增長很難處理;
? 采購和運維成本高昂,小型機設備與軟硬件分別采購獨立運維,導致整體擁有成本高昂;
? 缺乏自主掌控能力,高度依賴國外的廠商,出了嚴重問題本地支持團隊很難在短時間內解決問題,導致生產運營風險增加。
如今,很多銀行都已經基于分布式與PC服務器架構建設了大數據平臺,而一些基于微服務體系的應用程序則更是將業務邏輯進行了容器化封裝,結合后臺的分布式存儲與數據庫技術,實現了端到端的分布式架構體系。
正如同很多銀行的科技部門都經歷過核心系統從大集中向SOA轉型的艱辛,由當前的小型機體系向分布式架構轉型同樣面臨巨大的挑戰,例如技術堆棧的選擇、應用程序的開發、與DevOps體系的搭建等。
應用開發從傳統架構向分布式轉型,最先面臨改造的自然就是應用程序框架。如今的微服務框架已經非常成熟,其代表性架構往往包括協議處理、服務拼裝、原子服務、以及底層持久化四層。業務邏輯從傳統的單一中間件被拆解成眾多微服務模塊,每個微服務模塊由完全對等的一系列容器構成,可以簡單通過增加容器的方式實現對該服務吞吐處理能力的擴容。
但是微服務的拆分即意味著每個服務都擁有自己獨立的執行邏輯與存儲。從數據庫的角度來看,微服務體系的拆分對數據庫存儲提出了極大的挑戰。如果每個微服務依然將數據存放在傳統的單點數據庫中,其存儲與處理能力均無法隨著微服務容器數量的上升提供同樣的擴展能力。在這種情況下,數據庫將會成為微服務體系框架中性能與擴展性的最大制約瓶頸。
而如果每個微服務使用獨立的數據庫進行存放,整個企業IT的數據架構將會變得支離破碎。數據庫的數量從過去的幾百被拆分為上萬個數據庫,整個運維團隊的管理成本與數據庫采購成本面臨幾何級數的提升。
因此,分布式數據庫的目標不僅僅作為傳統Oracle或DB2的單一替代,將一個數據庫存放不下的數據放到多個物理機存放。在實際環境中,大部分銀行都有著較為完善的數據生命周期管理策略,一般不會在生產環境中堆積大量的歷史數據,因此數據量一般來說不會是使用分布式數據庫的最重要原因。
一些采用微服務架構的互聯網企業,20余人的數據庫運維團隊可以支撐幾十萬個不同的數據庫實例,最運維核心便是構建了企業統一的DBPaaS平臺,通過分布式數據庫的故障自愈、彈性擴展等機制大規模簡化了運維人員對數據庫的管理。
當前業界存在眾多分布式數據庫產品,主要分為三種架構體系。
? 應用垂直拆分
應用垂直拆分是一種最傳統的分布式理念。其中一種實現方式是將應用拆解成多個獨立的子服務,每個服務對應整體中的部分數據;另一種實現方式則是在一個服務中對接多個數據庫連接,在應用內部根據業務規則選擇數據源。例如,應用根據用戶賬戶ID進行切分,ID為一到一百萬之內的用戶存在數據庫A、從一百萬零一到兩百萬存在數據庫B,以此類推。
該機制通過在應用程序內預設一個規則,每次進行數據訪問首先要從規則庫篩選出目標所在的數據庫實例,然后再直接獲取連接進行訪問。使用這種機制,一方面跨數據庫的事務極為難以實現,另一方面從應用程序來說,分布式能力的業務侵入性極強,需要非常多的定制化開發才能完成基本業務邏輯,同時每次擴容需要對應用邏輯做完整的端到端梳理,可能會存在大量的風險與二次開發工作。
? 中間件分庫分表
隨著需要分布式存儲能力需求的普及,業界開始逐漸出現了另一類技術體系,稱為中間件分庫分表。這類技術體系的思路是在應用程序和數據庫之間構建一個SQL解析器服務,將傳統的SQL進行解析然后翻譯成底層每個數據庫所對應的子查詢,然后將查詢直接下發給底層的傳統數據庫進行執行。
該機制的優勢在于數據存儲能夠繼續基于傳統關系型數據庫不變,同時上層對于應用程序接口得到了一定程度的封裝。但是,中間件分庫分表的機制從整個行業來看,可以認為是從傳統單點數據庫向分布式數據庫轉型的過渡階段。在新型基于PC服務器構建的分布式數據庫普及之前,一些急需數據拆分的應用可以先通過該方式緩解業務與數據量暴漲的壓力,但在未來原生分布式數據庫成熟且得到驗證后會其優勢將很難繼續保持。同時,該技術對于應用無法做到100%完全透明,一般來說需要在應用拼裝SQL的時候指定一些參數或使用較獨特的語法,很難做到對應用完全透明無感知。
? 原生分布式數據庫
不同于中間件分庫分表技術,原生分布式數據庫從底層的存儲引擎直接以PC服務器為基礎進行重構,從數據存儲結構、數據安全機制、分布式事務控制等多個領域針對分布式存儲與執行進行優化。
原生分布式數據庫是底層完全從零開始研發,完全拋棄小型機體系,基于PC服務器硬件架構設計的分布式數據庫,將高可用、容災、分布式等機制天然融入到數據存儲體系的方方面面。譬如說,一些分布式數據庫產品能夠在做到與MySQL 100%兼容的前提下,實現對應用完全透明的分布式存儲與執行能力。從開發者的角度看,用戶完全不需要關注一個表存在幾億還是幾十億記錄,只要在建表時配置好容量與最大物理資源消耗策略,數據會自動在集群的多個物理設備中進行均衡,從應用來看就像訪問標準的表一樣直接進行讀寫請求。
ACID的支持與SQL完整性的支持是評估一款新型分布式數據庫是否能夠提供與傳統數據庫技術兼容的兩大關鍵指標。
? ACID的支持
從安全性上來看,不論采用新技術或傳統技術,數據不錯不丟是所有數據庫的必備基礎。在分布式數據庫業界中,一些針對互聯網技術設計的產品以分布式(Partition Tolerance)加高可用(Availability)作為目標,在安全一致性(Consistence)上無法保證數據的正確,很難在金融業務中被廣泛使用。因此,銀行所關注的新型分布式數據庫必須首先保證數據的安全和一致性,其中分布式事務、分布式鎖、四種隔離級別的支持等都是該指標中的關鍵技術點。
? SQL完整性支持
SQL完整性指的是新型分布式數據庫與傳統關系型數據庫的開發友好性。越是成熟的分布式數據庫,其SQL語法越能做到與傳統關系型數據庫兼容,同時其數據切分對應用程序則越發透明。如今大部分分布式數據庫技術都號稱支持MySQL語法,而主流新型應用程序也都將MySQL作為其默認支持的數據庫選項。因此,對MySQL語法協議支持的強弱則成為分布式數據庫SQL完整性支持的評判關鍵。
新技術前瞻性指的是分布式數據庫與未來開發方式和IT架構是否吻合。
? 分布式與彈性擴展能力
作為數據服務資源池,分布式數據庫必須做到可彈性擴張,才能在服務于上層不斷增加微服務類型與數量。同時對于每個微服務來說,其數據存放在一臺物理設備還是多臺物理設備,必須對其中的應用代碼完全透明。
? 多模式引擎
服務于上層來自不同開發商、不同業務場景、不同數據類型的微服務,分布式數據庫必然需要支持多種SQL協議與計算引擎。從存儲引擎來看,結構化與半結構化數據都可能將會在應用中同時使用。因此,新一代分布式數據庫需要從訪問接口到存儲結構均支持多模(Multi-Model)引擎。
? HTAP(Hybrid Transactional/Analytical Processing)
HTAP即混合交易分析處理能力。在傳統銀行IT架構中,聯機交易與統計分析系統往往采用不同的技術與物理設備,通過定期執行的ETL將聯機交易數據向分析系統中遷移。而作為數據服務資源池,同一份數據可能被不同類型的微服務共享訪問。當一些聯機交易與審計類業務針對同一份數據同時運行時,必須保證請求在完全隔離的物理環境中執行,做到交易分析業務無干擾。
總體來說,分布式數據庫技術趨勢需要從傳統技術兼容性以及新技術前瞻性兩個維度進行評判,其中ACID數據安全與SQL完整性是傳統技術兼容性的重要指標,而彈性擴展能力、多模式引擎、以及HTAP則是新技術前瞻性的幾個重要衡量標準。
? 聯機交易系統
聯機交易系統是銀行重要的生產運行環境。我國一些分布式技術探索走在前沿的銀行,已經開始逐漸將核心業務流程系統從IBM和Oracle的大機與小機架構下移到分布式環境,做到集群可彈性擴張,滿足隨時爆發的業務增長需求。一些典型使用到分布式數據庫的系統包括網貸核心、渠道整合、信用卡積分等。
? 數據中臺
如今,很多企業提出了重中臺、輕前臺的IT架構。而數據中臺作為企業IT數據整合的關鍵平臺,為前臺靈活多變的業務需求,與后臺相對固定的數據模型相結合,起到了“數據匯聚、連接前后”的作用。譬如銀行能夠先以生產系統瘦身作為目標,從歷史流水賬單查詢打印開始,逐漸擴展到用戶畫像、資產視圖等準實時數據服務。
? 內容管理平臺
傳統的內容管理平臺主要以后督與審計為目的進行建設,前端業務基本不會直接參與非結構化數據的使用。而隨著自助設備與移動應用的普及,越來越多的流程處理需要非結構化數據的直接參與。因此,內容管理平臺也在很多銀行從過去的后端走向前端,大量對客應用直接連接到內容管理平臺,一些開戶、信貸、甚至自助設備大量流程都在高度依賴內容管理平臺的實時交互能力,使得內容管理系統從傳統的對內后臺審計走向對外聯機服務。
可以看到,作為離線分析類業務場景來說,分布式數據庫在銀行早已經得到了普遍應用。而針對聯機業務來說,MPP數據倉庫與大數據平臺無論從可靠性、并發能力、與響應速度均無法滿足需求。
小結
如今一些對分布式技術研究較深的銀行,已經開始針對分布式數據庫進行試點應用。分布式數據庫的核心價值不僅在于將傳統數據庫存放不下的數據分散到多個物理設備中存儲,更重要的是針對未來微服務化的應用開發模型,面對來自不同開發商、不同SLA級別、不同高可用容災特性、不同業務類型的數據,提供一個可彈性擴展、多模式接口的數據服務平臺(DBPaaS)。
當前的科技人員經常問的一個問題:分布式數據庫是否能夠在未來取代Oracle?這個問題的答案可以說非常直觀。分布式應用框架與PC服務器集群化一定是未來IT發展的方向,而微服務取代煙囪式軟件架構,一定需要將數據庫從傳統的“點”向平臺的“面”進行轉移。每個應用程序都存在相應的迭代周期,如今已經可以看到很多應用程序都開始將MySQL等開源數據庫作為自身默認支持的數據庫選項,未來必須使用Oracle的場景也將會越來越少。
因此,分布式數據庫未來必將取代Oracle等傳統單點數據庫。銀行的科技部門也應該盡早對分布式數據庫技術進行前瞻×××,以適應未來銀行IT架構從煙囪式模式向微服務轉型的趨勢。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。