河北移动:核心系统数据库成功完成整体迁移 ,实现全栈国产|OceanBase案例

1717669548

本文作者:移动通信集团河北有限公司架构规划专家,房瑞


项目背景:

中国移动通信集团河北有限公司一直在积极响应国家及集团的号召,以磐舟&磐基云原生为底座,结合国产浏览器、中间件、数据库、操作系统和服务器等,构建起完全自主掌控的支撑系统。同时,积极深化生态合作与创新,不断完善IT自主掌控评价体系,以促进产业链生态的健康发展。

2023 年 11 月,河北移动核心营业系统(唐山)完成了 OceanBase 国产数据库的上线。OceanBase 集群采用同城双机房主备架构,主集群为 X86 架构,备集群为 ARM 架构。

2024 年 5 月 20 日之前主集群(x86)对外提供服务,5 月 20 日 IT 中心顺利完成核心营业系统数据库由 x86 服务器迁移至 ARM 服务器,核心营业系统首次完成从前端应用到后端服务器全栈国产目标。自上线以来,系统运行稳定,各项性能指标与原架构持平,部分指标高于原架构,达成项目设计要求。

一、以分布式数据库为抓手,全面推动国产升级

河北移动从 2000 年至 2020 年,近二十年的时间,营业、计费等核心系统一直运行在传统集中式数据库之上,在一定的数据量下、在强大的硬件资源加持下,数据库性能表现良好,系统运行稳定。

随着近十年,业务数据量的暴涨,云计算的发展,传统集中式数据库在业务系统整体架构中越发乏力。

一是算力无法横向扩展。随着数据量的增加,原有的传统集中式数据库在算力上无法实现横向扩展,不能满足未来业务系统对性能的要求,需要引入分布式数据库解决算力动态扩容需求。

二是系统架构亟待升级。系统架构基于底层数据库架构,要满足未来 5 至 10 年的领先性,依靠数据库特性,实现应用云原生架构升级。底层数据库算力可根据业务系统动态实现扩缩容,保证系统的可扩展性,高效性、安全性要求。

加之当前核心技术的相关风险,河北移动积极探索系统架构升级方案,以分布式数据库为抓手,全面推动国产升级。

二、运营商为什么都在选择 OceanBase

2021 年,河北移动率先启动技术探寻,与 OceanBase 开展技术交流和方案验证。2022 年 5 月,开始启动核心系统数据库升级工作。2023 年 3 月,确定以营业系统(唐山)为 B 域核心系统国产化数据库实施范围。

OceanBase 原生分布式数据库满足核心库国产要求的同时 ,还适配主流的国产芯片、国产操作系统、国产中间件,可实现应用系统的全栈国产。

河北移动最终选择 OceanBase 经过多方综合评估,主要原因有以下:

第一,高度兼容传统集中式数据库语法,应用改造适配成本低。OceanBase 一套数据库引擎同时高度兼容传统集中式数据库,覆盖绝大多数常见功能,支持过程语言、触发器等高级特性,河北移动核心营业系统(唐山)对传统集中式数据库兼容率为 99.9%以上,极大降低应用的迁移成本。下表为兼容性评估:

1717669853

第二,极致降低核心库存储成本,性能无损的数据压缩。在传统的 B 树存储结构下的数据库中,数据压缩可能会给数据写入带来 CPU 的计算压力,影响写入性能。但 OceanBase 的 LSM-Tree 架构使数据的压缩只发生在合并阶段,不会影响数据的写入,加上自研混合列压缩编码能更好提高压缩率,同一业务量下相比传统集中式数据库能降低 70% - 90% 存储成本。

河北移动的核心营业系统(唐山)在传统集中式数据库端的数据量 11051G,升级到 OceanBase 后仅为 2699G,存储成本降低 76%。下表为存储空间评估:

1717669864

三、两个阶段,核心营业系统全栈上线

