本发明专利技术公开了一种对高并发或大量业务的处理方法及系统,本发明专利技术对高并发下业务逻辑分布处理,避免了其中一个模块失败影响下一个模块。失败模块可以再次重新执行,避免了业务中断,减少了恢复工作量,提高了数据准确性。还可以通过获取序列号得到整个业务进行到哪一步了,方便再次执行和问题排查,进行自动或人工恢复数据。本发明专利技术适用于分布式集群架构,可以提高队列的消费能力,避免队列消费不及时导致的阻塞。的阻塞。的阻塞。
【技术实现步骤摘要】
一种对高并发或大量业务的处理方法及系统
[0001]本专利技术涉及计算机数据处理领域,具体涉及一种对高并发或大量业务的处理方法及系统。
技术介绍
[0002]目前针对高并发数据大量采用队列中间件进行处理,例如现在主流的队列有rabbitMQ、kafak、RocketMQ等,但是在队列中进行大量逻辑处理,如果其中一处逻辑出错就会导致队列中断或者业务中断,出现业务数据不准确和丢失。对于不准确数据的修正和丢失数据的恢复没有更好的备用解决方案,重新进行逻辑处理会造成大量的工作量。
技术实现思路
[0003]针对现有技术中的上述不足,本专利技术提供的一种对高并发或大量业务的处理方法及系统解决了高并发数据一旦逻辑处理失败会带来大量工作量的问题。
[0004]为了达到上述专利技术目的,本专利技术采用的技术方案为:
[0005]提供一种对高并发或大量业务的处理方法,其包括以下步骤:
[0006]S1、获取数据请求包;
[0007]S2、对每个数据请求包生成唯一序列号,并将数据请求包的处理状态映射为值存入缓存中,构建数据请求包处理队列;
[0008]S3、基于业务类型,将当前请求数据包中的请求数据拆分成若干个模块,给每个模块生成一个唯一序列号,并将每个模块的处理状态映射为值存入缓存中;
[0009]S4、对于每个模块,判断其是否为简单模块,若是则直接加入逻辑处理队列,进入步骤S6;否则进入步骤S5;
[0010]S5、按照逻辑类型将当前模块拆分成若干个关联单元,并按照逻辑顺序依次将属于同一个模块的关联单元加入逻辑处理队列,进入步骤S6;
[0011]S6、按照模块的序列号的先后顺序对属于同一个请求数据包的逻辑处理队列进行逻辑处理,修改当前请求数据包中逻辑处理成功的模块的处理状态;
[0012]S7、判断当前请求数据包是否存在逻辑处理失败的模块,若是则进入步骤S8;否则删除当前数据包所有的缓存,进入步骤S10;
[0013]S8、将当前请求数据包中逻辑处理失败的模块进行再次逻辑处理;
[0014]S9、判断当前请求数据包的再次逻辑处理是否均成功,若是则删除当前数据包所有的缓存,进入步骤S10;否则采用与步骤S4至步骤S8相同的方法对当前请求数据包逻辑处理未成功的模块进行处理,直至处理成功,进入步骤S10;
[0015]S10、判断数据请求包处理队列是否还存在待处理数据包,若是则返回步骤S3;否则结束处理。
[0016]进一步地,步骤S3中将每个模块的处理状态映射为值的具体方法为:
[0017]将每个模块的处理状态映射初始值设置为0,表示未处理成功;将处理成功的模块
的处理状态值映射为1。
[0018]进一步地,步骤S6中对属于同一个请求数据包的不同简单模块采用多线程处理方式进行同步处理。
[0019]进一步地,步骤S7中判断当前请求数据包是否存在逻辑处理失败的模块的具体方法为:
[0020]判断当前请求数据包中每个模块的处理状态值是否均为1,若是则表示当前请求数据包不存在逻辑处理失败的模块;否则存在逻辑处理失败的模块。
[0021]进一步地,步骤S9中采用与步骤S4至步骤S8相同的方法对当前请求数据包逻辑处理未成功的模块进行处理的具体方法为:
[0022]根据当前请求数据包逻辑处理未成功的模块的序列号,从步骤S3得到的若干个模块中重新获取对应的模块,再采用与步骤S4至步骤S8相同的方法对重新获取的模块进行处理。
[0023]进一步地,步骤S10中判断数据请求包处理队列是否还存在待处理数据包的具体方法为:
[0024]判断缓存中是否还存在处理状态映射为值的数据请求包,若是则判定还存在待处理数据包;否则判定不存在待处理数据包。
[0025]提供一种对高并发或大量业务的处理系统,其包括:
[0026]数据获取组件,用于获取数据请求包;
[0027]数据请求包处理队列构建组件,用于对每个数据请求包生成唯一序列号,并将数据请求包的处理状态映射为值存入缓存中,构建数据请求包处理队列;
[0028]拆分组件,用于基于业务类型,将当前请求数据包中的请求数据拆分成若干个模块,给每个模块生成一个唯一序列号,并将每个模块的处理状态映射为值存入缓存中;
[0029]逻辑处理队列构建组件,用于将当前请求数据包的简单模块列入逻辑处理队列,按照逻辑类型将当前模块拆分成若干个关联单元,并按照逻辑顺序依次将属于同一个模块的关联单元加入逻辑处理队列;
[0030]逻辑预处理组件,用于按照模块的序列号的先后顺序对属于同一个请求数据包的逻辑处理队列进行逻辑处理,修改当前请求数据包中逻辑处理成功的模块的处理状态;
[0031]逻辑再处理组件,用于删除逻辑处理成功的请求数据包的缓存,将当前请求数据包中逻辑处理失败的模块进行再次逻辑处理;
[0032]逻辑终处理组件,用于判断逻辑再处理组件的处理结果是否均成功,若是则删除当前数据包所有的缓存;否则再次运行逻辑处理队列构建组件、逻辑预处理组件和逻辑再处理组件对当前请求数据包逻辑处理未成功的模块进行处理,直至处理成功;
[0033]结束处理组件,用于判断数据请求包处理队列是否还存在待处理数据包,若是则再次运行拆分组件、逻辑处理队列构建组件、逻辑预处理组件和逻辑再处理组件进行处理;否则结束处理。
[0034]进一步地,逻辑预处理组件包括多线程处理器,用于对属于同一个请求数据包的不同简单模块采用多线程处理方式进行同步处理。
[0035]本专利技术的有益效果为:
[0036]1、对高并发下业务逻辑分布处理,避免了其中一个模块失败影响下一个模块。失
败模块可以再次重新执行,避免了业务中断,减少了恢复工作量,提高了数据准确性。
[0037]2、本专利技术还可以通过获取序列号得到整个业务进行到哪一步了,方便再次执行和问题排查,进行自动或人工恢复数据。
[0038]3、本专利技术适用于分布式集群架构,可以提高队列的消费能力,避免队列消费不及时导致的阻塞。
附图说明
[0039]图1为本方法的流程示意图。
具体实施方式
[0040]下面对本专利技术的具体实施方式进行描述,以便于本
的技术人员理解本专利技术,但应该清楚,本专利技术不限于具体实施方式的范围,对本
的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本专利技术的精神和范围内,这些变化是显而易见的,一切利用本专利技术构思的专利技术创造均在保护之列。
[0041]如图1所示,该对高并发或大量业务的处理方法包括以下步骤:
[0042]S1、获取数据请求包;
[0043]S2、对每个数据请求包生成唯一序列号,并将数据请求包的处理状态映射为值存入缓存中,构建数据请求包处理队列;
[0044]S3、基于业务类型,将当前请求数据包中的请求数据拆分成若干个模块,给每个模块生成一个唯一序列号,并将每个模本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种对高并发或大量业务的处理方法,其特征在于,包括以下步骤:S1、获取数据请求包;S2、对每个数据请求包生成唯一序列号,并将数据请求包的处理状态映射为值存入缓存中,构建数据请求包处理队列;S3、基于业务类型,将当前请求数据包中的请求数据拆分成若干个模块,给每个模块生成一个唯一序列号,并将每个模块的处理状态映射为值存入缓存中;S4、对于每个模块,判断其是否为简单模块,若是则直接加入逻辑处理队列,进入步骤S6;否则进入步骤S5;S5、按照逻辑类型将当前模块拆分成若干个关联单元,并按照逻辑顺序依次将属于同一个模块的关联单元加入逻辑处理队列,进入步骤S6;S6、按照模块的序列号的先后顺序对属于同一个请求数据包的逻辑处理队列进行逻辑处理,修改当前请求数据包中逻辑处理成功的模块的处理状态;S7、判断当前请求数据包是否存在逻辑处理失败的模块,若是则进入步骤S8;否则删除当前数据包所有的缓存,进入步骤S10;S8、将当前请求数据包中逻辑处理失败的模块进行再次逻辑处理;S9、判断当前请求数据包的再次逻辑处理是否均成功,若是则删除当前数据包所有的缓存,进入步骤S10;否则采用与步骤S4至步骤S8相同的方法对当前请求数据包逻辑处理未成功的模块进行处理,直至处理成功,进入步骤S10;S10、判断数据请求包处理队列是否还存在待处理数据包,若是则返回步骤S3;否则结束处理。2.根据权利要求1所述的对高并发或大量业务的处理方法,其特征在于,步骤S3中将每个模块的处理状态映射为值的具体方法为:将每个模块的处理状态映射初始值设置为0,表示未处理成功;将处理成功的模块的处理状态值映射为1。3.根据权利要求1所述的对高并发或大量业务的处理方法,其特征在于,步骤S6中对属于同一个请求数据包的不同简单模块采用多线程处理方式进行同步处理。4.根据权利要求2所述的对高并发或大量业务的处理方法,其特征在于,步骤S7中判断当前请求数据包是否存在逻辑处理失败的模块的具体方法为:判断当前请求数据包中每个模块的处理状态值是否均为1,若是则表示当前请求数据包不存在逻辑处理失败的模块;否则存在逻辑处理失败的模块。5.根据权利要求1所述的对高并发或大量业务的处理方法,其特征在于,步骤S9中采用...
【专利技术属性】
技术研发人员:叶明,朱作飞,侯超,
申请(专利权)人:成都旋极历通信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。