這是最好的時(shí)代,也是最壞的時(shí)代。在這個(gè)時(shí)代,我們有各種技術(shù)可以選擇;而同時(shí),在這個(gè)時(shí)代,我們有各種技術(shù)要選擇。
近年來(lái),國(guó)家不斷提高對(duì)信息技術(shù)安全、自主可控的戰(zhàn)略要求,銀行業(yè)希望在快速發(fā)展業(yè)務(wù)的同時(shí)不斷降低經(jīng)營(yíng)成本。這不僅促使商業(yè)銀行積極提升自主掌控能力,同時(shí),對(duì)基礎(chǔ)軟件的服務(wù)能力、軟硬件升級(jí)成本控制也提出了新的要求。面對(duì)互聯(lián)網(wǎng)金融新業(yè)務(wù)帶來(lái)的交易復(fù)雜度及交易頻次的大幅提升,商業(yè)銀行信息系統(tǒng)原來(lái)采用的傳統(tǒng)數(shù)據(jù)庫(kù)一體化解決方案,在應(yīng)對(duì)此類場(chǎng)景時(shí)遇到了明顯的性能瓶頸,而提升系統(tǒng)性能只靠替換式的硬件升級(jí),成本昂貴。在這種背景下,引入一種高性能、可彈性擴(kuò)展、能夠支持互聯(lián)網(wǎng)OLTP場(chǎng)景的數(shù)據(jù)庫(kù)成為北京銀行系統(tǒng)建設(shè)的優(yōu)先選擇方案。
傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)在面臨互聯(lián)網(wǎng)應(yīng)用時(shí),有一些不能回避的痛點(diǎn)。2008年以前,數(shù)據(jù)庫(kù)基本上是以單機(jī)型為主,比如廣為人知的Oracle、MySQL、PostgreSQL等單機(jī)數(shù)據(jù)庫(kù)支撐的數(shù)據(jù)存儲(chǔ)業(yè)務(wù),但是隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,接入到互聯(lián)網(wǎng)的設(shè)備越來(lái)越多,數(shù)據(jù)量越來(lái)越大,并發(fā)處理需求越來(lái)越急迫,各界業(yè)者們漸漸發(fā)現(xiàn)這種單機(jī)關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿足在互聯(lián)網(wǎng)中遇到的諸如大數(shù)據(jù)存儲(chǔ)、高并發(fā)等問(wèn)題。于是,以 Google 為代表的一些互聯(lián)網(wǎng)公司開始轉(zhuǎn)向 NoSQL 這種分布式的數(shù)據(jù)庫(kù),這是一個(gè)犧牲掉部分關(guān)系轉(zhuǎn)向追求可擴(kuò)展性的模型。但是近幾年來(lái),很多業(yè)務(wù)不能直接以 NoSQL 的模型來(lái)生搬硬套,很多已有業(yè)務(wù) ,特別是對(duì)傳統(tǒng)行業(yè),比如銀行業(yè)來(lái)說(shuō),歷史遺留下來(lái)的程序都是以關(guān)系型數(shù)據(jù)庫(kù)為基礎(chǔ)的,所以很難把這些Old-SQL 的資源放在一個(gè)分布式的場(chǎng)景來(lái)使用。難道就沒(méi)有辦法將單機(jī)型SQL關(guān)系模型與NoSQL的分布式能力結(jié)合在一起嗎?之后不久,NewSQL型數(shù)據(jù)庫(kù)應(yīng)用而生。
今年3月,北京銀行分布式核心交易系統(tǒng)完成投產(chǎn),成為國(guó)內(nèi)首家采用NewSQL數(shù)據(jù)庫(kù)方案應(yīng)用于核心交易場(chǎng)景的銀行
今年3月,北京銀行分布式核心交易系統(tǒng)完成投產(chǎn),成為國(guó)內(nèi)首家采用NewSQL數(shù)據(jù)庫(kù)方案應(yīng)用于核心交易場(chǎng)景的銀行。此系統(tǒng)的投產(chǎn)使北京銀行信息系統(tǒng)可以從容面對(duì)“雙十一”等高并發(fā)、大交易量的業(yè)務(wù)場(chǎng)景,提供更強(qiáng)的服務(wù)能力,并且改變以往只能通過(guò)硬件替換式升級(jí)的局面,可以快速、持續(xù)、低成本地支撐業(yè)務(wù)量增長(zhǎng)。北京銀行實(shí)現(xiàn)了兩地三中心五副本的部署模式,具備服務(wù)器級(jí)、機(jī)房級(jí)的容災(zāi)能力,大大提升了信息系統(tǒng)可靠性。
雖然分布式事務(wù)數(shù)據(jù)庫(kù)在互聯(lián)網(wǎng)應(yīng)用場(chǎng)景下的探索取得了良好的成效和大量的實(shí)戰(zhàn)經(jīng)驗(yàn),積累了很多成熟的技術(shù),但相比互聯(lián)網(wǎng)企業(yè),金融行業(yè)對(duì)風(fēng)險(xiǎn)控制的要求更高,所以在面對(duì)高復(fù)雜度交易場(chǎng)景、業(yè)務(wù)實(shí)時(shí)高一致性等方面的需求時(shí),需要更為完善的技術(shù)方案支持。所以,北京銀行對(duì)于分布式數(shù)據(jù)庫(kù)的選擇也比較謹(jǐn)慎,利用兩輪專項(xiàng)POC評(píng)測(cè)來(lái)探索分布式數(shù)據(jù)庫(kù)的適用場(chǎng)景及性能指標(biāo),并且為了為避免測(cè)試場(chǎng)景的單一化、模式化、常規(guī)化,北京銀行提出“標(biāo)準(zhǔn)化交易組”的概念,盡可能模擬銀行真實(shí)使用場(chǎng)景,使測(cè)試結(jié)果更加真實(shí)準(zhǔn)確。
目前絕大部分分布式數(shù)據(jù)庫(kù)解決方案都是基于MySQL主從復(fù)制結(jié)合分庫(kù)分表中間件方式進(jìn)行改造和集成。此類架構(gòu)離銀行業(yè)務(wù)場(chǎng)景中的高可用和多中心容災(zāi)及多活的高級(jí)別安全要求有一定距離。北京銀行率先采用了兩地三中心五副本的高可用部署架構(gòu)方案,支持同城兩中心多活,并具備服務(wù)器級(jí)、機(jī)柜級(jí)、數(shù)據(jù)中心級(jí)容災(zāi)能力。滿足金融行業(yè)對(duì)風(fēng)險(xiǎn)控制的嚴(yán)格要求的同時(shí),提高北京銀行信息系統(tǒng)對(duì)業(yè)務(wù)支撐的持續(xù)性。
相比于傳統(tǒng)數(shù)據(jù)庫(kù)架構(gòu),分布式事務(wù)數(shù)據(jù)庫(kù)架構(gòu)更加復(fù)雜,組成部件更多。并且,面對(duì)OLTP的場(chǎng)景,分布式事務(wù)數(shù)據(jù)庫(kù)進(jìn)行一次事務(wù)操作比傳統(tǒng)數(shù)據(jù)庫(kù)要復(fù)雜的多,需要面臨更多挑戰(zhàn)。北京銀行認(rèn)為建設(shè)一套完備、針對(duì)性強(qiáng)的評(píng)測(cè)體系,用以檢驗(yàn)遷移分布式事務(wù)數(shù)據(jù)庫(kù)的可行性十分有必要。北京銀行建立評(píng)測(cè)體系有兩個(gè)目標(biāo):
分布式事務(wù)數(shù)據(jù)庫(kù)評(píng)測(cè)指標(biāo)
一是實(shí)現(xiàn)對(duì)分布式事務(wù)數(shù)據(jù)庫(kù)的全面評(píng)測(cè),北京銀行自主提出了一套“分布式事務(wù)數(shù)據(jù)庫(kù)評(píng)測(cè)指標(biāo)”(如圖),包含六大項(xiàng),二十一項(xiàng)細(xì)分功能指標(biāo)。六大項(xiàng)包括算法指標(biāo)、可靠性指標(biāo)、安全備份能力、個(gè)性化能力、數(shù)據(jù)庫(kù)支持能力和兼容性指標(biāo),再逐一對(duì)指標(biāo)項(xiàng)進(jìn)行驗(yàn)證,得到評(píng)測(cè)結(jié)果;二是驗(yàn)證數(shù)據(jù)庫(kù)遷移本地化可行性,提出“標(biāo)準(zhǔn)化交易組”概念,將生產(chǎn)實(shí)際運(yùn)行的典型交易遷移到開放式平臺(tái),用典型交易對(duì)分布式事務(wù)數(shù)據(jù)庫(kù)進(jìn)行測(cè)試,測(cè)試指標(biāo)包括TPS、QPS和響應(yīng)時(shí)間等性能指標(biāo)。同時(shí),利用“標(biāo)準(zhǔn)化交易組”進(jìn)行多場(chǎng)景組合,再對(duì)第一步提出的評(píng)測(cè)指標(biāo)進(jìn)行回測(cè)驗(yàn)證。
結(jié)合兩輪POC結(jié)果,入選產(chǎn)品表現(xiàn)出了架構(gòu)的先進(jìn)性和高效的性能,水平擴(kuò)展能力、交易處理能力和功能指標(biāo)均符合北京銀行對(duì)分布式數(shù)據(jù)庫(kù)產(chǎn)品的要求。其采用的Raft算法保證了數(shù)據(jù)的強(qiáng)一致性,同時(shí)可以實(shí)現(xiàn)兩地三中心多活的部署方式,以上特性在應(yīng)用中具備較大優(yōu)勢(shì)。除了優(yōu)秀的開源社區(qū)環(huán)境,其背后的團(tuán)隊(duì)在開發(fā)支持、技術(shù)培訓(xùn)、運(yùn)維服務(wù)、成本控制等方面也表現(xiàn)出了優(yōu)秀的素質(zhì)。
除了分布式NewSQL數(shù)據(jù)庫(kù)之外,針對(duì)服務(wù)領(lǐng)域應(yīng)用,北京銀行在微服務(wù)上進(jìn)行了相應(yīng)的探索,用到了兩個(gè)重要的系統(tǒng)——網(wǎng)聯(lián)支付清算平臺(tái)和銀聯(lián)無(wú)卡支付系統(tǒng),收益效果顯著。
首先,對(duì)比之前的傳統(tǒng)系統(tǒng)架構(gòu),其通過(guò)服務(wù)劃分,踐行了軟件設(shè)計(jì)思想中的“單一功能原則”,將復(fù)雜的問(wèn)題簡(jiǎn)單化,更有利于設(shè)計(jì)、開發(fā)、維護(hù),同時(shí)簡(jiǎn)單化的功能使得人員學(xué)習(xí)、掌握成本更低,以往需要整個(gè)開發(fā)團(tuán)隊(duì)共同協(xié)作研發(fā)的軟件功能,現(xiàn)在只需要2~3人便可以完成;其次,橫向擴(kuò)展能力較之前傳統(tǒng)應(yīng)用架構(gòu)有了長(zhǎng)足進(jìn)步。不用修改任何代碼,通過(guò)配置文件即可動(dòng)態(tài)完成集群擴(kuò)、縮容;最后,CI/CD效率顯著提升。每個(gè)微服務(wù)都具備“單一功能原則”,其將運(yùn)行所需資源包裝為容器形式發(fā)布,其不依賴于其它微服務(wù)或其它例如數(shù)據(jù)庫(kù)、內(nèi)存緩存等資源,因此其升級(jí)過(guò)程更為獨(dú)立,開發(fā)人員可以快速完成服務(wù)升級(jí)發(fā)布。北京銀行應(yīng)用“微服務(wù)+NewSQL”后的主要評(píng)測(cè)數(shù)據(jù)包括:
1.單節(jié)點(diǎn)測(cè)試、雙節(jié)點(diǎn)測(cè)試、多節(jié)點(diǎn)測(cè)試,用以測(cè)試橫向線性擴(kuò)展能力。
2.觀測(cè)多個(gè)服務(wù)節(jié)點(diǎn)CPU、內(nèi)存使用率,確認(rèn)其具備流量限制和負(fù)載均衡能力。
3.進(jìn)行系統(tǒng)滾動(dòng)升級(jí)測(cè)試,觀測(cè)請(qǐng)求響應(yīng)情況,確認(rèn)其可以支持不間斷服務(wù)的系統(tǒng)升級(jí)。
對(duì)于金融類信息系統(tǒng)而言,數(shù)據(jù)庫(kù)扮演著不可替換的基石作用,它的支撐能力至關(guān)重要,因此,北京銀行把分布式NewSQL數(shù)據(jù)庫(kù)的建設(shè)放在首要位置。
微服務(wù)與其它技術(shù)作為NewSQL數(shù)據(jù)庫(kù)的消費(fèi)者,同時(shí)也是NewSQL數(shù)據(jù)庫(kù)的價(jià)值輸出渠道,除了要滿足業(yè)務(wù)需求外,還應(yīng)更加緊密適配NewSQL數(shù)據(jù)庫(kù),將業(yè)務(wù)價(jià)值最大化。在實(shí)際應(yīng)用過(guò)程中,兩個(gè)方面的問(wèn)題顯得尤為重要:一是將分布式應(yīng)用架構(gòu)與分布式NewSQL數(shù)據(jù)庫(kù)作為一個(gè)整體進(jìn)行設(shè)計(jì),高度匹配二者能力矩陣,讓其共同發(fā)力,例如兩地三中心多活、灰度發(fā)布、流量負(fù)載、一致性保障等特性,只有二者都具備同等的能力才能最終釋放價(jià)值;二是分布式NewSQL數(shù)據(jù)庫(kù)兼容MySQL的SQL語(yǔ)法、驅(qū)動(dòng)標(biāo)準(zhǔn)、數(shù)據(jù)庫(kù)命令等技術(shù)標(biāo)準(zhǔn),但其基于分布式理論搭建,在事務(wù)模型、隔離級(jí)別、鎖實(shí)現(xiàn)機(jī)制等特性上均帶有分布式色彩,應(yīng)用系統(tǒng)在與其對(duì)接時(shí)應(yīng)充分考慮這些內(nèi)容,充分展現(xiàn)出分布式NewSQL數(shù)據(jù)庫(kù)的特色。
面對(duì)架構(gòu)改造升級(jí)變化巨大,在硬件選擇上,有兩點(diǎn)明顯變化。第一,由數(shù)據(jù)庫(kù)對(duì)硬件IO能力有所要求,采用了SSD磁盤替換SAS磁盤;第二,分布式系統(tǒng)架構(gòu)對(duì)網(wǎng)絡(luò)依賴較大,因此需保證較小的網(wǎng)絡(luò)延時(shí)和較大的傳輸帶寬。除此之外,并沒(méi)有特殊要求,采用的均為普通的X86服務(wù)器。
另外,由傳統(tǒng)數(shù)據(jù)庫(kù)過(guò)渡到分布式NewSQL數(shù)據(jù)庫(kù),由單體應(yīng)用到微服務(wù)應(yīng)用架構(gòu)模式,在人員需求方面也產(chǎn)生了一些變化:
1.成立專項(xiàng)創(chuàng)新小組,對(duì)開源軟件進(jìn)行應(yīng)用探索,可以較為敏捷地使用開源軟件釋放業(yè)務(wù)價(jià)值,同時(shí)甄別開源軟件是否可以滿足金融級(jí)應(yīng)用需求的能力,確保應(yīng)用安全。
2.北京銀行希望從“豎井式架構(gòu)”和“SOA架構(gòu)”轉(zhuǎn)型到微服務(wù)架構(gòu),其成敗關(guān)鍵在于人員的工作思路的變化以及技術(shù)的轉(zhuǎn)型。在進(jìn)行系統(tǒng)架構(gòu)升級(jí)之前,一定會(huì)投放相應(yīng)的資源進(jìn)行調(diào)研、評(píng)測(cè)、原型設(shè)計(jì)等相應(yīng)的工作,確保新架構(gòu)的可行性,人員能力在這個(gè)過(guò)程也順其自然得到了提升。同時(shí),銀行也積極推動(dòng)員工融入開源社區(qū)、積極擁抱新技術(shù),結(jié)合著實(shí)際工作,快速實(shí)現(xiàn)人員的技術(shù)轉(zhuǎn)型。
3.現(xiàn)今,F(xiàn)inTech高速發(fā)展,技術(shù)更新?lián)Q代速度快,這對(duì)技術(shù)人員提出了更高的要求。在銀行這種信息系統(tǒng)歷史資產(chǎn)龐大的企業(yè),科技人員一邊要在舊的系統(tǒng)上進(jìn)行研發(fā)、維護(hù),另一邊還要進(jìn)行新系統(tǒng)的開拓,的確會(huì)造成人員成本的升高。為此,行內(nèi)確定了兩條策略加以應(yīng)對(duì):一個(gè)是從基礎(chǔ)性軟件入手,著重信息系統(tǒng)能力建設(shè),范圍不求全,但一定是關(guān)鍵核心部件,釋放最大的業(yè)務(wù)價(jià)值;另一個(gè)是采用漸進(jìn)式方式,進(jìn)行新舊系統(tǒng)換代,給技術(shù)人員能夠提供一個(gè)相對(duì)充裕的緩沖期,保障升級(jí)穩(wěn)定及成本可控。
后期為確保穩(wěn)定安全,在網(wǎng)聯(lián)支付清算平臺(tái)和銀聯(lián)無(wú)卡支付平臺(tái)接入以后,北京銀行持續(xù)對(duì)數(shù)據(jù)庫(kù)性能進(jìn)行監(jiān)控,不斷對(duì)應(yīng)用提出修改意見;將NewSQL數(shù)據(jù)庫(kù)監(jiān)控接入總行統(tǒng)一監(jiān)控告警平臺(tái),加強(qiáng)運(yùn)維監(jiān)控力度;進(jìn)行不間斷服務(wù)滾動(dòng)升級(jí)改造,在數(shù)據(jù)庫(kù)部件進(jìn)行版本升級(jí)時(shí)依舊可以保證業(yè)務(wù)連續(xù)性。實(shí)踐一段時(shí)間后,北京銀行交易型數(shù)據(jù)庫(kù)NewSQL的轉(zhuǎn)型從以下三方面提升金融服務(wù)能力:
1.性能提升: 保障海量、高并發(fā)業(yè)務(wù)對(duì)接,交易處理效率大幅提升。
2.成本降低: 由X86服務(wù)器構(gòu)成分布式數(shù)據(jù)庫(kù)平臺(tái),大幅降低金融IT成本。
3.安全備份: 有效實(shí)現(xiàn)數(shù)據(jù)可追溯,滿足監(jiān)管要求;提高運(yùn)維自動(dòng)化。
目前國(guó)內(nèi)越來(lái)越多的金融機(jī)構(gòu)將開源技術(shù)作為主流應(yīng)用的技術(shù),而銀行在開展技術(shù)能力轉(zhuǎn)型建設(shè)的過(guò)程中,也必然會(huì)應(yīng)用越來(lái)越多的開源技術(shù)。開源軟件是當(dāng)前軟件發(fā)展的趨勢(shì),互聯(lián)網(wǎng)企業(yè)的大規(guī)模應(yīng)用和快速迭代使開源軟件成為先進(jìn)技術(shù)事實(shí)上的代表。傳統(tǒng)銀行業(yè)使用開源軟件的初衷是希望快速獲得互聯(lián)網(wǎng)企業(yè)同樣的能力,但是需要跨越多個(gè)技術(shù)挑戰(zhàn)。
未來(lái)在金融科技應(yīng)用創(chuàng)新領(lǐng)域上,北京銀行計(jì)劃從幾個(gè)方面,進(jìn)一步升級(jí)金融互聯(lián)網(wǎng)和大數(shù)據(jù)的應(yīng)用創(chuàng)新能力:一是繼續(xù)發(fā)展云計(jì)算技術(shù),利用云計(jì)算靈活的開發(fā)、集成、部署能力,縮短產(chǎn)品發(fā)布周期,快速響應(yīng)業(yè)務(wù)需求;二是依托大數(shù)據(jù)技術(shù),通過(guò)對(duì)客戶交易、行為、應(yīng)用等大容量、多樣性的數(shù)據(jù)進(jìn)行有效分析,精準(zhǔn)提升整體服務(wù)質(zhì)量、落實(shí)金融風(fēng)險(xiǎn)防控;三是將熱門感官技術(shù)引入到渠道服務(wù)中,與人工智能相結(jié)合,全力打造“全能智慧銀行”,實(shí)現(xiàn)用戶體驗(yàn)的持續(xù)創(chuàng)新。
不同于部分銀行在新興業(yè)務(wù)上采用互聯(lián)網(wǎng)公司提供的整體外包解決方案,北京銀行尋求自主可控能力,主動(dòng)在模式和管理上創(chuàng)新,與互聯(lián)網(wǎng)思維和技術(shù)不斷切磋、碰撞、融合。通過(guò)研究、評(píng)測(cè)、應(yīng)用、部署等工作,在實(shí)踐中做到了自主掌控。雙方在合作中互惠互利,利用雙方優(yōu)勢(shì),實(shí)現(xiàn)了信息系統(tǒng)服務(wù)能力的快速提升,打造出具有北京銀行特色的創(chuàng)新驅(qū)動(dòng)力。