AntDB数据库助力中国移动结算中心建设

news2024/11/15 22:40:44

为响应中国移动集团公司IT集中化的要求:全面落实“十三五”十大战略工程,加快“推动公司IT资源一体化整合“重点专项工作。以IT系统为载体,构建高效运营支撑体系,形成集中化支撑和协同业务支撑模式,打造极致体验、高效运营、良性增长的数字化服务能力。

中移信息公司决定对一级结算中心系统进行改造,以“滚动推进结算能力的标准化沉淀共享,强化结算运营流程规范化管理,打造集约化、透明化、智能化、规范化的共享结算”为总体目标,启动结算系统建设,提升结算能力,结算形态延伸,最终实现全业务、全流程智能共享结算体系建立。

结算中心负责中国移动漫游伙伴进行数据和财务清算支撑。本次结算中心项目涉及结算处理、资料管理、信息管理等模块,用以构建系统的结算能力。

建设需求:结算中心现有传统集中式部署的数据库无法做到根据业务量变化进行弹性扩缩容,目前系统数据量巨大,月处理话单量达到百亿,后续业务会快速发展。

系统建设目标为承接月百亿话单量的数据处理,数据库需要存储和处理的数据量巨大,达到上百TB规模;结算系统业务逻辑复杂,存在大量报表类需求,需要对数据进行关联、聚合等复杂操作。同时为了实现移动IT核心业务系统数据库自主可控、避免“卡脖子”的目标。

综合以上需求,用户需要的是国产自研、具备弹性扩展特性、高性能、可以处理分析类业务场景的数据库

本期项目建设从数据库角度分析存在以下痛点难点:

1.结算中心详单库设计容量达到百TB以上,数据量庞大,而且有报表分析类的业务场景,对于数据库海量数据分析的性能提出了很高的要求。

2.结算中心业务具备快速扩展特性,数据量会逐步增大,所以数据库需要具备在线弹性扩容的能力,具有良好的线性扩展比,随着服务器增加数据库性能可以得到线性扩展。

3.分布式数据库架构复杂,服务器数量众多,如何智能高效的进行运维监控非常重要,这也对数据库平台搭配的运维工具的实用性和准确性提出了更高的要求。

根据上文建设需求可以看出用户需要的是具备弹性扩展能力、数据实时分析能力、具备高可用及容灾架构、可以智能管控的国产分布式数据库。亚信AntDB数据库符合客户需求,并且AntDB是业界为数不多,同时支持分布式与集中式部署模式的数据库产品

原生分布式、弹性扩展结算中心详单库需要数据库具备水平扩展能力,可以实现线性扩展。亚信AntDB数据库原生分布式设计,对应用完全透明,兼顾性能与可扩展性。

AntDB数据库具有超强Scale up能力,对CPU、内存、连接数不做限制。数据进行分片后打散存储到各数据节点中,随着业务增长用户可以在线进行扩容操作,数据库线性扩展比可以达到1以上,随服务器数量增加实现性能线性增长。

HTAP实时分析结算中心存在大量报表需求,需要数据库具备实时数据分析能力。亚信AntDB数据库为HTAP类型,可以处理交易和实时分析融合的业务场景。AntDB数据库具备实时强一致的分布式事务控制能力,确保数据零丢失和事务一致性,保证话单数据处理的准确性。

AntDB具备动态高效的SQL执行引擎,提供异构索引,内置reduce数据处理引擎,数据节点间可以进行通信,提高数据处理效率,尤其是复杂查询场景(聚合、关联等)的数据处理效率,提高结算中心话单数据的处理效率和结算报表的生成速度。

图1:AntDB数据库产品架构

高可用及负载均衡:结算中心需具备高可靠特性,建设容灾体系。亚信AntDB数据库提供完整的集群自愈方案保证秒级自动故障切换实现业务连续,并且可以保证数据的完整性和强一致性,实现真正意义上的Auto-Failover,保证数据库系统可以获得99.999%的SLA服务保证。