为保障核心营业系统能够平稳运行在全栈国产之上,安全可靠,彻底解决以往高度依赖非自研技术的风险。从系统建设目标、应用、数据库多方统筹,采用两个阶段完成建设目标。

在迁移工程中,河北移动通过借助集团磐舟能力,有效解决数据库国产过程中应用代码频繁发布难题,代码从上传-编译-镜像打包,推送到磐基 PaaS 平台,均通过可视化界面进行操作,简单直观。同时搭配流水线配置,实现全过程高效的可持续化自动运行。 

○   第一阶段完成:应用全栈+数据库国产

○   第二阶段完成:数据库由 x86 服务器迁移至 ARM 服务器

第一阶段完成:应用全栈+数据库国产

部署架构:

○   前端负载去除国外负载均衡设备,采用 DNS+OceanBase JDBC Loadbalance+代理构成,其中 DNS 提供域名服务,负载均衡能力由 JDBC Loadbalance 提供,代理 proxy 多节点部署,进行路由转发;

○   OceanBase 部署服务器全部安装国产自研操作系统 BCLinux for 欧拉 21.10 版。

○   OceanBase 主集群基于 x86 服务器部署。备集群基于 ARM 服务器部署备库。主集群采用 3-3-3 模式部署,包含 3 副本,每个副本由 3 台服务节点构成,一个副本包含一份完整的数据。

依托该架构及 OceanBase 数据库机制,实现集群内高可用能力。少数派服务器宕机、单副本不可用,集群均可正常对外部提供服务,保证应用系统稳定运行。

备集群除用于日常切换演练之外,还承担部分业务流量、当主库故障后,备库可承载全部业务流量,保障应用系统稳定运行。

1717670060

第二阶段完成:核心营业系统数据库迁移至 ARM 服务器

本次迁移基于 OceanBase 数据库容灾能力,通过在 ARM 服务器搭建容灾系统实现全自动无损数据复制,确保数据实时追平。

1717670084

5 月 20 日割接当晚,通过一键切换主备集群,实现核心营业系统数据库由 x86 服务器迁移至 ARM 服务器的高效、顺畅迁移。这也是核心营业系统首次完成从前端应用到后端服务器全栈国产目标,迁移方式顺畅稳定。

为保障本次迁移顺利完成,河北移动牵头成立了“业务专家+OceanBase 数据库架构+ARM 主机架构”小组进行攻关,在业务优化、数据库优化、ARM 主机优化三个方面制定优化措施,迁移准备工作进行验证充分。

本次割接准备工作历时 2 个月,共编制割接相关手册 5 份,准备 2 套应急方案,历经 2 轮模拟验证,发现和解决技术问题 3 项,优化迁移步骤 1 项,保证迁移过程严谨高效。

深入挖潜 ARM 国产服务器性能。充分考虑营业场景下,ARM 服务器存在性能下降风险,项目组通过优化测试模型,加大测试样本,经过 310 余次多系统混合压力测试,挖潜 ARM 服务器性能,最终确定 7 项性能优化手段。上线后,保障系统性能指标优于安全水位。

截止目前,系统指标健康,未产生业务投诉。本次数据库服务器的国产升级,为后续推进自主掌控升级奠定基础。

四、全栈国产升级后,河北移动各项收益显著

(一)先进架构满足未来 5-10 年发展需求

河北移动依托 OceanBase 的原生分布式架构,可节点横向扩展、弹性扩缩容、多租户管理、数据多副本强一致等特性,满足未来 5 至 10 年的业务发展需要。

一方面,可快速推进应用云原生架构升级。应用云原生、OceanBase 相结合实现业务负载和数据库负载全部自动弹性伸缩,具备同城双活、两地三中心单元化应用多活能力。

一方面,收获系统长期的高可用、性能稳定高效。OceanBase 数据库采用基于无共享(Shared-Nothing)的多副本架构,让整个系统没有任何单点故障,保证系统的持续可用。河北移动对核心营业系统(唐山)包括前端应用、外围渠道、后台进程、周边配套四大类共计 754 个用例进行性能压测,压测指标均优于原传统集中式数据库。上线后,应用系统稳定,数据库节点 CPU 使用率 30%左右。

