掌桥专利:专业的专利平台
掌桥专利
首页

一种单体应用拆分数据扩容方法、装置及存储介质

文献发布时间:2024-04-18 19:52:40


一种单体应用拆分数据扩容方法、装置及存储介质

技术领域

本发明涉及数据扩容技术领域,尤其是指一种单体应用拆分数据扩容方法、装置、设备及计算机存储介质。

背景技术

在计算机软件的发展历程中,单体应用作为一种常见的应用架构已经得到广泛应用,然而随着移动互联网的快速发展,数据量呈指数级增长,传统的数据存储方案已经无法满足业务需求,大单库大单表使得应用的性能和稳定性面临着挑战。为此,数据扩容成为一种常见的解决方案,即通过增加数据存储容量来应对数据增长的挑战。目前,常见的数据扩容方案包括垂直扩容和水平扩容两种,但这些方案往往是在原有数据库中对数据进行拆分,存在一些局限性,比如无法解决数据库存储容量问题,难以应付移动互联网的大流量高并发的问题,增加了应用复杂度,使得应用在更新、维护变得困难,可靠性也面临着挑战,无法应对移动互联网多变的业务需求,系统扩展性较差。

为了实现单体应用的数据扩容需求,一种常用的实现方案是直接在单体应用中进行扩容方案,利用关系型数据库的特性,对大表进行分拆,将数据分拆到不同的库表,如图1所示,这种实现方案的好处是在现有单体应用中进行数据表拆分,业务逻辑无需改变,只需要在DAO层对SQL进行改写,对数据进行聚合、排序,实现过程也比较简单,主要按如图2的步骤进行:

在进行数据分片时,要根据业务信息选择合适的分片键,一个好的分片键需具备以下特点:具有共性、高度离散、均匀分布等,设计好分片算法,如身份证号、用户编号、业务编号、日期等;当业务系统在收到客户业务请求后,对分片键信息按分片算法,计算数据的实际存储位置,对SQL语句进行改写,再将SQL查询请求发送给数据库执行,对执行结果数据进行聚合、排序、去重等操作后,返回给业务系统。这种方案常常被用在小规模的应用系统上,但是在互联网高并发大流量情况下,在本就复杂笨重的单体应用中,引入数据分库分表,无疑增大了系统的复杂度,牵一发而动全身,系统的稳定性也受到挑战,尤其是业务需求发生变化时,扩展性差的问题更为突出:

稳定性差:单体应用作为一个整体应用,当单体应用架构中某个部分出现故障,就会影响整个系统的正常运行。在单体应用引入数据库分库分表,无疑增加了系统的复杂度,对系统的稳定性也有一定的影响。

业务连续性差:单体应用进行数据扩容时需要停机升级,业务中断,当出现故障时,系统往往难以第一时间恢复,造成业务损失,客户流失,商誉下降。

可扩展性差:单体应用通常是以单一实例部署的,当应用业务量增加时,为了保证性能和可用性,需要对应用进行水平或垂直扩展。然而,由于所有模块都在同一个实例中运行,扩展通常需要升级硬件资源或部署多个实例,这会增加运维成本,也会对应用的可扩展性造成一定影响。同时由于单体应用技术栈相对固定,难以引入新技术、新框架,难以面对移动互联网业务多变的业务需求。

发明内容

为此,本发明所要解决的技术问题在于克服现有技术中复杂度高、稳定性差、扩展性不足的问题。

为解决上述技术问题,本发明提供了一种单体应用拆分数据扩容方法,包括:

将单体应用进行拆分,得到多个子业务系统;

利用Kafka消息队列订阅所述多个子业务系统发布的业务数据以及所述业务数据的增量变化信息;

根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表;

对所述业务数据进行业务信息配置;

当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发。

优选地,所述将单体应用进行拆分,得到多个子业务系统包括:

识别所述单体应用的多个独立模块,并将其拆分出来独立为多个服务,得到所述多个子业务系统。

优选地,所述目标字段包括消息类型、消息来源和业务规则。

优选地,所述根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表包括:

根据所述业务数据的目标字段判断是否进行分表,若进行分表,则改写SQL逻辑,得到数据库表;

判断所述数据库表是否为新库,若为新库,则将所述业务数据写入所述新库,若为旧库,则将所述业务数据写入旧库。