结算中心数据库域的公参、结算、账单库使用AntDB,这部分数据为系统核心配置参数,数据重要但是不会出现激增,故选用集中式部署模式的AntDB。该架构使用etcd + Patroni工具实现高可用,默认为1个主库加2个备库的配置,主备之间采用实时的同步复制模式,确保数据的强一致性。业务端可以配置三台数据库的地址和端口,在主库发生异常情况时,备库仍然能够保证业务的连通性。

图2:AntDB集中式部署模式高可用架构

详单库用于存放结算话单,容量达到百TB以上,而且这部分数据随着业务量增涨会出现大幅度增加,故选用分布式部署模式的AntDB。AntDB分布式部署模式,本身即高可用架构。计算节点、数据节点、全局事务管理器均具备高可用机制,业务端可以配置多个计算节点的地址,实现高可用及负载均衡。

图3:AntDB分布式部署模式高可用架构

双中心容灾保证可靠性:根据用户需求,话音系统为核心系统,为保证业务的连续性及数据安全性,数据库需要建设主备容灾系统,在单中心发生断电、断网等全局故障的时候另外一个中心可以快速接管,不影响生产话单的实时结算。亚信AntDB数据库支持双中心、两地三中心等多种容灾方式,该项目上选用的是双中心容灾模式。

AntDB集中式部署模式一共使用三台服务器,主库和第一个备库之间采用同步复制模式,和第二个备库之间采用异步复制模式。为实现双中心容灾,可以把主库和第一个备库部署在主中心机房中,第二个备库部署在副中心机房中。这样在单边异常的情况下,都可以保证另一个中心正常提供服务。公参、结算、账单库通过这种方式实现双中心容灾。

图4:AntDB集中式部署模式容灾“双中心”架构

AntDB分布式部署模式天然支持双中心容灾,通过AntDB集群管理工具可以快速地在备中心完成集群搭建,主中心出现全局故障时,可以迅速切换到备中心承载业务。

图5:AntDB分布式部署模式容灾“双中心”架构

智能运维管控:结算中心数据库节点数众多,需要运维平台对数据库集群进行统一管理。AntDB数据库提供智能运维管控平台,可以实现数据库集群管理。对数据库进行自动监控,包括常规数据库服务器监控、数据库关键指标监控,并进行告警通知等,大大提升数据库的可维护性。

该项目中,国产数据库AntDB的大范围使用,促进移动结算中心系统数据库国产化进程迈进了一大步。助力移动结算能力标准化,强化结算运营流程规范化,打造集约化、透明化、智能化、规范化的共享结算平台,承载结算业务,提升结算能力、结算形态延伸,实现全业务、全流程智能共享结算体系。

技术架构优势总结

(一)分布式特性克服传统数据库弊端


分布式数据库是当代数据库系统的主要特性之一,而传统集中式部署的数据库,不具备水平分布式扩展的能力。特别是Oracle的IOE架构,需要搭配昂贵IBM小型机+EMC高端存储,硬件和软件成本都很高。

AntDB数据库的部署,可以使用成本较低的国产服务器,通过分布式特性的水平扩展能力弥补服务器性能差距。集群节点内部具备高可用,双中心部署保证高可靠性,面向应用,数据库具备了弹性扩展的能力,应用业务快速增长的情况下数据库可以进行在线扩容满足业务需求。

(二) 技术架构的高可用特性提供可靠业务保障

数据库应具备服务高可用的能力。项目中AntDB具备集群自愈、双中心容灾架构,保证秒级自动故障切换实现业务的连续性,并且能确保数据的完整性和强一致性。双中心架构在主机房发生故障时,可以迅速切换至备中心接管业务,保证上层业务不受影响。

效果优势体现总结

AntDB承载结算中心结算、账单、公参、详单库,数据库具备高可用特性,并且进行了集中式部署和分布式部署全场景覆盖的高可用测试。

集中式部署集群的高可用测试,包括:主节点异常、宕机场景,同步备节点异常、宕机场景,异步备节点异常、宕机场景,ETCD服务异常。分布式部署集群的高可用测试,包括:全局事务管理器主备节点异常、宕机场景,计算节点异常、宕机场景,数据节点主备服务器异常、宕机场景。

AntDB顺利完成了高可用测试,所有异常场景均可做到秒级切换,保证业务连续性,保证用户结算业务不受影响。

