System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据扩容,尤其是指一种单体应用拆分数据扩容方法、装置、设备及计算机存储介质。
技术介绍
1、在计算机软件的发展历程中,单体应用作为一种常见的应用架构已经得到广泛应用,然而随着移动互联网的快速发展,数据量呈指数级增长,传统的数据存储方案已经无法满足业务需求,大单库大单表使得应用的性能和稳定性面临着挑战。为此,数据扩容成为一种常见的解决方案,即通过增加数据存储容量来应对数据增长的挑战。目前,常见的数据扩容方案包括垂直扩容和水平扩容两种,但这些方案往往是在原有数据库中对数据进行拆分,存在一些局限性,比如无法解决数据库存储容量问题,难以应付移动互联网的大流量高并发的问题,增加了应用复杂度,使得应用在更新、维护变得困难,可靠性也面临着挑战,无法应对移动互联网多变的业务需求,系统扩展性较差。
2、为了实现单体应用的数据扩容需求,一种常用的实现方案是直接在单体应用中进行扩容方案,利用关系型数据库的特性,对大表进行分拆,将数据分拆到不同的库表,如图1所示,这种实现方案的好处是在现有单体应用中进行数据表拆分,业务逻辑无需改变,只需要在dao层对sql进行改写,对数据进行聚合、排序,实现过程也比较简单,主要按如图2的步骤进行:
3、在进行数据分片时,要根据业务信息选择合适的分片键,一个好的分片键需具备以下特点:具有共性、高度离散、均匀分布等,设计好分片算法,如身份证号、用户编号、业务编号、日期等;当业务系统在收到客户业务请求后,对分片键信息按分片算法,计算数据的实际存储位置,对sql语句进行改写,再将sql查询
4、稳定性差:单体应用作为一个整体应用,当单体应用架构中某个部分出现故障,就会影响整个系统的正常运行。在单体应用引入数据库分库分表,无疑增加了系统的复杂度,对系统的稳定性也有一定的影响。
5、业务连续性差:单体应用进行数据扩容时需要停机升级,业务中断,当出现故障时,系统往往难以第一时间恢复,造成业务损失,客户流失,商誉下降。
6、可扩展性差:单体应用通常是以单一实例部署的,当应用业务量增加时,为了保证性能和可用性,需要对应用进行水平或垂直扩展。然而,由于所有模块都在同一个实例中运行,扩展通常需要升级硬件资源或部署多个实例,这会增加运维成本,也会对应用的可扩展性造成一定影响。同时由于单体应用技术栈相对固定,难以引入新技术、新框架,难以面对移动互联网业务多变的业务需求。
技术实现思路
1、为此,本专利技术所要解决的技术问题在于克服现有技术中复杂度高、稳定性差、扩展性不足的问题。
2、为解决上述技术问题,本专利技术提供了一种单体应用拆分数据扩容方法,包括:
3、将单体应用进行拆分,得到多个子业务系统;
4、利用kafka消息队列订阅所述多个子业务系统发布的业务数据以及所述业务数据的增量变化信息;
5、根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表;
6、对所述业务数据进行业务信息配置;
7、当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发。
8、优选地,所述将单体应用进行拆分,得到多个子业务系统包括:
9、识别所述单体应用的多个独立模块,并将其拆分出来独立为多个服务,得到所述多个子业务系统。
10、优选地,所述目标字段包括消息类型、消息来源和业务规则。
11、优选地,所述根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表包括:
12、根据所述业务数据的目标字段判断是否进行分表,若进行分表,则改写sql逻辑,得到数据库表;
13、判断所述数据库表是否为新库,若为新库,则将所述业务数据写入所述新库,若为旧库,则将所述业务数据写入旧库。
14、优选地,所述对所述业务数据进行业务信息配置包括:
15、对所述业务数据的流量转发方向信息进行配置,所述流量转发方向信息包括接口编号、合作方编号、城市编号、灰度流量开关和灰度权重占比;
16、将配置好的流量转发方向信息排序保存至对应的数据库表中。
17、优选地,所述请求字段包括用户编号、城市编号、合作方编号和接口编号。
18、优选地,所述当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发包括:
19、当收到用户或合作方请求后,对所述请求字段进行解密和合法性验证,通过验证后,根据所述请求字段查询数据库表,得到业务数据及其灰度流量开关和灰度权重占比配置信息;
20、根据所述请求字段和所述灰度流量开关和灰度权重占比配置信息,将所述用户或合作方请求发送至相应的业务系统进行所述业务数据的处理,并待所述业务系统响应后,把响应结果返回给用户或合作方。
21、本专利技术还提供了一种单体应用拆分数据扩容装置,包括:
22、应用拆分模块,用于将单体应用进行拆分,得到多个子业务系统;
23、消息订阅模块,用于利用kafka消息队列订阅所述多个子业务系统发布的业务数据以及所述业务数据的增量变化信息;
24、分表模块,用于根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表;
25、信息配置模块,用于对所述业务数据进行业务信息配置;
26、流量转发模块,用于当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发。
27、本专利技术还提供了一种单体应用拆分数据扩容设备,包括:
28、存储器,用于存储计算机程序;
29、处理器,用于执行所述计算机程序时实现上述一种单体应用拆分数据扩容方法步骤。
30、本专利技术还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种单体应用拆分数据扩容方法的步骤。
31、本专利技术的上述技术方案相比现有技术具有以下优点:
32、本专利技术所述的单体应用拆分数据扩容方法,将复杂单体应用拆分为单独服务,并引入kafka消息队列作为单体拆分数据扩容的基础框架,实现了新库和旧库的数据的一致性,并且保障了单体应用在数据扩容时的业务连续性,提供了可灵活配置的排序权重配置和开关配置,可结合流量切换阶段配置不同的权重比例满足灰度发布的需求。本专利技术对大表进行数据分表,减少了单库单表的数据量,减轻了数据库的压力,提高了业务处理效率和稳定性;本专利技术通过识别单体应用的独立模块,并将其拆分,独立成一个本文档来自技高网...
【技术保护点】
1.一种单体应用拆分数据扩容方法,其特征在于,包括:
2.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述将单体应用进行拆分,得到多个子业务系统包括:
3.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述目标字段包括消息类型、消息来源和业务规则。
4.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表包括:
5.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述对所述业务数据进行业务信息配置包括:
6.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述请求字段包括用户编号、城市编号、合作方编号和接口编号。
7.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发包括:
8.一种单体应用拆分数据扩容装置,其特征在于,包括:
9.一种单体应用拆分数据扩容设备,其特征在于
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述一种单体应用拆分数据扩容方法的步骤。
...【技术特征摘要】
1.一种单体应用拆分数据扩容方法,其特征在于,包括:
2.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述将单体应用进行拆分,得到多个子业务系统包括:
3.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述目标字段包括消息类型、消息来源和业务规则。
4.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表包括:
5.根据权利要求1所述的单体应用拆分数据扩容方法,其特征在于,所述对所述业务数据进行业务信息配置包括:
6.根据权利要求1所...
【专利技术属性】
技术研发人员:杨倾生,苏健,谢潇宇,李晶,李尚真,江魁栋,
申请(专利权)人:中国建设银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。