(二)形成标准化的项目推广复制

随着河北移动核心营业系统(唐山)的顺利上线,沉淀了《业务系统调研方案》、《数据库部署方案》、《应用适配改造方案》、《国产库运维方案》、《系统割接方案》等一系列标准方案,使整个国产项目标准化、可复制化。

依托标准化的操作,可复制到河北移动全域业务系统中,加速推进业务系统的国产升级落地。以河北移动 CRM 系统营业 C 库为例,系统在 2 个月左右的时间可完成国产数据库上线。

(三)应用改造、存储、运维等各项成本明显降低

河北移动受益于 OceanBase 高度兼容传统集中式数据库的特性,解决了项目初期关注的三个成本因素:应用改造成本、硬件投入成本、运维成本。

○   应用改造成本基本为零:核心营业系统(唐山)对传统集中式数据库的兼容率为 99.9%以上,本次应用开发商只做极少量的应用改造,大大降低了改造成本。

○   硬件投入成本降低:原系统 11051G 的数据量迁移到 OceanBase 后只需 2699G,存储成本降低 76%。

○   运维成本降低:数据库运维人员、包括研发人员可将原传统集中式数据库的使用经验完全应用到 OceanBase 之上,减少学习成本。OceanBase 单集群多租户架构,可快速将传统集中式数据库的数据迁移至 OceanBase 统一管理运维,降低运维成本。

(四)培养核心技术骨干,形成人才梯队

通过核心系统全栈国产升级,河北移动培养出一批国产技术骨干,特别是国产数据库操作、管理和运维的人员,并形成人才梯队,实现国产自主能力,并逐步推广到全省。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/399691.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter Notebook介绍、安装及使用教程

文章目录 一.什么是Jupyter Notebook?1.Jupyter Notebok简介2.组成部分3.Jupyter Notebook的主要特点 二.安装Jupyter Notebook0.先试用再决定1.安装①安装前提②使用Anaconda安装③使用pip命令安装 三.运行Jupyter Notebook0.帮助1.启动①默认端口启动②指定端口启…

零基础学会机器学习,到底要多久?

这两天啊,有不少朋友和我说,想学机器学习,但是之前没有基础,不知道能不能学得会。 首先说结论,只要坚持,就能学会,但是一定不能三天打鱼两天晒网,要持之以恒,至少每隔两…

自由职业四年,我整理了一些建议

我是勋荣,一个独立开发者。运营了自己的社群,有自己的软件产品。目前还在探索各种副业的路上~ 1我的独立开发之路 刚毕业就找不到Android岗位的我瑟瑟发抖。在广州,稀里糊涂做了Java后端开发。有一天加班 通宵,早上借住在同事家…

Python教程(十三):常用内置模块详解

