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