根据结算中心业务特点,AntDB团队针对性的进行了压力测试。AntDB使用自研压力测试工具模拟1500个长JDBC连接加100个活跃会话对数据库进行压力测试,用以验证数据库稳定性。

图6:压力测试数据库指标

测试过程中数据监控数据如上图所示,可以看出在高并发多连接应用场景下AntDB数据库运行稳定,各项指标正常。服务器cpu、内存、IO等指标也保持在正常水平。综上所述AntDB可以很好的支撑结算中心业务场景。

应用推广价值

本次,中国移动结算中心选用国产自研数据库AntDB具有广泛的社会意义。一方面结算中心作为运营商核心系统选用AntDB充分证明了国产数据库已经可以平滑替代国外商业数据库,而且整体表现良好,从性能、稳定性、可靠性上都得到验证,可以作为标准化案例继续在运营商行业进行复制推广。

AntDB整体软硬件成本较国外数据库为客户减少约60%的成本,项目引入AntDB配套智能运维管控平台,可以为客户每年减少上百万维保费用。

另一方面同国家政策相契合,在关键行业关键环节上实现了自主可控,避免了国外厂商卡脖子,断供,信息泄漏等风险,持续推进运营商体系内的国产化自主可控进程。

关于AntDB数据库


AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

列表初始化(内置类型、自定义类型)

列表初始化的特性来源于单参数的隐式类型转换。以下面这个赋值为例,我们可以理解成 先创建一个匿名对象Point(2),这个时候就变成了 Point p Point(2);然后会调用拷贝构造。 虽然隐式转换的可以这样理解,但是最后会被编译器优化成直接调用有…

[Android]Bitmap Drawable

在实际开发中&#xff0c;我们可以直接引用原始的图片&#xff0c;但是也可以通过xml的方式来描述它&#xff0c;通过xml来描述的BitmapDrawable可以设置更多效果。 <?xml version"1.0" encoding"utf-8"?> <bitmap xmlns:android"http://…

java spring IOC Bean管理操作讲解 并代码演示xml的实现方式

查看本文 需要您使用spring创建过对象管理 如果之前没有接触过 可以先查看我的文章 java 手把手带你创建一个spring入门案例 IOC 操作中 Bean管理主要有两个部分 分别是创建对象和注入属性 他们都有两种实现方式 分别是xml和注解方式实现 本文只演示xml 后续我会出注解方式的文…

第十三届蓝桥杯省赛 JAVA A组 - 蜂巢

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;蜂巢 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥别的小伙伴整理常考算法题解&#xff0c;祝大家都能…

背包问题——“0-1背包”,“完全背包”(这样讲,还能不会?)

目录 一、0-1背包 1.1、0-1背包解决的问题 1.2、dp数组定义 1.3、转移方程 1.3.1、二维dp数组 1.3.2、一维dp数组 1.4、遍历顺序 1.5、测试代码 1.6、练习 二、完全背包 2.1、完全背包解决问题 2.2、与0-1背包的区别 2.3、测试代码 2.4、拓展问题&#xff1a;装满…

【2022】13 年终总结

新年Flag 2023年&#xff0c;为了各方面能有所进步&#xff0c;列一些希望达成的目标和想做的事&#xff0c;到年底看看效果。 撰写一篇英文论文 申请到CSC 和xl去外地玩两次 想到了再加 去年Flag倒了几个&#xff1f; 一维河网水动力学模型导师说不用自己编&#xff0c;看懂…

Numpy文件交互:.npy和.npz有什么区别?

文章目录saveloadsavezsavez_compressedNumpy提供了以.npy为后缀的文件存储方案&#xff0c;与这种文件格式密切相关的读、写函数分别是np.load和np.save。通过savez可以一次性存储多个数组&#xff0c;并可通过load以键值对的形式读取出来&#xff1b;如果觉得文件太大&#x…

Mybatis缓存