目录 专栏列表1. os 模块2. sys 模块3. re 模块4. json 模块5. datetime 模块6. math 模块7. random 模块8. collections 模块9. itertools 模块10. threading 模块11. 加密 模块 总结 专栏列表 Python教程(十):面向对象编程(OOP…

【MySQL】什么是索引?了解索引的底层原理

索引的概念 索引是一种用于提高数据库查询效率的数据结构。它类似于书籍的目录,通过快速定位数据的方式,减少了数据检索的时间。索引在数据库表中可以被看作是一个指向数据的指针,它们存储了列的值及其对应行的位置,从而使得数据…

Java面试八股之消息队列有哪些协议?各种协议有哪些具体实现

消息队列有哪些协议?各种协议有哪些具体实现 消息队列协议是指在消息队列系统中,用于消息的发送、接收和管理的一套通信规则。不同的协议有着不同的特性和应用场景,以下是一些常见的消息队列协议及其具体实现: AMQP (Advanced M…

某通用系统0day审计过程

前言 代码审计篇章都是自己跟几个师傅们一起审计的1day或者0day(当然都是小公司较为简单),禁止未经允许进行转载,发布到博客的用意主要是想跟师傅们能够交流下审计的思路,毕竟审计的思路也是有说法的,或者是相互源码共享也OK&…

mfc140.dll丢失如何修复,一步步教你如何解决mfc140.dll丢失,让电脑快速恢复正常状态!

mfc140.dll是 Microsoft Foundation Class (MFC) Library 的一部分,它是一个用于开发 Windows 应用程序的 C 库。当系统报告mfc140.dll丢失时,通常意味着某个应用程序需要这个 DLL 文件来运行,但系统中没有找到它。那么mfc140.dll丢失如何修复…

jetson nano远程调试说明

Jetson nano官方演示不仅需要网线、显示屏、Jetson nano开发板、HDMI线、5V的电源适配器,还需要USB键盘和USB鼠标,携带不方便。这里简单整理下可以不用使用USB键盘、USB鼠标和网线也可以演示。 硬件准备 一块 Jetson Nano ALT 开发板;一个 5…

WordPress原创插件:Download-block-plugin下载按钮图标美化

WordPress原创插件:Download-block-plugin下载按钮图标美化 https://download.csdn.net/download/huayula/89632743

Apache Tomcat服务器版本号隐藏

渗透测试时发现有一台服务器的404报错页面中,有Apache Tomcat的版本号信息显示,发生了信息泄露,可能导致服务器被攻击。如下所示: 解决步骤如下: 1. 隐藏HTTP响应头中的Server信息 Tomcat默认会在HTTP响应头中包含S…

最后一公里!观测云如何重塑北欧城市交通

在北欧地区,共享滑板车已经超越了简单的交通工具,它不仅成为了解决最后一公里出行的首选,更象征着一种全新城市生活方式的兴起。这种生活方式不仅体现了北欧地区对环保、便捷和创新的不懈追求,也彰显了其对提高生活质量的持续努力…

IDEA:Dangling Javadoc comment

JetBrains对JavaDocs的描述: Javadoc comments are usually placed above classes, methods, or fields in your source code. A Javadoc provides a description of the code element located under it and contains block tags marked with with specific metada…

haproxy 7000字配图超详细教程 从小白到入门

简介:HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速,HAProxy具备媲美商用负载均衡器的性能和稳…

LVS中NAT模式和DR模式实战讲解

1DR模式 DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源 IP/PORT&#xf…

开源工具提升你的生产力

如果你想摆脱大科技公司的专有控制,有一些选择是很好的。 每一个阴都有一个阳;每一个动作都有一个反作用力;每一个专有软件都有一个开源替代品。大概就是这样的。 在过去的几年里,技术中的“开放性”问题在公众意识中从未如此突出…

【网络编程】字节序,IP地址、点分十进制、TCP与UDP的异同

记录学习,思维导图绘制 目录 1、字节序​编辑 2、IP地址 3、点分十进制 4、TCP与UDP的异同 1、字节序 2、IP地址 3、点分十进制 4、TCP与UDP的异同

鸿蒙(API 12 Beta3版)【播控特性简介】分布式媒体会话

使用媒体播控,可以简单高效地将音视频投放到其他HarmonyOS设备上播放,如在手机上播放的音视频,可以投到2in1设备上继续播放。 HarmonyOS提供了统一的应用内音视频投播功能设计,通过使用系统提供的投播组件和接口,应用…

嵌入式学习---DAY24:进程--二

一、exec函数族----启动一个新程序 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支), 子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的 用户空间代码和数据完全被…

什么是 Java?

探索 Java,一种多功能且功能强大的编程语言。释放其构建强大应用程序的潜力。 前言 简单来说,Java 是一种用于开发软件应用程序的面向对象设计的编程语言。截至 2019 年,它是世界上最受欢迎的编程语言,尤其是因为它是开源的&#…