河南移動(dòng)是河南省規(guī)模最大、客戶最多、業(yè)務(wù)產(chǎn)品最先進(jìn)、服務(wù)體系最完善的電信全業(yè)務(wù)運(yùn)營(yíng)企業(yè)之一。其原有核心營(yíng)業(yè)系統(tǒng)用戶量超6000 萬(wàn)、數(shù)據(jù)量超 80TB,面臨著數(shù)據(jù)容量大、業(yè)務(wù)連續(xù)性要求高等挑戰(zhàn),亟需進(jìn)行數(shù)據(jù)庫(kù)的分布式升級(jí)改造。經(jīng)過(guò)各項(xiàng)綜合評(píng)估,最終選定 OceanBase 作為其核心系統(tǒng)的分布式數(shù)據(jù)庫(kù)。在2024 外灘大會(huì)的OceanBase 見(jiàn)解論壇上,河南移動(dòng)高級(jí)專家彭慶軍作為嘉賓受邀分享了河南移動(dòng)營(yíng)業(yè)系統(tǒng)核心數(shù)據(jù)庫(kù)分布式改造升級(jí)經(jīng)驗(yàn)。他表示:基于自研軒轅數(shù)據(jù)總線替換方案,河南移動(dòng)在兩個(gè)月內(nèi)完成了一套承載1500萬(wàn)用戶的核心系統(tǒng),從傳統(tǒng)數(shù)據(jù)庫(kù)到 OceanBase 的平滑升級(jí),并取得運(yùn)維效率顯著提升、7×24 小時(shí)穩(wěn)定運(yùn)行的卓越成效。
01 建設(shè)背景:新一代IT架構(gòu)需要新一代數(shù)據(jù)庫(kù)
河南移動(dòng)的現(xiàn)網(wǎng)即核心營(yíng)業(yè)系統(tǒng)CRM呈數(shù)據(jù)容量大、業(yè)務(wù)并發(fā)高、連續(xù)性要求高、數(shù)據(jù)安全性高四大業(yè)務(wù)特征:
數(shù)據(jù)容量大。伴隨著業(yè)務(wù)發(fā)展,河南移動(dòng)用戶數(shù)量現(xiàn)已突破6000萬(wàn),其營(yíng)業(yè)核心系統(tǒng)數(shù)據(jù)量已超過(guò)80TB。相當(dāng)于每個(gè)庫(kù)擁有1500萬(wàn)用戶,大約20TB數(shù)據(jù)。
業(yè)務(wù)并發(fā)高。單庫(kù)日SQL數(shù)量超40億次,日訂單量3千萬(wàn)筆(含查詢工單),逢月末、月初業(yè)務(wù)量峰值更加持續(xù)增長(zhǎng)。
業(yè)務(wù)連續(xù)性要求高。眾所周知,移動(dòng)行業(yè)是涉及民生的基礎(chǔ)通信服務(wù),需要為用戶提供7*24h電信級(jí)服務(wù)保障,業(yè)務(wù)中斷三個(gè)小時(shí)即為重大故障。
數(shù)據(jù)安全性高。核心營(yíng)業(yè)系統(tǒng)數(shù)據(jù)庫(kù)存儲(chǔ)著超1500萬(wàn)用戶的敏感信息和數(shù)據(jù),數(shù)據(jù)不能錯(cuò)、不能丟,且存儲(chǔ)和訪問(wèn)安全要求高。
彭慶軍介紹,河南移動(dòng)新一代IT架構(gòu)對(duì)數(shù)據(jù)庫(kù)有七大需求:高兼容、高可靠、高性能、高擴(kuò)展、高容量、高安全、高運(yùn)維。
對(duì)于當(dāng)時(shí)的河南移動(dòng)來(lái)說(shuō),數(shù)據(jù)庫(kù)改造面臨成本高、訪問(wèn)性能低、割接風(fēng)險(xiǎn)大、替換周期長(zhǎng)四大難題。傳統(tǒng)的數(shù)據(jù)庫(kù)替換方案主要圍繞功能、性能、運(yùn)維,涉及數(shù)據(jù)庫(kù)和應(yīng)用系統(tǒng)兩方面,一般存在兩種替換方案:一,從Oracle遷移到國(guó)產(chǎn)數(shù)據(jù)庫(kù),需要該國(guó)產(chǎn)數(shù)據(jù)庫(kù)完全適配應(yīng)用和兼容Oracle;二,應(yīng)用適配國(guó)產(chǎn)數(shù)據(jù)庫(kù),這是目前數(shù)據(jù)庫(kù)替換采用的主流方案。
因?yàn)閿?shù)據(jù)庫(kù)的替換歷來(lái)高風(fēng)險(xiǎn)低收益,而通過(guò)應(yīng)用進(jìn)行大量適配改造的換庫(kù)方式等于是單程車票,不僅并行期應(yīng)用存在兩個(gè)版本,且上線后難以回切,一旦替換后的新庫(kù)不滿足要求,再次替換的難度和風(fēng)險(xiǎn)更高。有沒(méi)有第三種替換方案?
基于此,河南移動(dòng)開(kāi)始為核心系統(tǒng)探尋新的數(shù)據(jù)庫(kù)。根據(jù)河南移動(dòng)的經(jīng)驗(yàn),數(shù)據(jù)庫(kù)選型可以分為兩個(gè)方面:一是如何評(píng)估一家數(shù)據(jù)庫(kù)企業(yè)”;二是如何評(píng)估一款數(shù)據(jù)庫(kù)產(chǎn)品。
在彭慶軍看來(lái),第一要看企業(yè)的綜合實(shí)力,其次是企業(yè)的研發(fā)實(shí)力,最后需要關(guān)注這個(gè)企業(yè)做的產(chǎn)品是“長(zhǎng)期主義”還是“短期的功利主義”。
02 兩個(gè)月完成割接上線,成效顯著
河南移動(dòng)從選型到上線整體周期歷經(jīng)7個(gè)月。2023年5月,河南移動(dòng)開(kāi)啟國(guó)產(chǎn)數(shù)據(jù)庫(kù)選型,并重點(diǎn)關(guān)注幾大國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù);6月,河南移動(dòng)選型集團(tuán)公招標(biāo)中標(biāo)的OceanBase;9月,雙方團(tuán)隊(duì)一起確認(rèn)升級(jí)改造方案;10月,召開(kāi)國(guó)產(chǎn)升級(jí)啟動(dòng)會(huì);12月,核心系統(tǒng)成功割接上線。截止2024年9月底,河南移動(dòng)核心營(yíng)業(yè)系統(tǒng)數(shù)據(jù)庫(kù)已穩(wěn)定運(yùn)行300余天。
彭慶軍介紹:在確認(rèn)升級(jí)改造方案時(shí),團(tuán)隊(duì)一直比較猶豫,因?yàn)楹诵南到y(tǒng)升級(jí)至國(guó)產(chǎn)數(shù)據(jù)庫(kù)的動(dòng)作很大,擔(dān)心分布式數(shù)據(jù)庫(kù)上線后運(yùn)行不穩(wěn),害怕沒(méi)有給業(yè)務(wù)帶來(lái)任何效益;诖,河南移動(dòng)調(diào)研了已經(jīng)上線OceanBase的山東移動(dòng)和江蘇移動(dòng)。在聽(tīng)取了兩地的實(shí)踐經(jīng)驗(yàn)后,整個(gè)團(tuán)隊(duì)心里底氣大增。10月份,正式啟動(dòng)了核心營(yíng)業(yè)系統(tǒng)數(shù)據(jù)庫(kù)的分布式產(chǎn)升級(jí)之路。最終僅用兩個(gè)月,當(dāng)年12月份即完成系統(tǒng)上線!
完成遷移升級(jí)之后,河南移動(dòng)建設(shè)成效顯著,基本總結(jié)為“一少、二快、三穩(wěn)、四超”。
投入少。應(yīng)用不改,人力、資源、成本投入少,極大降低了國(guó)產(chǎn)數(shù)據(jù)庫(kù)替換成本。河南移動(dòng)營(yíng)業(yè)核心庫(kù)的分布式改造和以往數(shù)據(jù)庫(kù)的替換方式不同,不僅自有人員和應(yīng)用開(kāi)發(fā)商投入特別少,而且核心營(yíng)業(yè)庫(kù)的替換所需測(cè)試資源只有OceanBase數(shù)據(jù)庫(kù)的資源,先將OceanBase生產(chǎn)庫(kù)的資源做測(cè)試庫(kù),做完適配驗(yàn)證、性能壓測(cè)覺(jué)得可行后再轉(zhuǎn)為生產(chǎn)庫(kù),就不需要搭建一套完整的測(cè)試環(huán)境;
替換快。生態(tài)不變,腳本不變,免學(xué)習(xí),替換快,大庫(kù)兩個(gè)月、小庫(kù)一個(gè)月。河南移動(dòng)有1500萬(wàn)的營(yíng)業(yè)核心大庫(kù),兩個(gè)月就替換完畢;
割接穩(wěn)。風(fēng)險(xiǎn)不升,應(yīng)用適配、性能測(cè)試360度全覆蓋,生產(chǎn)上線后性能和上線前壓測(cè)一致;
性能超。實(shí)現(xiàn)性能不降,緩存提效,連接增效,最佳配置模型,硬件加速,數(shù)據(jù)壓縮比高。
在營(yíng)業(yè)系統(tǒng)核心數(shù)據(jù)庫(kù)上線OceanBase,河南移動(dòng)運(yùn)行效果顯著。下圖為割接前后對(duì)比,主要分為SQL執(zhí)行性能對(duì)比和數(shù)據(jù)庫(kù)性能對(duì)比。
SQL執(zhí)行性能對(duì)比顯示,通過(guò)跟蹤業(yè)務(wù)整體運(yùn)行、高峰時(shí)段運(yùn)行,對(duì)比 Oracle 與 OceanBase SQL 平均執(zhí)行時(shí)長(zhǎng),割接上線由平均 2.515 毫秒降低為 1.626 毫秒,性能整體提升 35.35%;通過(guò)跟蹤核心 CBOSS 業(yè)務(wù)運(yùn)行情況,對(duì)比多天 Oracle 與 OceanBase SQL 執(zhí)行時(shí)長(zhǎng),割接上線后由原來(lái)平均 116 毫秒降低為 114 毫秒,平均節(jié)省 2 毫秒。
數(shù)據(jù)庫(kù)性能對(duì)比顯示,通過(guò)總線連接收斂能力,業(yè)務(wù)連接數(shù) 10760+ 不變的情況下,使用OceanBase進(jìn)一步將數(shù)據(jù)庫(kù)活躍連接數(shù)由原來(lái)的 4765 壓降至 2140 ,數(shù)據(jù)庫(kù)連接收斂比提升 45.4%。替換完成后,經(jīng)歷多個(gè)賬期測(cè)試發(fā)現(xiàn),整體業(yè)務(wù)運(yùn)行穩(wěn)定,數(shù)據(jù)庫(kù)集群的平均資源利用率從7%-10% 提升至12%-20%,資源利用率大大提升。
從2023年12月份至今,河南移動(dòng)核心營(yíng)業(yè)系統(tǒng)穩(wěn)定運(yùn)行,平穩(wěn)支撐多次月初、月末的流量高峰;與此同時(shí),數(shù)據(jù)庫(kù)集群平均的資源利用率也非常穩(wěn)定,較原有集中式數(shù)據(jù)庫(kù)的CPU利用率提升8%-9%。
03自研軒轅數(shù)據(jù)總線中間件產(chǎn)品,助力數(shù)據(jù)庫(kù)升級(jí)
此前,河南移動(dòng)CRM系統(tǒng)數(shù)據(jù)庫(kù)現(xiàn)網(wǎng)的部署架構(gòu)為集中式,各個(gè)應(yīng)用系統(tǒng)通過(guò)數(shù)據(jù)總線連到后端Oracle,該架構(gòu)共6個(gè)Proxy節(jié)點(diǎn),中間通過(guò)SAN路由交換機(jī)連接后端的全閃存陣列,這種配置較此前Oracle小型機(jī)+集中的高端存儲(chǔ)性能提升明顯。
原集中式數(shù)據(jù)庫(kù)共6個(gè)RAC節(jié)點(diǎn),共享存儲(chǔ)40TB,實(shí)際使用15TB左右,新分布式架構(gòu)將 9 個(gè)計(jì)算存儲(chǔ)合并為一個(gè)節(jié)點(diǎn),總存儲(chǔ)量57TB。得益于OceanBase的數(shù)據(jù)壓縮功能,三副本架構(gòu)最終實(shí)際使用15TB左右,總占用容量和原庫(kù)基本持平。
新架構(gòu)前端應(yīng)用先連接軒轅數(shù)據(jù)總線,再連到后端OceanBase,共有12個(gè)節(jié)點(diǎn),分為三個(gè)部分,每個(gè)部分有3個(gè)計(jì)算與存儲(chǔ)一體的節(jié)點(diǎn),和3個(gè)OCP管理節(jié)點(diǎn),從新架構(gòu)可以看出將路由器和比較昂貴的高端存儲(chǔ)進(jìn)行優(yōu)化后,硬件成本得到一定下降,其數(shù)據(jù)庫(kù)容量也有了顯著提升。通過(guò)性價(jià)比高的本地存儲(chǔ)代替昂貴集中存儲(chǔ),OceanBase全庫(kù)數(shù)據(jù)壓縮成效顯著,告別容量焦慮。在數(shù)據(jù)庫(kù)軟件許可成本層面,單臺(tái)x86主機(jī)的License費(fèi)用僅為此前1/50,成本也實(shí)現(xiàn)了大幅下降。
新分布式架構(gòu)中的軒轅數(shù)據(jù)總線,作為河南移動(dòng)自主研發(fā)的一款助力數(shù)據(jù)庫(kù)國(guó)產(chǎn)替代的數(shù)據(jù)庫(kù)中間件產(chǎn)品,以應(yīng)用不改、性能不降、風(fēng)險(xiǎn)不升、生態(tài)不變?yōu)槟繕?biāo),通過(guò)在業(yè)務(wù)應(yīng)用與數(shù)據(jù)庫(kù)之間增加一層“數(shù)據(jù)總線”抽象層,將國(guó)產(chǎn)數(shù)據(jù)庫(kù)替換中的四大難題上移至軒轅數(shù)據(jù)總線層解決,以此助力大規(guī)模高并發(fā)場(chǎng)景 OLTP 數(shù)據(jù)庫(kù)平滑國(guó)產(chǎn)升級(jí),具有“投入少、替換快、割接穩(wěn)、性能超”四大優(yōu)勢(shì)。
應(yīng)用不改:不僅僅JAVA應(yīng)用不改,C、C++應(yīng)用,sqlplus、sqlldr、python腳本及配置全部不改,經(jīng)過(guò)1.5萬(wàn)個(gè)以上的生產(chǎn)程序檢驗(yàn)以及真實(shí)生產(chǎn)割接驗(yàn)證,實(shí)現(xiàn)了國(guó)產(chǎn)數(shù)據(jù)庫(kù)無(wú)感知平滑上線的重大突破;
性能不降:將性能調(diào)優(yōu)的關(guān)注點(diǎn)從關(guān)注數(shù)據(jù)庫(kù)單次訪問(wèn)性能上升到關(guān)注業(yè)務(wù)辦理每筆交易的整體性能,針對(duì)性地創(chuàng)造了高效緩存技術(shù)和連接收斂技術(shù)兩項(xiàng)創(chuàng)新點(diǎn),使交易中訪問(wèn)次數(shù)下降50%,連接數(shù)減少80%,從而實(shí)現(xiàn)了國(guó)產(chǎn)庫(kù)性能下降40%的前提下,交易性能整體不降的重大突破。
生態(tài)不變:針對(duì)國(guó)產(chǎn)庫(kù)替換后開(kāi)發(fā)、運(yùn)維人員整體轉(zhuǎn)型學(xué)習(xí)成本巨大的問(wèn)題,打造了異構(gòu)數(shù)據(jù)庫(kù)混合組網(wǎng)能力和透明的數(shù)據(jù)庫(kù)運(yùn)維工具兩項(xiàng)功能,新庫(kù)可異構(gòu)組網(wǎng)替換且完全繼承Oracle技術(shù)生態(tài),從維護(hù)腳本、告警報(bào)錯(cuò)、維護(hù)工具,全部訪問(wèn)如初,無(wú)需改變,開(kāi)發(fā)、運(yùn)維人員無(wú)需改變技術(shù)棧,實(shí)現(xiàn)了數(shù)據(jù)庫(kù)升級(jí)過(guò)程中選擇權(quán)提升和替換后生態(tài)不變的可持續(xù)性突破。
總的來(lái)說(shuō),基于軒轅數(shù)據(jù)總線架構(gòu),河南移動(dòng)國(guó)產(chǎn)數(shù)據(jù)庫(kù)上線分4個(gè)步驟:第一步,應(yīng)用接入數(shù)據(jù)總線,實(shí)現(xiàn)應(yīng)用和數(shù)據(jù)庫(kù)解耦,從總線側(cè)獲取全量生產(chǎn)應(yīng)用SQL;第二步,部署國(guó)產(chǎn)數(shù)據(jù)庫(kù),作為生產(chǎn)測(cè)試庫(kù);第三步,流量回放及測(cè)試,將Oracle流量引入對(duì)應(yīng)國(guó)產(chǎn)數(shù)據(jù)庫(kù),進(jìn)行兼容性和性能的適配測(cè)試;第四步,一鍵切換,通過(guò)總線一鍵切換功能實(shí)現(xiàn)國(guó)產(chǎn)數(shù)據(jù)庫(kù)的生產(chǎn)上線。
軒轅數(shù)據(jù)總線為河南移動(dòng)節(jié)省了數(shù)千萬(wàn)應(yīng)用改造費(fèi)用,同時(shí)為數(shù)據(jù)庫(kù)國(guó)產(chǎn)升級(jí)探索出了一條全新且可行的道路。
04實(shí)踐經(jīng)驗(yàn):應(yīng)用適配與性能提升
當(dāng)下,對(duì)于新建系統(tǒng)的國(guó)產(chǎn)數(shù)據(jù)庫(kù)升級(jí)改造往往會(huì)選擇基于新的數(shù)據(jù)庫(kù)進(jìn)行開(kāi)發(fā),以避免適配遷移等問(wèn)題,包括河南移動(dòng)在內(nèi)的眾多企業(yè)數(shù)據(jù)庫(kù)系統(tǒng)國(guó)產(chǎn)升級(jí)往往是指存量系統(tǒng)的國(guó)產(chǎn)升級(jí)。
雖然很多國(guó)產(chǎn)數(shù)據(jù)庫(kù)的兼容性都可以達(dá)到90%以上,但不同應(yīng)用因這些不兼容的差異改造工作量不同,應(yīng)用改造費(fèi)用評(píng)估標(biāo)準(zhǔn)很模糊,所以對(duì)于存量系統(tǒng)有升級(jí)改造需求的企業(yè)如何選型一款性價(jià)比高的數(shù)據(jù)庫(kù)是一個(gè)避不開(kāi)的難題。以河南移動(dòng)為例,彭慶軍介紹了其所在數(shù)據(jù)庫(kù)團(tuán)隊(duì)的應(yīng)用適配和評(píng)估流程。
第一步,識(shí)別改造工作量。傳統(tǒng)方式是通過(guò)數(shù)據(jù)庫(kù)廠商提供的評(píng)估能力確認(rèn)數(shù)據(jù)庫(kù)中有哪些不兼容的語(yǔ)句,然后讓應(yīng)用花費(fèi)大量人力通過(guò)排查代碼進(jìn)行評(píng)估;河南移動(dòng)評(píng)估方式是基于河南數(shù)據(jù)庫(kù)中間件的評(píng)估方案,記錄應(yīng)用到后端數(shù)據(jù)庫(kù)每個(gè)SQL的訪問(wèn)情況,先將整個(gè)SQL進(jìn)行回放以篩選不兼容的SQL,同時(shí)根據(jù)SQL的訪問(wèn)記錄去反查每個(gè)不兼容SQL下有問(wèn)題的應(yīng)用進(jìn)程,統(tǒng)計(jì)出每個(gè)應(yīng)用進(jìn)程有多少處不兼容點(diǎn),初步確認(rèn)遷移改造的工作量;
第二步,對(duì)不兼容或不適配的SQL語(yǔ)句進(jìn)行中間件改寫,使其符合目標(biāo)國(guó)產(chǎn)數(shù)據(jù)庫(kù)并且能夠在該數(shù)據(jù)庫(kù)順利運(yùn)行。在這個(gè)過(guò)程中,河南移動(dòng)自研了一套中間件產(chǎn)品軒轅數(shù)據(jù)總線,助力此次國(guó)產(chǎn)數(shù)據(jù)庫(kù)平穩(wěn)高效升級(jí);
第三步,性能測(cè)試。傳統(tǒng)的性能壓測(cè)無(wú)法面面俱到,往往是通過(guò)主要業(yè)務(wù)根據(jù)日常配比去做測(cè)試。而河南移動(dòng)采用的是真實(shí)全仿真的測(cè)試,將包括營(yíng)業(yè)系統(tǒng)在內(nèi)的每一天的全量SQL語(yǔ)句,以200、300的高并發(fā),分別在國(guó)產(chǎn)數(shù)據(jù)庫(kù)上進(jìn)行壓力測(cè)試,并將測(cè)試出來(lái)的較慢的SQL與該數(shù)據(jù)庫(kù)一起進(jìn)行優(yōu)化,通過(guò)評(píng)估后確認(rèn)具備上線條件。
在河南移動(dòng)營(yíng)業(yè)系統(tǒng)應(yīng)用適配和性能提升過(guò)程中,由于營(yíng)業(yè)A庫(kù)數(shù)據(jù)量及每日歸檔量較大,原傳統(tǒng)集中式存儲(chǔ)空間緊張,歸檔過(guò)早清理導(dǎo)致OMS增量同步任務(wù)經(jīng)常中斷。在遷移演練階段,OMS產(chǎn)品通過(guò)多次及時(shí)發(fā)版提升了同步效率,最終在正式割接期間平穩(wěn)遷移完成,數(shù)據(jù)校驗(yàn)100%一致。在特定統(tǒng)計(jì)場(chǎng)景營(yíng)業(yè)日?qǐng)?bào)業(yè)務(wù)內(nèi),河南移動(dòng)對(duì)遞歸查詢進(jìn)行了優(yōu)化,進(jìn)一步適配了OceanBase,性能獲得了明顯提升,目前的性能基本可以保證在40多秒內(nèi)進(jìn)行查詢。
此外,河南移動(dòng)還利用自研軒轅數(shù)據(jù)總線產(chǎn)品承擔(dān)了主要適配改造工作,解決了兼容性相對(duì)比較弱的一些問(wèn)題代碼。比如面對(duì)高CPU利用率的函數(shù)切換到國(guó)產(chǎn)數(shù)據(jù)庫(kù)經(jīng)常會(huì)出現(xiàn)的一些難題,針對(duì)性地對(duì) OceanBase 進(jìn)行了一定程度的性能優(yōu)化。
可以說(shuō)對(duì)比上面所提到的“單程車票”改造方法,基于軒轅數(shù)據(jù)總線架構(gòu)的國(guó)產(chǎn)數(shù)據(jù)庫(kù)升級(jí)方式是一張“往返車票”,支持無(wú)感切換回原數(shù)據(jù)庫(kù)。
寫在最后
未來(lái),河南移動(dòng)將持續(xù)推進(jìn)B(業(yè)務(wù)支撐系統(tǒng))/M(管理支撐系統(tǒng))/O(網(wǎng)管支撐系統(tǒng))全業(yè)務(wù)域升級(jí)改造,并結(jié)合特有軒轅數(shù)據(jù)總線產(chǎn)品,推進(jìn) OceanBase 生態(tài)構(gòu)建。
彭慶軍表示:OceanBase經(jīng)過(guò)了十年的內(nèi)部打磨,又經(jīng)過(guò)五年的外部推廣,作為一款頂天立地的產(chǎn)品,其未來(lái)發(fā)展大有可為。此次河南移動(dòng)自研的軒轅數(shù)據(jù)總線可以幫助千行百業(yè)解決場(chǎng)景差異的SQL適配問(wèn)題。相信在軒轅數(shù)據(jù)總線的加持下,會(huì)讓整個(gè)OceanBase分布式生態(tài)如虎添翼,為企業(yè)節(jié)省大量的改造費(fèi)用,同時(shí)加快分布式數(shù)據(jù)庫(kù)改造推廣的進(jìn)度,實(shí)現(xiàn)多贏!