内存中的一块存储空间&#xff0c;服务于某个应用程序&#xff0c;旨在将频繁读取的数据临时保存在内存中&#xff0c;便于二次快速访问。 一级缓存 SqlSession级别的缓存&#xff0c;同一个SqlSession的发起多次同构查询&#xff0c;会将数据保存在一级缓存中。 注意&#x…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(频率特性测试仪)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;频率特性测试仪 &#x1f34a;&#x1f34a;1.“模式”选项组 &#x1f34a;&#x1f34a;2.“水平”选项组 &#x1f34a;&#x1f34a;3.“垂直”选项组 &#x1f34a;&#x1f34a;4.“控件”选项组 序言 N…

SpringBoot+Vue项目大学生租房平台

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

数据结构课程设计[2023-01-19]

数据结构课程设计[2023-01-19] 数据结构课程设计 一、课程设计要求 实现指定的题目&#xff08;学号最后两位%41&#xff09;&#xff0c;并撰写课程设计报告。独立完成&#xff0c;功能不完备也没关系&#xff0c;只要是自己做的 使用 C、C或者 JAVA 语言&#xff0c;采用…

​第四章 Flink 窗口和水位线​

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、时间概念&#xff1a;事件时间和处理时间 在流式处理的过程中&#xff0c;数据…

详解微信小程序开发中的“数据绑定”和代码样例

简介 首先需要区分微信小程序的运行环境和框架系统。运行环境为小程序在手机当中运行的时候&#xff0c;微信客户端所能提供的环境支持&#xff0c;也就是在这种环境下如何进行数据渲染工作&#xff1b;框架系统则是微信小程序在进行开发的过程中&#xff0c;如何通过代码实现…

数字逻辑理论——组合电路

利用数据选择器设计组合逻辑电路 m&#xff1a;组合电路输入变量个数 n&#xff1a;数据选择器的控制端个数 &#xff08;1&#xff09;mn 利用8选1数据选择器设计函数&#xff1a;FAB’A’CBC’ 待设计卡诺图&#xff1a; F∑(1,2,3,4,5,6) &#xff08;2&#xff09;m&g…

【每日一题】【LeetCode】【第十九天】【Python】汇总区间

解决之路 题目描述 测试案例&#xff08;部分&#xff09; 第一次 没有想到什么更快的方法&#xff0c;先用两个循环来写出来思路。 class Solution(object):def summaryRanges(self, nums):res []index 0n len(nums)while index < n:if index n - 1:res.append(str…

Spring_FrameWork_07(SpringMVC与SSM整合)

SpringMVC&#xff08;一种基于java实现的轻量级web框架&#xff09; 请求与响应 REST风格 SSM整合 拦截器 public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationCont…

【工具】用AI辅助论文/博客的写作:Obsidian+Text Generator的详细安装教程

目录 前言 介绍 Obsidian Text-Generator 使用教程 安装Obsidian 安装Text Generator 插件安装 获取开放 AI API 密钥 插件选项配置 初体验 前言 对于作家、博主和学生来说&#xff0c;这是一个很好的工具&#xff0c;它通过使用最强大的语言模型之一&#xff1a;Ope…

[数据结构基础]链式二叉树的几个典型的基础oj问题

今年是农历腊月二十九&#xff0c;提前祝大家新春快乐。这是我壬寅虎年最后一篇文章&#xff0c;感谢大家的阅读。祝大家兔年吉祥&#xff0c;身体健康、阖家幸福、学业有成、事业如意、财源滚滚&#xff01; 前置说明 本文中所有用到的二叉树及二叉树节点&#xff0c;都是由…

Fabric中的txid exists问题

Fabric 默认配置中tls证书有效期为一年&#xff0c;相信挖了不少的坑&#xff0c;我前段时间写了篇文章介绍了下解决的思路&#xff0c;但是自己真解决起来还是没解决问题&#xff0c;这种分布式企业架构太复杂。 最近有遇到一个奇怪的问题&#xff0c;小伙伴写的存证数据&…

plt自定义水平线和垂直线、水平区域和垂直区域

一、添加x轴y轴垂直辅助线 1、函数 axvline函数&#xff1a;绘制垂直线。axhline函数&#xff1a;绘制水平线。 2、参数 plt.axvline(x0, ymin0, ymax1, c"g", ls"--", lw2, labelNone)。axhline类似 x&#xff1a;垂直线在x轴上的位置。浮点数&#xf…