作者:數(shù)字家庭管理平臺團(tuán)隊(duì),單位:中國移動智慧家庭運(yùn)營中心
近年來,中國移動融入國家科創(chuàng)大局,堅(jiān)定國產(chǎn)化指導(dǎo)戰(zhàn)略,加快自主能力創(chuàng)新。中國移動智慧家庭運(yùn)營中心(簡稱智家中心)深耕數(shù)字家庭領(lǐng)域,數(shù)字家庭管理平臺團(tuán)隊(duì)積極響應(yīng)國家和集團(tuán)公司的核心軟件國產(chǎn)化和自主可控要求,依托終端管理模塊(Remote Management System,簡稱RMS)進(jìn)行去Oracle數(shù)據(jù)庫(簡稱去O)信創(chuàng)研發(fā)工作。
Part 01●??痛點(diǎn)問題?●?
RMS是由智家中心自主研發(fā),屬于省級數(shù)字家庭產(chǎn)品線的重點(diǎn)產(chǎn)品,掌握100%知識產(chǎn)權(quán)。其面向省級網(wǎng)管人員,實(shí)現(xiàn)網(wǎng)關(guān)和機(jī)頂盒的管理功能;面向省內(nèi)代維及客服系統(tǒng),輸出終端設(shè)備操作能力。
圖1? RMS功能架構(gòu)圖
RMS以往采用Oracle作為核心業(yè)務(wù)數(shù)據(jù)庫,雖然滿足了作為重要生產(chǎn)系統(tǒng)數(shù)據(jù)庫的穩(wěn)定性要求,但近年隨著國際形勢變化,自主可控的號召越來越深入人心。各省隨著設(shè)備和業(yè)務(wù)量的增長,對數(shù)據(jù)庫的性能要求也愈來愈高,當(dāng)前的數(shù)據(jù)庫方案存在諸多風(fēng)險(xiǎn):
? 高額成本:按照現(xiàn)網(wǎng)各省平均需要2臺Oracle服務(wù)器算,每臺32C的一年license費(fèi)用大概150w,則各省數(shù)據(jù)庫成本約為300萬/年。
? 性能瓶頸:Oracle數(shù)據(jù)庫不能分庫分表,單臺服務(wù)器算力不足。
? 安全性弱:使用Oracle數(shù)據(jù)庫存在被美國“卡脖子”制裁的可能。
然而,想要實(shí)現(xiàn)安全高效地切換數(shù)據(jù)庫,也存在以下難點(diǎn):
? 改造成本高:一般去O過程需要在數(shù)據(jù)庫層面一次性改造完成,涉及大量業(yè)務(wù)SQL的改動,且需要一邊改造一邊適配新的業(yè)務(wù)需求,相當(dāng)于雙數(shù)據(jù)庫兼容開發(fā),整個(gè)去O過程周期長、風(fēng)險(xiǎn)大,改造成本很高。
? 切換有風(fēng)險(xiǎn):在現(xiàn)有的持續(xù)運(yùn)行的系統(tǒng)下切換數(shù)據(jù)庫數(shù)據(jù)源,切換數(shù)據(jù)庫語法,相當(dāng)于開著飛機(jī)換引擎,稍有不慎將會影響現(xiàn)網(wǎng)的業(yè)務(wù)。
Part 02●??解決方案?●
為解決上述問題,RMS的重點(diǎn)工作包括數(shù)據(jù)庫的選型、分庫分表方案策略的規(guī)劃、服務(wù)資源的規(guī)劃以及千萬級數(shù)據(jù)同步的割接方法的設(shè)計(jì)等,并基于MyCAT痛點(diǎn)開發(fā)深度分頁、數(shù)據(jù)源動態(tài)切換、分庫直連查詢等能力來提升開發(fā)效率與SQL執(zhí)行性能:
縮小改造成本,兼容Oracle、MySQL與TiDB?
針對數(shù)據(jù)庫去O的國產(chǎn)化產(chǎn)品,目前主流有2種方案,基于PostgreSQL和基于MySQL。考慮到MySQL基于主鍵索引組織的表更適合大量頻繁查詢和修改操作,更適合業(yè)務(wù)需要,以及國內(nèi)MySQL生態(tài)更加繁榮完善,所以國產(chǎn)化的第一步開源適配決定采用基于MySQL的方案。
但由于Oracle公司已經(jīng)收購MySQL,所以社區(qū)開源版本MySQL只是臨時(shí)過渡選擇。因此,團(tuán)隊(duì)還適配了TiDB,即目前國內(nèi)領(lǐng)先的開源HTAP融合型分布式數(shù)據(jù)庫。TiDB兼容MySQL的大部分功能,因此業(yè)務(wù)層面的SQL基本不用改動,在現(xiàn)網(wǎng)省份落地過程中可以做到業(yè)務(wù)層的快速適配。
實(shí)現(xiàn)數(shù)據(jù)庫切換平穩(wěn)迅速
為了確保平穩(wěn)切換,在去O過程中Oracle與MySQL雙庫并行運(yùn)行,功能上完全相同,同時(shí)支持表維度分批遷移表數(shù)據(jù),可使去O的過程更加平穩(wěn)可控。并支持持續(xù)演化,無縫對接原生HTAP融合型分布式數(shù)據(jù)庫。按照現(xiàn)網(wǎng)去O經(jīng)驗(yàn),一般通過2到3個(gè)小版本快速迭代開發(fā),2個(gè)月內(nèi)可完成整個(gè)去O數(shù)據(jù)庫遷移,相比傳統(tǒng)去O大版本節(jié)約一半時(shí)間。
性能穩(wěn)中有升
為了提升開發(fā)效率與SQL執(zhí)行性能,支持采用MyCAT中間件對MySQL進(jìn)行分庫分表,或者直接采用性能更加優(yōu)異的TiDB原生分布式數(shù)據(jù)庫。其中,TiDB支持水平擴(kuò)容,具備強(qiáng)一致性和高可用性,在滿足OLTP傳統(tǒng)事務(wù)型處理基礎(chǔ)上,支持OLAP分析型需求,性能優(yōu)異。以上2種方案都支持水平擴(kuò)容,做到了性能穩(wěn)中有升。
為了克服MyCAT帶來的不支持大表查詢問題,在應(yīng)用層進(jìn)行了分庫直連匯總結(jié)果和深度分頁查詢匯總結(jié)果。常規(guī)分頁查詢連續(xù)頁的時(shí)候會產(chǎn)生大量重復(fù)計(jì)算,千萬級規(guī)模大表分頁查詢性能極差,容易造成接口響應(yīng)超時(shí)。深度分頁加入自主可配的索引字段作為查詢條件,記錄每次查詢結(jié)果的最后一行數(shù)據(jù)的索引值,數(shù)據(jù)庫可以根據(jù)索引跳過之前查詢的數(shù)據(jù),避免了大量重復(fù)計(jì)算。另外,根據(jù)不同的業(yè)務(wù)場景,還提供了數(shù)據(jù)庫直接連接和數(shù)據(jù)源動態(tài)切換等組件,以滿足各種場景下的業(yè)務(wù)需求。
圖2 深度分頁流程圖
圖3 分庫直連查詢流程圖
圖4 數(shù)據(jù)源動態(tài)切換流程圖
安全可控
引入數(shù)據(jù)庫的自治能力,實(shí)現(xiàn)數(shù)據(jù)庫自動化和智能化運(yùn)維。通過工具KSH周期性采集數(shù)據(jù)庫的會話歷史和各種負(fù)載信息,采用工具KWR快速生成性能報(bào)告,重點(diǎn)分析連接數(shù)、IO、等待事件、TOP SQL等信息,根據(jù)分析結(jié)果對數(shù)據(jù)庫進(jìn)行自動化配置優(yōu)化,實(shí)現(xiàn)數(shù)據(jù)庫的平穩(wěn)運(yùn)行與安全可控。此外,通過此方案做到了國產(chǎn)化和自主可控,業(yè)務(wù)層面完全自研,保障了平臺的安全性。
Part 03●? 應(yīng)用成效?●
經(jīng)過研發(fā)、測試、預(yù)上線、調(diào)試、正式部署等一系列工作,全力打造了故障率低、故障恢復(fù)時(shí)間短、并發(fā)能力強(qiáng)、動態(tài)線性擴(kuò)容等優(yōu)化路徑,加快推動了數(shù)字家庭管理平臺終端管理能力全網(wǎng)落地,擴(kuò)大了可管可控的設(shè)備管理規(guī)模。
此數(shù)據(jù)庫國產(chǎn)化方案于2022年1月開始陸續(xù)落地重慶、甘肅等省份,納管設(shè)備超2200萬臺。在各項(xiàng)資源和指標(biāo)的監(jiān)控下,目前處于良好運(yùn)行狀態(tài)。
歷時(shí)1年半,基于高可用大流量強(qiáng)復(fù)用的自主MyCAT模式千萬級數(shù)據(jù)管理能力終于得到認(rèn)可,成為替代Oracle商業(yè)數(shù)據(jù)庫的有利抓手。不僅降低了Oracle商業(yè)數(shù)據(jù)庫高昂的授權(quán)費(fèi)用,為省公司節(jié)約軟件成本約300萬/年,并且解決了擴(kuò)容困難帶來的性能問題,擺脫了使用Oracle數(shù)據(jù)庫被美國制裁的危機(jī)。
Part 04●??未來推廣?●
數(shù)據(jù)庫國產(chǎn)化是一件改造周期長、改造難度大、改造成本高的問題,該成果在一線生產(chǎn)業(yè)務(wù)系統(tǒng)歷時(shí)兩年改造并平穩(wěn)落地,RMS具備千萬級自主數(shù)據(jù)的管控能力已經(jīng)得到了充分驗(yàn)證,為后續(xù)國產(chǎn)化數(shù)據(jù)庫的平穩(wěn)落地奠定了良好的基礎(chǔ),也對其他業(yè)務(wù)系統(tǒng)國產(chǎn)化數(shù)據(jù)庫改造有非常高的借鑒意義。其中基于Mybatis SQL統(tǒng)一攔截的實(shí)現(xiàn)方案,普遍試用于大多數(shù)軟件項(xiàng)目,未來可將兼容多數(shù)據(jù)庫技術(shù)方案獨(dú)立成數(shù)據(jù)庫組件進(jìn)行推廣。