优选地,所述对所述业务数据进行业务信息配置包括:

对所述业务数据的流量转发方向信息进行配置,所述流量转发方向信息包括接口编号、合作方编号、城市编号、灰度流量开关和灰度权重占比;

将配置好的流量转发方向信息排序保存至对应的数据库表中。

优选地,所述请求字段包括用户编号、城市编号、合作方编号和接口编号。

优选地,所述当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发包括:

当收到用户或合作方请求后,对所述请求字段进行解密和合法性验证,通过验证后,根据所述请求字段查询数据库表,得到业务数据及其灰度流量开关和灰度权重占比配置信息;

根据所述请求字段和所述灰度流量开关和灰度权重占比配置信息,将所述用户或合作方请求发送至相应的业务系统进行所述业务数据的处理,并待所述业务系统响应后,把响应结果返回给用户或合作方。

本发明还提供了一种单体应用拆分数据扩容装置,包括:

应用拆分模块,用于将单体应用进行拆分,得到多个子业务系统;

消息订阅模块,用于利用Kafka消息队列订阅所述多个子业务系统发布的业务数据以及所述业务数据的增量变化信息;

分表模块,用于根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表;

信息配置模块,用于对所述业务数据进行业务信息配置;

流量转发模块,用于当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发。

本发明还提供了一种单体应用拆分数据扩容设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述一种单体应用拆分数据扩容方法步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种单体应用拆分数据扩容方法的步骤。

本发明的上述技术方案相比现有技术具有以下优点:

本发明所述的单体应用拆分数据扩容方法,将复杂单体应用拆分为单独服务,并引入Kafka消息队列作为单体拆分数据扩容的基础框架,实现了新库和旧库的数据的一致性,并且保障了单体应用在数据扩容时的业务连续性,提供了可灵活配置的排序权重配置和开关配置,可结合流量切换阶段配置不同的权重比例满足灰度发布的需求。本发明对大表进行数据分表,减少了单库单表的数据量,减轻了数据库的压力,提高了业务处理效率和稳定性;本发明通过识别单体应用的独立模块,并将其拆分,独立成一个服务,可使得更加专注于特定的业务逻辑,可灵活应对多变的业务需求,加快产品的发布速度,独立部署的服务,当性能不足以支持当前业务流量时,可动态对服务进行单独扩容,将更多的资源投入到负载更大的服务中,使得整个应用程序更具可扩展性和可伸缩性。

附图说明

为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中:

图1是现有技术中单体应用数据表拆分的实现流程图;

图2是现有技术中单体应用数据表拆分的业务逻辑实现流程图;

图3为本发明所提供的一种单体应用拆分数据扩容方法的实现流程图;

图4为本发明中基于kafka单体应用拆分的实现流程图;

图5为本发明中单体应用数据表拆分的实现流程图;

图6为本发明中权重配置的实现流程图;

图7为本发明中业务请求的实现流程图;

图8为本发明中流量转发的实现流程图;

图9为本发明实施例提供的一种单体应用拆分数据扩容装置的结构框图。

具体实施方式

本发明的核心是提供一种单体应用拆分数据扩容方法、装置、设备及计算机存储介质,有效提高了系统稳定性、业务连续性和可扩展性。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图3,图3为本发明所提供的一种单体应用拆分数据扩容方法的实现流程图;具体操作步骤如下:

S101:将单体应用进行拆分,得到多个子业务系统;

S102:利用Kafka消息队列订阅所述多个子业务系统发布的业务数据以及所述业务数据的增量变化信息;

S103:根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表;

S104:对所述业务数据进行业务信息配置;

S105:当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发。

基于以上实施例,本实施例对步骤S101进行详细说明:

识别所述单体应用的多个独立模块,并将其拆分出来独立为多个服务,得到所述多个子业务系统。

基于以上实施例,本实施例对步骤S102进行详细说明:

消息队列中的数据来源于旧单体应用新拆分的子应用(子业务系统)主动发布的业务数据,当业务数据发生变化时,同样将数据的增量变化信息发布到消息队列。

如图4和图5所示,基于以上实施例,本实施例对步骤S103进行详细说明:

将取得的数据按目标字段(包括消息类型、消息来源和业务规则)进行分析后,写入到对应的数据库表中:

根据所述业务数据的目标字段判断是否进行分表,若进行分表,则改写SQL逻辑,得到数据库表;

判断所述数据库表是否为新库,若为新库,则将所述业务数据写入所述新库,若为旧库,则将所述业务数据写入旧库,保持了新旧两个数据库的数据一致性。

如图6所示,基于以上实施例,本实施例对步骤S104进行详细说明:

操作人员在运营后台新增或修改配置信息,每条配置应包含着特定的业务信息,主要包括确定流量转发方向的信息,如接口编号、合作方编号、城市编号、灰度流量开关、灰度权重占比等信息,操作员录入完成后点击保存,并将配置好的流量转发方向信息排序保存至对应的数据库表中。

如图7和图8所示,基于以上实施例,本实施例对步骤S105进行详细说明:

用户(移动客户端)或者合作方发起业务请求其中,请求字段中包含用户编号、用户城市编号、合作方编号和接口编号等信息;

当业务系统收到用户或合作方请求后,根据合作方编号对所述请求字段进行解密,获取接口编号、城市编号、用户编号和其他业务数据;

对业务的请求字段(入参信息)进行参数判断,进行合法性验证,通过验证后,根据所述请求字段查询数据库表,得到业务数据及其灰度流量开关和灰度权重占比配置信息;

根据所述请求字段和所述灰度流量开关和灰度权重占比配置信息,将所述用户或合作方请求发送至相应的业务系统进行所述业务数据的处理,并待所述业务系统响应后,把响应结果返回给用户或合作方。

本发明的关键创新点:

对比传统单体应用数据扩容的方法,本发明在完成数据扩容的同时,实现了对复杂单体应用的拆分为单独服务,并引入了Kafka消息队列作为单体拆分数据扩容的基础框架,Kafka支持消息生产、消费的一致性,为新旧应用系统的数据一致性提供了保障;

提出了流量转发装置,保障单体应用在数据扩容时的业务连续性。

提供可灵活配置的排序权重配置和开关配置,可结合流量切换阶段配置不同的权重比例满足灰度发布的需求。

本发明具有以下优点:

性能高,对大表进行数据分表,减少了单库单表的数据量,减轻了数据库的压力,提高业务处理效率和性能。

可扩展性强,本发明通过识别单体应用的独立模块,并将其拆分,独立成一个服务,可使得更加专注于特定的业务逻辑,可灵活应对多变的业务需求,加快产品的发布速度。

可伸缩性强,独立部署的服务,当性能不足以支持当前业务流量时,可动态对服务进行单独扩容,将更多的资源投入到负载更大的服务中,使得整个应用程序更具可伸缩性。

请参考图9,图9为本发明实施例提供的一种单体应用拆分数据扩容装置的结构框图;具体装置可以包括:

应用拆分模块100,用于将单体应用进行拆分,得到多个子业务系统;

消息订阅模块200,用于利用Kafka消息队列订阅所述多个子业务系统发布的业务数据以及所述业务数据的增量变化信息;

分表模块300,用于根据所述业务数据的目标字段进行分表,并将所述业务数据写入对应库表;

信息配置模块400,用于对所述业务数据进行业务信息配置;

流量转发模块500,用于当收到用户或合作方请求后,根据请求字段查询所述业务数据,并根据业务配置信息进行流量转发。

本实施例的单体应用拆分数据扩容装置用于实现前述的单体应用拆分数据扩容方法,因此单体应用拆分数据扩容装置中的具体实施方式可见前文单体应用拆分数据扩容方法的实施例部分,例如,应用拆分模块100,消息订阅模块200,分表模块300,信息配置模块400,流量转发模块500,分别用于实现上述单体应用拆分数据扩容方法中步骤S101,S102,S103,S104和S105,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

本发明具体实施例还提供了一种单体应用拆分数据扩容设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种单体应用拆分数据扩容方法的步骤。

本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种单体应用拆分数据扩容方法的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,上述实施例仅仅是为清楚地说明所作的举例,并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

相关技术
  • 一种利用管道适应装配平台实现装配管道转运的方法
  • 一种用于履轨一体化转运平台的拐点自适应装置及使用方法
  • 一种履轨一体化转运平台以及履带底盘打滑检测方法
  • 一种青贮转运平台
  • 一种苜蓿青贮加工用高效转运辅助装置
技术分类

06120116331856