“分布式透明化”在杭州銀行核心上線之思考
原創(chuàng)作為國(guó)家支柱性行業(yè),金融業(yè)在國(guó)民經(jīng)濟(jì)中發(fā)揮著舉足輕重的作用。近些年來金融業(yè)的運(yùn)營(yíng)模式和服務(wù)方式都發(fā)生了很大變化,這對(duì)于金融科技提出更高要求。與此同時(shí),國(guó)內(nèi)金融機(jī)構(gòu)還面臨國(guó)產(chǎn)化訴求,用以應(yīng)對(duì)脫鉤、斷供等潛在風(fēng)險(xiǎn)。作為數(shù)據(jù)應(yīng)用高地,金融企業(yè)普遍存在業(yè)務(wù)復(fù)雜、可用性要求高等特點(diǎn),尤其是以銀行核心系統(tǒng)為代表。對(duì)銀行核心系統(tǒng)提供做架構(gòu)升級(jí)、國(guó)產(chǎn)化改造是風(fēng)險(xiǎn)極大的一項(xiàng)工程。近期,國(guó)內(nèi)杭州銀行新一代核心系統(tǒng)成功上線,引起業(yè)內(nèi)普遍關(guān)注。筆者有幸受邀對(duì)項(xiàng)目實(shí)施方做了專訪,了解項(xiàng)目實(shí)施中的一些細(xì)節(jié)。作為用戶的行方從開始就秉承著應(yīng)用與基礎(chǔ)設(shè)施解耦架構(gòu)思想、分布式透明化的設(shè)計(jì)開發(fā)理念,通過與國(guó)產(chǎn)分布式數(shù)據(jù)庫TiDB的通力合作,完成此次核心系統(tǒng)的成功上線。這為國(guó)內(nèi)廣大同類型銀行升級(jí),帶來積極參考意義;其背后的實(shí)踐過程也很值得思考。
1、銀行核心系統(tǒng)演進(jìn)及觀察
銀行核心系統(tǒng),也稱為 Core Banking,是銀行處理存款、貸款業(yè)務(wù)為主的核心IT系統(tǒng)。作為支撐業(yè)務(wù)營(yíng)運(yùn)的關(guān)鍵系統(tǒng)和銀行信息化的重要組成部分,被稱作銀行IT系統(tǒng)的“心臟”。同時(shí),銀行核心在整個(gè)銀行IT系統(tǒng)架構(gòu)中是其他業(yè)務(wù)子系統(tǒng)的基礎(chǔ),處于承上啟下的關(guān)鍵位置。核心系統(tǒng)在金融服務(wù)能力、處理性能等方面,對(duì)銀行日常經(jīng)營(yíng)的業(yè)務(wù)與流程優(yōu)化、提升客戶體驗(yàn)度、推動(dòng)業(yè)務(wù)改革或創(chuàng)新等方面起著決定性作用。
從歷史演進(jìn)來看,銀行核心系統(tǒng)經(jīng)歷了從手工時(shí)代到PC時(shí)代,到聯(lián)網(wǎng)聯(lián)機(jī)、數(shù)據(jù)大集中,再到以客戶為中心的發(fā)展歷程。從上世紀(jì)九十年代開始,銀行核心系統(tǒng)技術(shù)架構(gòu)從數(shù)據(jù)集中路線演進(jìn)而來的“胖核心”時(shí)期;到本世紀(jì)頭十年因核心系統(tǒng)龐大且耦合嚴(yán)重,將輔助功能拆分后形成的“瘦核心”時(shí)期;再到近十年來互聯(lián)網(wǎng)對(duì)銀行業(yè)務(wù)產(chǎn)生影響,銀行開始構(gòu)建分布式核心,形成以穩(wěn)態(tài)集中式架構(gòu)與敏態(tài)分布式架構(gòu)并存的情況。特別是在 2017 年,中國(guó)人民銀行提出發(fā)展規(guī)劃,鼓勵(lì)實(shí)施架構(gòu)轉(zhuǎn)型,包括采用分布式架構(gòu),這一趨勢(shì)推動(dòng)了分布式核心系統(tǒng)的發(fā)展。分布式核心系統(tǒng)的關(guān)鍵目標(biāo)是突破單機(jī)系統(tǒng)的數(shù)據(jù)存儲(chǔ)和處理能力上限,同時(shí)減小單點(diǎn)故障對(duì)整個(gè)系統(tǒng)的影響。這通過多機(jī)分片處理數(shù)據(jù)庫來實(shí)現(xiàn),提高了銀行系統(tǒng)的健壯性和可用性。
在推動(dòng)分布式核心發(fā)展中,以“微服務(wù)、單元化”為代表的架構(gòu)設(shè)計(jì)理念成為主流。前者是一種軟件架構(gòu)風(fēng)格,其應(yīng)用程序被拆分為一組小型、松耦合的、自治的服務(wù)。每個(gè)服務(wù)都可以獨(dú)立地進(jìn)行開發(fā)、部署和擴(kuò)展,并通過輕量級(jí)的通信機(jī)制(如HTTP、消息隊(duì)列等)進(jìn)行互相通信。其核心原則是將復(fù)雜的單體應(yīng)用程序拆分成更小、更可管理的部件,每個(gè)部件專注于完成一個(gè)特定的業(yè)務(wù)功能。后者則通過把一部分計(jì)算資源和一部分?jǐn)?shù)據(jù)資源進(jìn)行邏輯上的綁定,形成一個(gè)標(biāo)準(zhǔn)化的處理單元。每個(gè)處理單元具備完整的業(yè)務(wù)能力,但只處理全量數(shù)據(jù)中的一部分,簡(jiǎn)單理解一個(gè)單元就相當(dāng)于一個(gè)小分行。其核心原則是將業(yè)務(wù)拆分更為細(xì)小的處理單元,并可根據(jù)需要進(jìn)行擴(kuò)展。
無論采取兩種架構(gòu)之一或兼而有之,都對(duì)底層基礎(chǔ)設(shè)施提出更高的要求,特別是數(shù)據(jù)的主要載體-數(shù)據(jù)庫。相對(duì)而言,單元化更傾向于通過數(shù)據(jù)拆分,將數(shù)據(jù)形成一個(gè)自包含的處理單元,對(duì)數(shù)據(jù)庫的承載體量、處理能力可以通過單機(jī)或集中式數(shù)據(jù)庫完成。但由于單元化架構(gòu)學(xué)習(xí)、實(shí)施成本很高,比較適合于體量較大或有異地多活規(guī)劃的銀行。對(duì)以城商行為代表的廣大中小規(guī)模銀行來說,因其技術(shù)底子相對(duì)較薄、業(yè)務(wù)系統(tǒng)多以外購(gòu)或合作開發(fā)為主且財(cái)力投入相對(duì)有限,上述原因都造成了單元化對(duì)于中小行不太適合,那么中小行也更多采用“微服務(wù)+分布式數(shù)據(jù)庫”的道路。
隨著近十年國(guó)產(chǎn)分布式數(shù)據(jù)庫的快速發(fā)展,其成熟度、穩(wěn)定性等已趨于完善,開始在金融核心系統(tǒng)為代表的重要業(yè)務(wù)系統(tǒng)中嘗試使用。當(dāng)然,這一新架構(gòu)產(chǎn)品對(duì)架構(gòu)、開發(fā)、運(yùn)維等都帶來很多變化。特別是架構(gòu)、研發(fā)層面,之前業(yè)務(wù)系統(tǒng)在設(shè)計(jì)上多是以集中式數(shù)據(jù)庫能力為基礎(chǔ)進(jìn)行的,對(duì)于分布式架構(gòu)存在諸多差異。如何降低這一差異,盡量復(fù)用之前架構(gòu)設(shè)計(jì),甚至做到將應(yīng)用與底層基礎(chǔ)架構(gòu)解耦成為關(guān)鍵。這里提出一種新的觀點(diǎn)-“分布式透明化”,即在分布式架構(gòu)下仍然可沿用單機(jī)或集中式數(shù)據(jù)庫的開發(fā)設(shè)計(jì)習(xí)慣,做到完全無感。這里不是簡(jiǎn)單的與某種數(shù)據(jù)庫的語法、運(yùn)維兼容的問題,而是從架構(gòu)之初就可以透明處理。正是這種分布式透明化能力給城商行等中小銀行的核心系統(tǒng)國(guó)產(chǎn)化及升級(jí)改造,提供了一條平滑的創(chuàng)新之路。
2、TiDB在杭州銀行新一代核心的實(shí)踐
近期,杭州銀行以 TiDB 為底層數(shù)據(jù)庫的新一代核心業(yè)務(wù)系統(tǒng)成功投產(chǎn)上線,也是業(yè)內(nèi)首個(gè)實(shí)際投產(chǎn)的云原生、分布式、全棧國(guó)產(chǎn)化的銀行核心系統(tǒng)上線,是金融科技領(lǐng)域突破關(guān)鍵核心技術(shù)應(yīng)用的重大實(shí)踐,標(biāo)志著杭州銀行核心業(yè)務(wù)系統(tǒng)實(shí)現(xiàn)完全自主可控和架構(gòu)升級(jí)。這一實(shí)踐中正是遵循了“分布式透明化”這一理念,為廣大同業(yè)建設(shè)核心系統(tǒng)架構(gòu)轉(zhuǎn)型提供了參考。杭州銀行此次核心系統(tǒng)升級(jí),在規(guī)劃之初就將業(yè)務(wù)與基礎(chǔ)設(shè)施解耦放在首要因素,從多角度對(duì)底層數(shù)據(jù)庫提出很高要求。
- 從架構(gòu)角度來看,首要問題就是解決所謂透明化問題,即對(duì)數(shù)據(jù)庫建模、設(shè)計(jì)、開發(fā)過程仍可沿用之前的實(shí)踐,盡量減少因引入分布式數(shù)據(jù)庫所造成的差異。一方面業(yè)務(wù)系統(tǒng)開發(fā)中很難避免人員的更迭,另一方面很多業(yè)務(wù)系統(tǒng)也是采用合作開發(fā)模式。透明化對(duì)于最大化保留原有開發(fā)積累,有著重要意義。其次就是需要數(shù)據(jù)提供全面的兼容能力,對(duì)上可以兼容新型應(yīng)用架構(gòu),包括微服務(wù)、云原生及可能會(huì)有單元化;向下可兼容具備自主創(chuàng)新能力的基礎(chǔ)平臺(tái)。第三則是希望數(shù)據(jù)庫提供標(biāo)準(zhǔn)而非定制化能力,這也是基于業(yè)內(nèi)實(shí)踐,很多國(guó)產(chǎn)數(shù)據(jù)庫當(dāng)面臨功能不足時(shí)會(huì)提供定制開發(fā)已解決問題,但這是不利于用戶長(zhǎng)期技術(shù)戰(zhàn)略的。
- 從研發(fā)角度來看,針對(duì)數(shù)據(jù)分片后不可避免的分布式事務(wù)問題,在框架層尚無成熟完善的分布式事務(wù)解決方案下,充分利用底層數(shù)據(jù)庫的分布式事務(wù)能力來解決,這樣開發(fā)簡(jiǎn)化很多。弱化對(duì)數(shù)據(jù)庫特性功能的依賴,將很多功能前置到框架層來解決。例如針對(duì)數(shù)據(jù)庫中常用的序列功能,即可在框架層提供分布式全局發(fā)號(hào)器來解決,不再依賴數(shù)據(jù)庫實(shí)現(xiàn)。針對(duì)數(shù)據(jù)庫經(jīng)常需面對(duì)的熱點(diǎn)問題,雖然分布式架構(gòu)能在一定程度上緩解這一問題,但在開發(fā)方面仍可以有多重手段去前置解決。例如,通過緩存與數(shù)據(jù)庫的結(jié)合,降低對(duì)數(shù)據(jù)庫熱點(diǎn)對(duì)象的訪問。通過將業(yè)務(wù)處理異步化,將對(duì)數(shù)據(jù)庫壓力分散開來。這些措施都可以有效解決熱點(diǎn)問題。針對(duì)具備金融特點(diǎn)的跑批類業(yè)務(wù),通過將處理工作打散并行可以有效提高吞吐量,消除批量熱點(diǎn),充分利用分布式數(shù)據(jù)庫的豐富算力。例如針對(duì)銀行核心系統(tǒng)日終及日間批量處理采用帶有業(yè)務(wù)屬性的分布式調(diào)度器,充分發(fā)揮分布式數(shù)據(jù)庫TiDB支持多會(huì)話及高并發(fā)處理特性,在原有作業(yè)流程基礎(chǔ)上由調(diào)度器使用分段SQL語句或分片算法將任務(wù)平均分配,并將分片任務(wù)同時(shí)下發(fā)到多個(gè)執(zhí)行器節(jié)點(diǎn)并行處理提升批量處理性能;同時(shí)批量任務(wù)執(zhí)行器節(jié)點(diǎn)和TiDB數(shù)據(jù)庫節(jié)點(diǎn)均可實(shí)現(xiàn)彈性水平擴(kuò)展,保證杭州銀行在未來業(yè)務(wù)快速增長(zhǎng)、數(shù)據(jù)規(guī)模急劇擴(kuò)大的情況下,批量處理性能不降級(jí)。
- 從運(yùn)維角度來看,引入分布式數(shù)據(jù)庫會(huì)帶來不小的挑戰(zhàn),當(dāng)然同時(shí)也有著明顯收益。從數(shù)據(jù)完整性角度來看,以 TiDB 為代表的原生分布式架構(gòu)產(chǎn)品提供的是基于共識(shí)協(xié)議的多副本機(jī)制,能保障數(shù)據(jù)的強(qiáng)一致性和完整性。從可行性來看,分布式數(shù)據(jù)庫產(chǎn)品多通過三中心仲裁方式來提供整體高可用性,但這一方式成本較高。TiDB 在實(shí)現(xiàn)上提供了更為經(jīng)濟(jì)的強(qiáng)雙中心方案,即當(dāng)滿足同城低延遲的條件下,可通過兩中心提供同樣的可用性保障能力。通過同城強(qiáng)雙中心與異地備份的結(jié)合,最終達(dá)到RPO=0的可用性標(biāo)準(zhǔn)。這也是很多金融行業(yè)用戶最終選擇分布式數(shù)據(jù)庫架構(gòu)的原因,其不僅可提供高并發(fā)、高擴(kuò)展性,其整體較高的可用性及容災(zāi)能力也是被選擇關(guān)鍵理由之一。同時(shí)這一架構(gòu)還提供跨中心的多寫多讀能力,這對(duì)于業(yè)務(wù)側(cè)實(shí)現(xiàn)業(yè)務(wù)同城多活具備重大意義。針對(duì)在具體運(yùn)維工作中普遍比較頭疼的大表 DDL 變更、分布式監(jiān)控問題,TiDB 也通過特有的對(duì)象在線變更技術(shù)及可觀測(cè)技術(shù)解決了整體的維護(hù)性。金融行業(yè)作為涉及國(guó)計(jì)民生的重要行業(yè),對(duì)于供應(yīng)鏈安全尤為重視,因此希望數(shù)據(jù)庫產(chǎn)品能提供底層適配能力。TiDB 在這方面提供了多種架構(gòu) CPU 的適配能力,可滿足用戶未來可能的遷移需求,從根本解決“斷供”問題。
杭州銀行核心系統(tǒng)升級(jí),正是從架構(gòu)、研發(fā)、運(yùn)維多角度出發(fā),在充分考慮新型分布式數(shù)據(jù)庫能力的同時(shí),結(jié)合自身技術(shù)發(fā)展現(xiàn)狀及長(zhǎng)遠(yuǎn)規(guī)劃,最終選擇 TiDB 作為核心系統(tǒng)的數(shù)據(jù)庫,并通過近兩年與廠商的通力協(xié)作成功上線。杭州銀行新一代核心系統(tǒng)上線以來運(yùn)行安全穩(wěn)定,大幅提升了業(yè)務(wù)處理效率,已支撐日均交易量 1000+ 萬筆,平均交易耗時(shí)小于 100 毫秒,較原核心業(yè)務(wù)系統(tǒng)縮減 54%,日終跑批的處理速度為原核心業(yè)務(wù)系統(tǒng)的 2.1 倍,能夠有效支撐未來業(yè)務(wù)的快速發(fā)展。
3、杭州銀行實(shí)踐帶來的思考
杭州銀行核心系統(tǒng)的成功上線,為廣大同業(yè)者及數(shù)據(jù)庫行業(yè)帶來很多思考。中國(guó)有數(shù)千家金融機(jī)構(gòu),隨著業(yè)務(wù)發(fā)展及技術(shù)演進(jìn),都正面臨架構(gòu)升級(jí)改造的工作。但由于各金融機(jī)構(gòu),體量差異巨大、發(fā)展階段不同、技術(shù)路線各異,很難找到通用性、標(biāo)準(zhǔn)化的路徑。與此同時(shí),數(shù)據(jù)庫的發(fā)展近年來也呈現(xiàn)“井噴式”發(fā)展,一方面采用新架構(gòu)、新理念的分布式數(shù)據(jù)庫不斷涌現(xiàn);另一方面?zhèn)鹘y(tǒng)單機(jī)、集中式數(shù)據(jù)庫也紛紛推陳出新。上述問題,共同造成金融用戶在架構(gòu)升級(jí)改造中很多痛點(diǎn)。從技術(shù)架構(gòu)上看,數(shù)據(jù)庫可分為集中式數(shù)據(jù)庫、分庫分表型分布式數(shù)據(jù)庫、原生分布式數(shù)據(jù)庫,不同架構(gòu)數(shù)據(jù)庫產(chǎn)品各有其特點(diǎn)。集中式產(chǎn)品更符合用戶使用習(xí)慣,可實(shí)現(xiàn)相對(duì)順滑的“平替”,但也面臨承載力有限等問題。分庫分表型分布式數(shù)據(jù)庫,因可知悉數(shù)據(jù)精準(zhǔn)分布,計(jì)算效率更高,但需面臨必要的應(yīng)用改造。原生分布式數(shù)據(jù)庫,相對(duì)折中,盡量保留原有使用習(xí)慣下,提供一定的平滑遷移能力。上述三種方案,各有優(yōu)缺點(diǎn),要看用戶數(shù)據(jù)體量、業(yè)務(wù)復(fù)雜度、底層技術(shù)積累等多種因素。
近日杭州銀行核心系統(tǒng)上線,正是走出了一條的適合自己的實(shí)踐道路,其秉承的應(yīng)用與基礎(chǔ)設(shè)施解耦的架構(gòu)思想,分布式透明化的設(shè)計(jì)開發(fā)理念對(duì)同行業(yè)具有很大參考意義。在既保持了原有使用習(xí)慣的基礎(chǔ)上,又在整體架構(gòu)路線方面選擇了可持續(xù)創(chuàng)新的架構(gòu)。未來,希望廣大金融IT從業(yè)者,在面臨國(guó)產(chǎn)化升級(jí)的整體規(guī)劃上,既需要考慮企業(yè)當(dāng)前現(xiàn)狀,也能充分瞄準(zhǔn)未來架構(gòu)的延伸性,以創(chuàng)新的思維推動(dòng)銀行核心系統(tǒng)的整體升級(jí),共同助力中國(guó)金融的數(shù)字化轉(zhuǎn)型。