YashanDB推出共享集群技術(shù) 劍指核心系統(tǒng)替換
原創(chuàng)隨著信創(chuàng)進入深水期,國產(chǎn)數(shù)據(jù)庫廠商即將面臨一個巨大的考驗:國產(chǎn)替代必須從外圍系統(tǒng)走向高端市場核心系統(tǒng)。國產(chǎn)數(shù)據(jù)庫能挑起“核心”的大梁嗎?這也成為決定國產(chǎn)數(shù)據(jù)庫未來格局的關(guān)鍵性問題。
最堅固的堡壘:核心系統(tǒng)“去O”
在業(yè)務(wù)規(guī)模發(fā)展和政策的雙重影響下,金融行業(yè)已開始了國產(chǎn)化改造。從2019年開始,金融領(lǐng)域國產(chǎn)替代已經(jīng)歷了三期試點,主要覆蓋終端機具、辦公管理類系統(tǒng)、一般業(yè)務(wù)系統(tǒng)等非核心、邊緣性系統(tǒng),但涉及核心系統(tǒng)最難的Oracle數(shù)據(jù)庫系統(tǒng)的替換還沒有規(guī)模發(fā)生。
金融行業(yè)核心系統(tǒng)的主要功能是處理復(fù)雜業(yè)務(wù)的賬務(wù)信息,由于涉及重要數(shù)據(jù),銀行核心系統(tǒng)對數(shù)據(jù)庫的時延、數(shù)據(jù)一致性、安全性、高可用性等方面都有著極高要求。大多數(shù)金融企業(yè)以國外廠商提供的主機和數(shù)據(jù)庫解決方案來進行系統(tǒng)構(gòu)建。其中Oracle RAC(Oracle Real Application Clusters)共享集群技術(shù)長期以來是高端市場的“王牌”,是國產(chǎn)替代最難攻下的“堡壘”。
金融核心系統(tǒng)業(yè)務(wù)關(guān)系錯綜復(fù)雜,需要快速實現(xiàn)多套系統(tǒng)的平滑遷移。然而熱門技術(shù)路線分布式架構(gòu)對上層應(yīng)用軟件的架構(gòu)設(shè)計要求較高,改造存量軟件系統(tǒng)向分布式演進往往面臨較大困難,例如表模型的設(shè)計、SQL語句的調(diào)優(yōu)等,這種未知的風(fēng)險是核心系統(tǒng)難以承受的。
是否有性能、功能、擴展性、可靠性維度完全對等Oracle RAC的國產(chǎn)替換方案?近些年,很多國內(nèi)數(shù)據(jù)庫廠商想挑戰(zhàn)該技術(shù),但由于技術(shù)難度大,實現(xiàn)共享集群技術(shù)的國內(nèi)數(shù)據(jù)庫廠商屈指可數(shù)。
共享集群:核心系統(tǒng)的“獨門絕技”
共享集群為何成為Oracle全球數(shù)據(jù)庫高端市場橫行二十多年的“獨門絕技”?作為Oracle數(shù)據(jù)庫中的一項核心技術(shù),Oracle RAC是多節(jié)點實例的數(shù)據(jù)庫集群,被廣泛應(yīng)用在企業(yè)級核心交易數(shù)據(jù)庫領(lǐng)域。
核心系統(tǒng)對業(yè)務(wù)連續(xù)性要求非常高,要求故障恢復(fù)所需時間短(RTO, Recovery Time Objective)、數(shù)據(jù)丟失量接近為零(RPO, Recovery Point Objective)。Oracle RAC的優(yōu)勢在于能保證RPO為0,容忍單點故障并實現(xiàn)客戶端透明切換,具有極高的高可用能力;其次,共享集群可以實現(xiàn)應(yīng)用透明的橫向擴展,具有優(yōu)異的性能表現(xiàn),非常符合核心業(yè)務(wù)場景的訴求。
共享集群技術(shù)可被稱之為數(shù)據(jù)庫領(lǐng)域的“塔尖”技術(shù),其開發(fā)難度可謂是難上加難。Oracle從90年代開始嘗試開發(fā)Oracle并行服務(wù)器(OPS,Oracle Parallel Server,為 RAC 前身),Oracle 9i正式推出RAC形態(tài),過程中投入大量的成本與時間進行底層代碼的持續(xù)更新,歷經(jīng)多次迭代系統(tǒng)才逐步穩(wěn)定。目前國產(chǎn)數(shù)據(jù)庫大多基于MySQL、PostgreSQL等開源數(shù)據(jù)庫二次改寫,受限于存儲結(jié)構(gòu),其架構(gòu)向多活共享集群方向演進時非常困難??梢?,共享集群技術(shù)架構(gòu)需要耗費巨大的研發(fā)投入,也必須要有自研的內(nèi)核能力。
國產(chǎn)數(shù)據(jù)庫如何挑起“核心”系統(tǒng)替代的大梁?基于多年的技術(shù)積累與工程實踐,全自研國產(chǎn)數(shù)據(jù)庫系統(tǒng)YashanDB給出了自己的答案。
近日,深圳計算科學(xué)研究院推出了完全自主研發(fā)設(shè)計、對標(biāo)Oracle RAC的YashanDB共享集群,YashanDB不滿足于架構(gòu)的微創(chuàng)新,而是將深算院的原創(chuàng)理論融入產(chǎn)品實踐,基于自研內(nèi)核,采用單數(shù)據(jù)庫多實例架構(gòu),所有計算節(jié)點提供對等的多活計算能力,節(jié)點之間以強一致性方式實現(xiàn)并發(fā)讀寫,可為用戶提供應(yīng)用透明的高可用、高擴展、高性能數(shù)據(jù)庫能力,是助力金融、運營商、政企等高端市場實現(xiàn)數(shù)據(jù)庫國產(chǎn)替代的“殺手锏”。
YashanDB共享集群為何能挑起“核心”替代大梁?
作為國內(nèi)極少數(shù)可以做出共享集群產(chǎn)品并將其推向市場的廠商,深圳計算科學(xué)研究院的崖山數(shù)據(jù)庫系統(tǒng)研發(fā)團隊基于在內(nèi)核方面的持續(xù)創(chuàng)新與突破,攻克了共享集群的關(guān)鍵技術(shù)瓶頸。
在可用性方面,YashanDB 共享集群提供金融級高可用能力,RPO為0、RTO<10S;在擴展方面,支持動態(tài)擴縮容,提供 0.8以上線性擴展比;在性能方面,YashanDB 共享集群可以支撐更多的用戶請求高效處理,具有更高的吞吐量,經(jīng)實測,在同等硬件條件下,YashanDB 共享集群 TPC-C 基準(zhǔn)測試(用于評測數(shù)據(jù)庫的聯(lián)機交易處理能力)表現(xiàn)比 Oracle RAC 高 30%。
·快速恢復(fù)與連續(xù)性技術(shù)保證金融級高可用
核心系統(tǒng)對高可用的要求非常嚴(yán)苛,采用共享集群的客戶一般都是看重其高可用能力,故障自動切換無需運維干預(yù)且RPO 為0。
傳統(tǒng)的主備通常選擇異步復(fù)制,故障切換時RPO 不為0,如果選擇同步復(fù)制往往可用性大大降低,略微的網(wǎng)絡(luò)抖動導(dǎo)致延遲會大大增加,此外無論選擇哪種復(fù)制方式,單點故障后都會產(chǎn)生額外的運維工作。而分布式系統(tǒng)帶來的應(yīng)用架構(gòu)以及運維的復(fù)雜化,需要有較強開發(fā)能力的團隊才能駕馭。
共享集群具備天然的高可用優(yōu)勢,任何一個實例故障后都不影響應(yīng)用的連續(xù)性,YashanDB使用了快速恢復(fù)和連接連續(xù)性技術(shù)保證服務(wù)端的透明接管和客戶端的透明切換,這意味著當(dāng)單節(jié)點發(fā)生故障時,YashanDB 既可以快速自動地將故障實例的數(shù)據(jù)恢復(fù)到存活實例,繼續(xù)提供服務(wù),又能實現(xiàn)業(yè)務(wù)查詢不中斷、不報錯。
通過快速恢復(fù)技術(shù)實現(xiàn)在服務(wù)端接管時,集群中每個數(shù)據(jù)庫實例都會指定一個輔助恢復(fù)實例接受其日志和臟頁,在其故障時可極速接管該實例,針對故障實例臟頁的操作請求的 RTO極大降低。
除了快速恢復(fù)以外,針對客戶端的透明切換,YashanDB 使用連接連續(xù)性技術(shù)讓業(yè)務(wù)無感知,客戶端(application failover)集群中單數(shù)據(jù)庫實例故障時,原有客戶端連接可以自動切換到其他正常運行的實例,原有查詢操作可繼續(xù)進行,保證應(yīng)用的高可用。
·解鎖共享集群關(guān)鍵技術(shù) 高性能多實例讀寫
共享集群技術(shù)為何是數(shù)據(jù)庫技術(shù)的“塔尖”技術(shù)?最核心的難點在于實例間的交互,如何保證多個實例間數(shù)據(jù)的強一致性?如何協(xié)調(diào)數(shù)據(jù)之間發(fā)生的沖突?如何處理網(wǎng)絡(luò)通信的各種異常情況?這對架構(gòu)設(shè)計的挑戰(zhàn)非常大,需要一整套協(xié)調(diào)機制來實現(xiàn)。
YashanDB共享集群中所有數(shù)據(jù)庫實例共享緩存,本地訪問頁面時若未命中,可通過網(wǎng)絡(luò)從其他實例拿到最新版本頁面,實現(xiàn)數(shù)據(jù)交換,應(yīng)用可以連接任意節(jié)點訪問和使用數(shù)據(jù)庫完整能力。為解決讀寫沖突,提高讀寫性能,YashanDB自研“七種武器”逐一破解難題:
?頁內(nèi)鎖技術(shù),YashanDB在數(shù)據(jù)頁面中同時包含數(shù)據(jù)和鎖的信息,避免多次發(fā)送;
?免鎖讀技術(shù),通過Page級別的Consistent Read能力實現(xiàn)一致性讀,可緩解實例間讀寫沖突;
?去中心化的事務(wù)管理機制,避免事務(wù)管理中心化帶來的性能瓶頸和擴展瓶頸;
?基于時間戳的MVCC(Multi-version Concurrency Control,多版本并發(fā)控制)機制,以及實例間lamport消息方式實現(xiàn)時間戳同步,確??鐚嵗臄?shù)據(jù)交換不影響事務(wù)可見性;
?實例親和性的空間分配機制,實例間對同一張表并行導(dǎo)入數(shù)據(jù)時避免了空間爭用;
?基于負(fù)載緩存自動調(diào)度策略,提高集群整體緩存命中率;
?臟頁快傳技術(shù),臟頁在實例間傳遞時,在遵從WAL(Write Ahead Logging,預(yù)寫日志)協(xié)議前提下,減少磁盤IO等待,極大降低處理時延。
除此之外,為了提高數(shù)據(jù)庫的性能,YashanDB自研集群文件系統(tǒng),采用 In memory FAT(Allocation Table, 文件分區(qū)表) + Direct access 專利技術(shù),該技術(shù)能實現(xiàn)文件系統(tǒng)元數(shù)據(jù)常駐內(nèi)存,提供更高效的存儲管理能力和效率。文件系統(tǒng)客戶端程序通過直連共享內(nèi)存訪問 FAT 數(shù)據(jù),確保 YashanDB 針對所有持久化文件(包括但不限于控制文件、數(shù)據(jù)文件以及redo文件)的 read/write 操作,不涉及等待磁盤 IO 或網(wǎng)絡(luò) IO,實現(xiàn)性能最優(yōu)。
·融入原創(chuàng)理論 突破性能極限
深圳計算科學(xué)研究院是深圳市政府批準(zhǔn)建設(shè)的“十大基礎(chǔ)研究機構(gòu)”之一,區(qū)別于市場上的大多數(shù)企業(yè),其全自研的基礎(chǔ)軟件系統(tǒng)產(chǎn)品擁有世界領(lǐng)先的基礎(chǔ)理論作為支撐。針對數(shù)據(jù)庫系統(tǒng)事務(wù)吞吐量隨著計算核數(shù)的增加反而降低等難題,YashanDB 提出了自適應(yīng)的異步并行任務(wù)調(diào)度機制,將傳統(tǒng)的分區(qū)方法變革為新型的調(diào)度方法,測算多核線程之間的調(diào)度代價,評估算子代價或統(tǒng)計擬合代價,遞進計算多任務(wù)、多事務(wù)的全過程執(zhí)行時間,在確保 YashanDB 數(shù)據(jù)庫系統(tǒng)事務(wù)處理通用性的情況下,大幅度降低了多核之間的事務(wù)沖突協(xié)調(diào)開銷。相對于同步調(diào)度和異步調(diào)度,自適應(yīng)異步并行調(diào)度分別提高了 14.7 倍和 4.8 倍。
結(jié)語
在數(shù)據(jù)庫國產(chǎn)化替代的浪潮下,國內(nèi)數(shù)據(jù)庫市場呈現(xiàn)“百花齊放”的狀態(tài),多種數(shù)據(jù)庫類型以及產(chǎn)品橫空出世。數(shù)據(jù)庫是一個多樣化的市場,企業(yè)也會根據(jù)自己的業(yè)務(wù)場景和需求,來選擇更加適合的數(shù)據(jù)庫架構(gòu)以及產(chǎn)品。
針對金融、運營商等行業(yè)對核心系統(tǒng)的關(guān)鍵訴求,YashanDB勇攀高峰,敢于挑戰(zhàn)行業(yè)尖端技術(shù),推出共享集群產(chǎn)品。相信,通過“原創(chuàng)理論+領(lǐng)先架構(gòu)+工程能力”三位一體的工程研發(fā)體系,YashanDB 打造的技術(shù)先進、性能穩(wěn)定、持續(xù)創(chuàng)新的產(chǎn)品內(nèi)核,能實現(xiàn)以“根技術(shù)”筑牢行業(yè)自主創(chuàng)新發(fā)展的根基,推動金融、電信等行業(yè)核心系統(tǒng)國產(chǎn)化替換的規(guī)?;瘧?yīng)用。