CN111708802B - 网络请求防重处理方法及装置 - Google Patents
网络请求防重处理方法及装置 Download PDFInfo
- Publication number
- CN111708802B CN111708802B CN202010488604.0A CN202010488604A CN111708802B CN 111708802 B CN111708802 B CN 111708802B CN 202010488604 A CN202010488604 A CN 202010488604A CN 111708802 B CN111708802 B CN 111708802B
- Authority
- CN
- China
- Prior art keywords
- record
- repeated
- temporary
- records
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012958 reprocessing Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 55
- 238000012544 monitoring process Methods 0.000 claims abstract description 27
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002265 prevention Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/243—Natural language query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例公开了一种网络请求防重处理方法及装置。其中,该方法包括:监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中;监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理;监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求。
Description
技术领域
本公开涉及计算机网络技术领域,具体涉及一种网络请求防重处理方法、装置、电子设备及存储介质。
背景技术
当前的互联网是一个异常庞大的综合***,依靠一系列严格的网络协议和请求响应机制,实现了几十亿用户和上百亿设备的互联互通,事实上是非常复杂和精细的一套***。在正常情况下,每个互联网请求都会在极短的时间内得到响应,从而很快完成一项事务处理;但在某些情况下,受各种内外部因素的影响下,并非每项互联网请求都会得到及时的响应。举例来说,在一个典型的互联网平台服务***中,一个完整的业务处理会涉及用户、服务方、平台方、中介机构(第三方支付)和结算机构等多个交互方,这中间有任何一个步骤未及时完成都有可能导致业务的响应滞后。
对于业务实时性不太高的场景,可以把未响应业务挂起,在后续一段时间内重复轮询,仅在超过规定的时间及轮询次数后才将业务标记为失败,而后终止本次业务等待用户重新提交请求再次执行。但是对于业务实时性要求非常高,并且用户体验有极致要求的场景来说,这种方式显然是存在明显问题的。比如在互联网打车、点餐、外卖等业务中,用户不可能等待较长的时间来确定任务失败,而是会选择立刻终结前次任务并发起再次尝试。
对于用户来说这可能只是一个单独的任务,但在平台方和中介机构看来,由于平台业务本身就有高并发的特点,中介机构更是要面对多个平台***的接入,在要处理千万级别的瞬时业务量的情况下,快速而频繁发起的重复操作很难与在先的操作区分,极易导致***业务出错(比如重复付款等)。为避免不必要的重复操作引发错误,现有技术一般通过特定字段的防重判断来实现唯一性约束(unique constraint),例如,各个***的业务记录都新增一全程唯一订单号字段,平台接入***发起重汇时要用该订单号,第三方代付***根据该订单号判断是否发生重汇。此外,现有技术中也可通过联合/组合约束方式来进行唯一性约束,亦即不是通过特定字段的统一改造,而是利用现有记录中的多个字段(也可称为关键字段)的联合/组合来唯一确定一个业务。
然而,发明人在实现本公开实施例相关技术方案的过程中发现,现有技术的防重处理仍存在着明显的缺陷:其中,特定字段的方式需要对所有接入***都统一改造,在每个***的数据库中都增加相应的字段并统一分配,其改造成本较高。而由于业务数量的庞大,多字段的联合/组合约束也很难保证现实中业务的唯一性,以一个常见互联网业务订单为例,通常用渠道、业务类别、付款账号、收款账号和金额这5个关键字段来联合/组合约束,但实际情况中5个关键字段全部相同的多个不同正常业务也是经常会出现的,并不能真正有效地实现防重。
发明内容
针对现有技术中的上述技术问题,本公开实施例提出了一种网络请求防重处理方法、装置、电子设备及计算机可读存储介质,以解决现有技术中防重处理成本高或有效性差的问题。
本公开实施例的第一方面提供了一种网络请求防重处理方法,包括:
监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中;
监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理;
监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求。
在一些实施例中,所述将所述失败记录信息写入临时记录表中包括:
在所述临时记录表中查重,当发现关键字段内容相同的多个重复记录时,对每个重复记录中至少一个关键字段的内容进行处理,使得所述多个重复记录成为不同的记录。
在一些实施例中,所述对每个重复记录中至少一个关键字段的内容进行处理包括:
当多个重复记录中有2个以上重复记录的状态是未发送时,修改各个未发送的重复记录的金额字段,使得各个未发送的重复记录的金额不同但所有未发送的总金额不变;
当多个重复记录中只有一个重复记录的状态是未发送时,将该未发送的重复记录拆分为2个记录,拆分后的2个记录的金额不同但总金额不变,其他关键字段内容不变;
当多个重复记录均是已发送状态时,暂不做任何处理。
在一些实施例中,所述根据所述临时记录表对被拦截的失败记录信息进行对应的处理包括:
在临时记录表中查询被拦截的失败记录信息,当被拦截的失败记录信息的mainID字段在临时记录表仅有一个匹配记录时,放行该被拦截的失败记录信息,并将临时记录表中的匹配记录的状态改为“已发送”;
当被拦截的失败记录信息的mainID字段在临时记录表有多个匹配记录时,发送临时记录表的多个匹配记录,并将临时记录表中多个匹配记录的状态改为“已发送”。
在一些实施例中,所述根据所述匹配情况处理所述重复操作请求包括:
在所述临时记录表中查询所述重复操作请求,如果有关键字段内容相同且状态为已发送的匹配记录,则立刻从所述临时记录表中删除所述匹配记录,并放行所述重复操作请求;
如果删除失败或是没有关键字段内容相同且状态为已发送的匹配记录,则拒绝所述重复操作请求。
本公开实施例的第二方面提供了一种网络请求防重处理装置,包括:
临时表写入模块,用于监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中;
记录处理模块,用于监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理;
防重处理模块,用于监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求。
在一些实施例中,所述临时表写入模块包括:
字段处理模块,用于在所述临时记录表中查重,当发现关键字段内容相同的多个重复记录时,对每个重复记录中至少一个关键字段的内容进行处理,使得所述多个重复记录成为不同的记录。
在一些实施例中,所述字段处理模块包括:
金额修改模块,用于当多个重复记录中有2个以上重复记录的状态是未发送时,修改各个未发送的重复记录的金额字段,使得各个未发送的重复记录的金额不同但所有未发送的总金额不变;
记录拆分模块,用于当多个重复记录中只有一个重复记录的状态是未发送时,将该未发送的重复记录拆分为2个记录,拆分后的2个记录的金额不同但总金额不变,其他关键字段内容不变。
在一些实施例中,所述记录处理模块包括:
记录放行模块,用于在临时记录表中查询被拦截的失败记录信息,当被拦截的失败记录信息的mainID字段在临时记录表仅有一个匹配记录时,放行该被拦截的失败记录信息,并将临时记录表中的匹配记录的状态改为“已发送”;
记录替换模块,用于当被拦截的失败记录信息的mainID字段在临时记录表有多个匹配记录时,发送临时记录表的多个匹配记录,并将临时记录表中多个匹配记录的状态改为“已发送”。
在一些实施例中,所述防重处理模块包括:
删除放行模块,用于在所述临时记录表中查询所述重复操作请求,如果有关键字段内容相同且状态为已发送的匹配记录,则立刻从所述临时记录表中删除所述匹配记录,并放行所述重复操作请求;
拒绝模块,用于在删除失败或是没有关键字段内容相同且状态为已发送的匹配记录时,拒绝所述重复操作请求。
本公开实施例的第三方面提供了一种电子设备,包括:
存储器以及一个或多个处理器;
其中,所述存储器与所述一个或多个处理器通信连接,所述存储器中存储有可被所述一个或多个处理器执行的指令,所述指令被所述一个或多个处理器执行时,所述电子设备用于实现如前述各实施例所述的方法。
本公开实施例的第四方面提供了一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可用来实现如前述各实施例所述的方法。
本公开实施例的第五方面提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,可用来实现如前述各实施例所述的方法。
根据本公开实施例所提出的技术方案,通过临时记录表来执行查重验证,从而利用在先的失败记录信息来发现正常请求,保证在后的正常请求会被正确执行,本公开的实施例可以通过联合约束方式实现对各个记录的唯一性约束,从而以极低的成本正确而高效地识别出合理的重试请求,在确保***的可靠性的同时保证了***的性能。
附图说明
通过参考附图会更加清楚的理解本公开的特征和优点,附图是示意性的而不应理解为对本公开进行任何限制,在附图中:
图1是根据本公开的一些实施例所示的一种网络请求防重处理方法流程示意图;
图2是根据本公开的一些实施例所示的一种网络请求防重处理装置的模块结构示意图;
图3是根据本公开的一些实施例所示的一种电子设备的结构示意图。
具体实施方式
在下面的详细描述中,通过示例阐述了本公开的许多具体细节,以便提供对相关披露的透彻理解。然而,对于本领域的普通技术人员来讲,本公开显而易见的可以在没有这些细节的情况下实施。应当理解的是,本公开中使用“***”、“装置”、“单元”和/或“模块”术语,是用于区分在顺序排列中不同级别的不同部件、元件、部分或组件的一种方法。然而,如果其他表达式可以实现相同的目的,这些术语可以被其他表达式替换。
应当理解的是,当设备、单元或模块被称为“在……上”、“连接到”或“耦合到”另一设备、单元或模块时,其可以直接在另一设备、单元或模块上,连接或耦合到或与其他设备、单元或模块通信,或者可以存在中间设备、单元或模块,除非上下文明确提示例外情形。例如,本公开所使用的术语“和/或”包括一个或多个相关所列条目的任何一个和所有组合。
本公开所用术语仅为了描述特定实施例,而非限制本公开范围。如本公开说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的特征、整体、步骤、操作、元素和/或组件,而该类表述并不构成一个排它性的罗列,其他特征、整体、步骤、操作、元素和/或组件也可以包含在内。
参看下面的说明以及附图,本公开的这些或其他特征和特点、操作方法、结构的相关元素的功能、部分的结合以及制造的经济性可以被更好地理解,其中说明和附图形成了说明书的一部分。然而,可以清楚地理解,附图仅用作说明和描述的目的,并不意在限定本公开的保护范围。可以理解的是,附图并非按比例绘制。
本公开中使用了多种结构图用来说明根据本公开的实施例的各种变形。应当理解的是,前面或下面的结构并不是用来限定本公开。本公开的保护范围以权利要求为准。
互联网业务中,对未及时响应或失败的任务重新发起请求是常见操作,但过于频繁的重复操作又可能导致***错误,因而业务防重的判断和处理有时非常重要。一方面,当在先业务仍有效时,防重可以避免不必要的重复操作;另一方面,当在先业务失效时,防重可以高效确定正常业务和非正常业务,从而尽快放行和处理正常业务。但现有技术中的防重机制都存在一定缺陷,无论是全局字段约束还是联合约束均不能在合理的成本内有效防重。
有鉴于此,本公开实施例提供了一种网络请求防重处理方法,通过增加参照请求来进行对比实验,可在极少量次数的重试过程中判断出失败原因,从而可进行更有针对性的纠错操作,大幅提升了***效率。在本公开的一个实施例中,如图1所示,所述网络请求防重处理方法包括:
S101,通过独立的监听进程监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中。
其中,在本公开的实施例中,所述网络请求防重处理方法优选运行在网络交互的中间层、中介机构(比如第三方支付机构)的平台***中。该中介平台***一方面作为统一的入口与多个下游***交互,接收多个下游***的操作请求,对所有操作请求提供汇总处理和统一监管的服务;另一方面作为统一的发起方与多个上游***交互,将针对每个上游***的操起请求汇总后批量发给该上游***处理,并将处理结果(操作结果信息)接收后反馈给对应的下游***。可选地,在中介平台***启动的同时就创建独立的监听进程和临时记录表;也可以仅先创建监听进程,在第一次监听到失败记录信息时再创建临时记录表。进一步地,这里独立的监听进程指该监听进程与中介平台***的主表写入进程互相独立,监听进程的操作不影响主表。
S102,通过所述监听进程监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理。
其中,在本公开的实施例中,临时记录表中记录的是上游***明确表示已失败的操作,理论上说这些失败信息反馈给下游***后,下游***尝试通过重试操作来解决问题,即下游***大概率会重新发起内容相同的重复操作请求。一般情况下,失败后重新发起的请求属于正常的操作请求,而某些未等任务失败就发起的重复操作请求则很容易造成***错误,通常被视为是不正常请求。由于通常的重复操作请求并没有表明其是否是失败后再发起的,为了能从中正确区分正常请求和不正常请求,本公开的实施例首先要保证所有失败记录信息都被唯一地记录在临时记录表中,进而再保证发送给下游***的失败记录信息是可被唯一确定的,避免关键字段相同的相似记录影响后续操作。
S103,通过所述监听进程监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求。
其中,在本公开的实施例中,通过临时记录表来执行查重验证,从而利用在先的失败记录信息来发现正常请求,保证在后的正常请求会被正确执行。优选地,监听下游***发起的全部操作请求,根据请求信息中的特定信息识别出重复操作请求,进一步通过重复操作请求的关键字段在临时记录表中查询,如果该重复操作请求在临时记录表中有匹配的失败记录信息,则该重复操作请求是正常请求,应当被执行;如果判定是非正常请求,则会被拒绝执行。通过这种方式,本公开的实施例可有效识别正当的重试操作,避免不当重试影响***性能和可靠性,实现了较好的防重效果。
在本公开的一些实施例中,通过多个关键字段组合的联合约束方式来管理所述临时记录表。优选地,所述临时记录表中记录的失败记录信息除了包括多个关键字段(如渠道、业务类别、付款账号、收款账号和金额等)之外,还可包括:记载中介平台***业务序号的字段(例如表示订单号的mainID字段)和记载信息发送情况的状态字段(例如status字段)。在一个优选的实施例中,还可进一步通过***缓存来提升***高并发时的可靠性;具体地,将获取的失败记录信息先存储到预先创建的缓存中,当缓存已满或者定时(避免延迟过长)将失败记录信息从缓存中移出并写入临时记录表。
然而,由于之前背景技术部分所说的问题,现有技术中通过多个关键字段组合的联合约束方式往往并不能唯一确定一条记录,单纯依靠临时记录表有可能会得到多条关键字段相同的记录,因而并不能有效甄别某些记录的具体对应方式,需要对临时记录表进行进一步的改造。在本公开的一个实施例中,临时记录表中的失败记录信息需要进一步处理以尽量避免重复记录。具体地,写入临时记录表时,首先在所述临时记录表中查重,当发现关键字段内容相同的多个重复记录(此处仅指关键字段内容重复,实际全部内容并不重复,应是多个不同记录)时,对每个重复记录中至少一个关键字段的内容进行处理,使得所述多个重复记录成为不同的记录(即可被多个关键字段的组合唯一约束)。
在一些实施例中,考虑到其他关键字段的修改可能会导致***错误,优选对关键字段中的金额字段进行处理,使得多个重复记录的金额字段不再相同但总金额仍与原总金额相同;这样一方面可以让多个重复记录形成区分,另一方面又不影响双方实际的收支。进一步地,考虑到每条记录还有可能有不同的状态,对关键字段的处理包括:
当多个重复记录中有2个以上重复记录的状态是未发送时,修改各个未发送的重复记录的金额字段,使得各个未发送的重复记录的金额不同但所有未发送的总金额不变;
当多个重复记录中只有一个重复记录的状态是未发送时,将该未发送的重复记录拆分为2个记录,拆分后的2个记录的金额不同但总金额不变(与拆分前记录的金额相同),其他关键字段内容不变(尤其是mainID字段不变);
当多个重复记录均是已发送状态时,暂不做任何处理。
可选地,上述查重处理可在失败记录信息写入临时记录表时进行,也可以在任何未对临时记录表进行操作的空闲时间进行,以充分利用***资源,缓解***压力。
在本公开的实施例中,通过所述监听进程监听发往下游***的全部操作信息,识别并拦截失败记录信息;
其中,在临时记录表中查询该失败记录信息,当所拦截的失败记录信息的mainID字段在临时记录表仅有一个匹配记录时,放行该被拦截的失败记录信息,并将临时记录表中的匹配记录的状态(status字段)改为“已发送”;
当所拦截的失败记录信息的mainID字段在临时记录表有多个匹配记录时,发送临时记录表的多个匹配记录(即替换了原记录信息),并将临时记录表中多个匹配记录的状态(status字段)改为“已发送”。
通过这种方式,可以保证发往下游***的失败记录信息(或相应的匹配记录)都是满足唯一性约束的,因而下游***根据其再发起的重试操作也会满足唯一性约束,可以被有效识别出。其中,临时记录表中个记录的状态(status字段)默认为“未发送”。
进一步地,在本公开的实施例中,通过所述监听进程监听下游***发起的重复操作请求,其中,默认各下游***会根据接收到的失败记录信息发起对应的重复操作请求(即根据修改过金额后的记录发起重试操作),同时会在请求中明确注明本次请求是重复发起的(比如通过备注字段标记,或在统一的重试/重汇表中发起请求)。
在所述临时记录表中查询所述重复操作请求,如果有关键字段内容相同且状态为已发送的匹配记录,则放行所述重复操作请求,并立刻从所述临时记录表中删除所述匹配记录;
如果没有关键字段内容相同且状态为已发送的匹配记录,则拒绝所述重复操作请求。
进一步地,为了在高并发时仍能有效防重,在发现匹配记录后应当马上进行删除操作(该删除操作相当于一个逻辑“锁”,锁定匹配记录),如果删除成功,则说明这是第一个/唯一的重复操作请求,可以被放行;如果删除失败(通常是记录已在删除中或已被删除而不存在),则说明已有其它并发的重复操作请求在同时执行,本重复操作请求应当被拒绝。
放行的重复操作请求会被提交给上游***,为了合理更新主表,对于所有修改金额和拆分的记录信息,都应该在成功之后上报通知主表。
以上方法步骤是从第三方支付机构的角度出发进行描述,本领域技术人员应当可以理解,本公开的实施例显然也适用于其他交互终端,比如用户端设备、商户端设备或清结算机构设备等,上述方法步骤不应视为对本公开实施例具体执行设备的限制。
根据本公开实施例所提出的网络请求防重处理方法,可以通过临时记录表来帮助完成对各个记录的唯一性约束,从而以极低的成本正确而高效地识别出合理的重试请求,在确保***的可靠性的同时保证了***的性能。
图2是根据本公开的一些实施例所示的一种网络请求防重处理装置示意图。如图2所示,网络请求防重处理装置200包括临时表写入模块201、记录处理模块202和防重处理模块203;其中,
临时表写入模块201,用于监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中;
记录处理模块202,用于监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理;
防重处理模块203,用于监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求。
在一些实施例中,所述临时表写入模块包括:
字段处理模块,用于在所述临时记录表中查重,当发现关键字段内容相同的多个重复记录时,对每个重复记录中至少一个关键字段的内容进行处理,使得所述多个重复记录成为不同的记录。
在一些实施例中,所述字段处理模块包括:
金额修改模块,用于当多个重复记录中有2个以上重复记录的状态是未发送时,修改各个未发送的重复记录的金额字段,使得各个未发送的重复记录的金额不同但所有未发送的总金额不变;
记录拆分模块,用于当多个重复记录中只有一个重复记录的状态是未发送时,将该未发送的重复记录拆分为2个记录,拆分后的2个记录的金额不同但总金额不变,其他关键字段内容不变。
在一些实施例中,所述记录处理模块包括:
记录放行模块,用于在临时记录表中查询被拦截的失败记录信息,当被拦截的失败记录信息的mainID字段在临时记录表仅有一个匹配记录时,放行该被拦截的失败记录信息,并将临时记录表中的匹配记录的状态改为“已发送”;
记录替换模块,用于当被拦截的失败记录信息的mainID字段在临时记录表有多个匹配记录时,发送临时记录表的多个匹配记录,并将临时记录表中多个匹配记录的状态改为“已发送”。
在一些实施例中,所述防重处理模块包括:
删除放行模块,用于在所述临时记录表中查询所述重复操作请求,如果有关键字段内容相同且状态为已发送的匹配记录,则立刻从所述临时记录表中删除所述匹配记录,并放行所述重复操作请求;
拒绝模块,用于在删除失败或是没有关键字段内容相同且状态为已发送的匹配记录时,拒绝所述重复操作请求。
参考附图3,为本公开一个实施例提供的电子设备示意图。如图3所示,该电子设备300包括:
存储器330以及一个或多个处理器310;
其中,所述存储器330与所述一个或多个处理器310通信连接,所述存储器330中存储有可被所述一个或多个处理器执行的指令332,所述指令332被所述一个或多个处理器310执行,以使所述一个或多个处理器310执行本公开前述实施例中的方法。
具体地,处理器310和存储器330可以通过总线或者其他方式连接,图3中以通过总线340连接为例。处理器310可以为中央处理器(Central Processing Unit,CPU)。处理器310还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器330作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本公开实施例中的级联渐进网络等。处理器310通过运行存储在存储器330中的非暂态软件程序、指令以及功能模块332,从而执行处理器的各种功能应用以及数据处理。
存储器330可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储处理器310所创建的数据等。此外,存储器330可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器330可选包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络(比如通过通信接口320)连接至处理器310。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本公开的一个实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被执行后执行本公开前述实施例中的方法。
前述的计算机可读取存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方式或技术来实现的物理易失性和非易失性、可移动和不可移动介质。计算机可读取存储介质具体包括,但不限于,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、可擦除可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存或其他固态存储器技术、CD-ROM、数字多功能盘(DVD)、HD-DVD、蓝光(Blue-Ray)或其他光存储设备、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其他介质。
尽管此处所述的主题是在结合操作***和应用程序在计算机***上的执行而执行的一般上下文中提供的,但本领域技术人员可以认识到,还可结合其他类型的程序模块来执行其他实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。本领域技术人员可以理解,此处所述的本主题可以使用其他计算机***配置来实践,包括手持式设备、多处理器***、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等,也可使用在其中任务由通过通信网络连接的远程处理设备执行的分布式计算环境中。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备的两者中。
本领域普通技术人员可以意识到,结合本文中所本公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对原有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。
综上所述,本公开提出了一种网络请求防重处理方法、装置、电子设备及其计算机可读存储介质。本公开实施例通过临时记录表来执行查重验证,从而利用在先的失败记录信息来发现正常请求,保证在后的正常请求会被正确执行,本公开的实施例可以通过联合约束方式实现对各个记录的唯一性约束,从而以极低的成本正确而高效地识别出合理的重试请求,在确保***的可靠性的同时保证了***的性能。
应当理解的是,本公开的上述具体实施方式仅仅用于示例性说明或解释本公开的原理,而不构成对本公开的限制。因此,在不偏离本公开的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。此外,本公开所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (6)
1.一种网络请求防重处理方法,其特征在于,包括:
监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中;
监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理;
监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求,
所述将所述失败记录信息写入临时记录表中包括:
在所述临时记录表中查重,当发现关键字段内容相同的多个重复记录时,对每个重复记录中至少一个关键字段的内容进行处理,使得所述多个重复记录成为不同的记录,
所述对每个重复记录中至少一个关键字段的内容进行处理包括:
当多个重复记录中有2个以上重复记录的状态是未发送时,修改各个未发送的重复记录的金额字段,使得各个未发送的重复记录的金额不同但所有未发送的总金额不变;
当多个重复记录中只有一个重复记录的状态是未发送时,将该未发送的重复记录拆分为2个记录,拆分后的2个记录的金额不同但总金额不变,其他关键字段内容不变;
当多个重复记录均是已发送状态时,暂不做任何处理,
上述查重处理在失败记录信息写入临时记录表时进行或在任何未对临时记录表进行操作的空闲时间进行,
将放行的重复操作请求提交至所述上游***,对于所有修改金额和拆分的记录信息在成功之后,上报所述上游***的主表,以更新所述主表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述临时记录表对被拦截的失败记录信息进行对应的处理包括:
在临时记录表中查询被拦截的失败记录信息,当被拦截的失败记录信息的mainID字段在临时记录表仅有一个匹配记录时,放行该被拦截的失败记录信息,并将临时记录表中的匹配记录的状态改为“已发送”;
当被拦截的失败记录信息的mainID字段在临时记录表有多个匹配记录时,发送临时记录表的多个匹配记录,并将临时记录表中多个匹配记录的状态改为“已发送”。
3.根据权利要求1所述的方法,其特征在于,所述根据所述匹配情况处理所述重复操作请求包括:
在所述临时记录表中查询所述重复操作请求,如果有关键字段内容相同且状态为已发送的匹配记录,则立刻从所述临时记录表中删除所述匹配记录,并放行所述重复操作请求;
如果删除失败或是没有关键字段内容相同且状态为已发送的匹配记录,则拒绝所述重复操作请求。
4.一种网络请求防重处理装置,其特征在于,包括:
临时表写入模块,用于监听上游***返回的操作结果信息,获取所述操作结果信息中的失败记录信息,将所述失败记录信息写入临时记录表中;
记录处理模块,用于监听发往下游***的全部操作信息,识别并拦截所述全部操作信息中的失败记录信息,根据所述临时记录表对被拦截的失败记录信息进行对应的处理;
防重处理模块,用于监听下游***发起的重复操作请求,在所述临时记录表中查询所述重复操作请求的匹配情况,根据所述匹配情况处理所述重复操作请求,
所述临时表写入模块包括:
字段处理模块,用于在所述临时记录表中查重,当发现关键字段内容相同的多个重复记录时,对每个重复记录中至少一个关键字段的内容进行处理,使得所述多个重复记录成为不同的记录,
所述字段处理模块包括:
金额修改模块,用于当多个重复记录中有2个以上重复记录的状态是未发送时,修改各个未发送的重复记录的金额字段,使得各个未发送的重复记录的金额不同但所有未发送的总金额不变;
记录拆分模块,用于当多个重复记录中只有一个重复记录的状态是未发送时,将该未发送的重复记录拆分为2个记录,拆分后的2个记录的金额不同但总金额不变,其他关键字段内容不变,
上述查重处理在失败记录信息写入临时记录表时进行或在任何未对临时记录表进行操作的空闲时间进行,
将放行的重复操作请求提交至所述上游***,对于所有修改金额和拆分的记录信息在成功之后,上报所述上游***的主表,以更新所述主表。
5.根据权利要求4所述的装置,其特征在于,所述记录处理模块包括:
记录放行模块,用于在临时记录表中查询被拦截的失败记录信息,当被拦截的失败记录信息的mainID字段在临时记录表仅有一个匹配记录时,放行该被拦截的失败记录信息,并将临时记录表中的匹配记录的状态改为“已发送”;
记录替换模块,用于当被拦截的失败记录信息的mainID字段在临时记录表有多个匹配记录时,发送临时记录表的多个匹配记录,并将临时记录表中多个匹配记录的状态改为“已发送”。
6.根据权利要求4所述的装置,其特征在于,所述防重处理模块包括:
删除放行模块,用于在所述临时记录表中查询所述重复操作请求,如果有关键字段内容相同且状态为已发送的匹配记录,则立刻从所述临时记录表中删除所述匹配记录,并放行所述重复操作请求;
拒绝模块,用于在删除失败或是没有关键字段内容相同且状态为已发送的匹配记录时,拒绝所述重复操作请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010488604.0A CN111708802B (zh) | 2020-06-02 | 2020-06-02 | 网络请求防重处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010488604.0A CN111708802B (zh) | 2020-06-02 | 2020-06-02 | 网络请求防重处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111708802A CN111708802A (zh) | 2020-09-25 |
CN111708802B true CN111708802B (zh) | 2024-05-07 |
Family
ID=72537562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010488604.0A Active CN111708802B (zh) | 2020-06-02 | 2020-06-02 | 网络请求防重处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111708802B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590662B (zh) * | 2021-08-04 | 2024-05-10 | 吉林亿联银行股份有限公司 | 业务交易结果的查询方法及装置、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493924A (zh) * | 2009-03-10 | 2009-07-29 | 中体彩科技发展有限公司 | 事务处理***的事务处理方法及彩票事务处理方法 |
CN101730050A (zh) * | 2009-10-30 | 2010-06-09 | 中兴通讯股份有限公司 | 一种防止mbbms业务***各网元信息不一致的方法及*** |
CN102436485A (zh) * | 2010-10-20 | 2012-05-02 | 微软公司 | 动态拆分多承租人数据库 |
CN102929698A (zh) * | 2012-09-29 | 2013-02-13 | 北京百度网讯科技有限公司 | 一种任务判重方法及*** |
CN105573996A (zh) * | 2014-10-09 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 数据库处理方法、装置及*** |
CN105915627A (zh) * | 2016-05-30 | 2016-08-31 | 北京小米移动软件有限公司 | 业务请求处理方法及装置 |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及*** |
CN107861825A (zh) * | 2017-10-16 | 2018-03-30 | 北京京东尚科信息技术有限公司 | 请求处理/状态码查询方法及装置、下/上游节点、介质 |
-
2020
- 2020-06-02 CN CN202010488604.0A patent/CN111708802B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493924A (zh) * | 2009-03-10 | 2009-07-29 | 中体彩科技发展有限公司 | 事务处理***的事务处理方法及彩票事务处理方法 |
CN101730050A (zh) * | 2009-10-30 | 2010-06-09 | 中兴通讯股份有限公司 | 一种防止mbbms业务***各网元信息不一致的方法及*** |
CN102436485A (zh) * | 2010-10-20 | 2012-05-02 | 微软公司 | 动态拆分多承租人数据库 |
CN102929698A (zh) * | 2012-09-29 | 2013-02-13 | 北京百度网讯科技有限公司 | 一种任务判重方法及*** |
CN105573996A (zh) * | 2014-10-09 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 数据库处理方法、装置及*** |
CN105915627A (zh) * | 2016-05-30 | 2016-08-31 | 北京小米移动软件有限公司 | 业务请求处理方法及装置 |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及*** |
CN107861825A (zh) * | 2017-10-16 | 2018-03-30 | 北京京东尚科信息技术有限公司 | 请求处理/状态码查询方法及装置、下/上游节点、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111708802A (zh) | 2020-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3776208B1 (en) | Runtime self-correction for blockchain ledgers | |
CN107818431B (zh) | 一种提供订单轨迹数据的方法和*** | |
US20200013025A1 (en) | Conditional deferred transactions for blockchain | |
US9189355B1 (en) | Method and system for processing a service request | |
CN107633016B (zh) | 数据处理方法及装置和电子设备 | |
CN110188103A (zh) | 数据对账方法、装置、设备和存储介质 | |
US20200387433A1 (en) | Database optimized disaster recovery orchestrator | |
CN111064725A (zh) | 一种代码零入侵接口校验方法和校验装置 | |
RU2711348C1 (ru) | Способ и система для обработки запросов в распределенной базе данных | |
CN105930226B (zh) | 一种数据处理方法及装置 | |
CN111708802B (zh) | 网络请求防重处理方法及装置 | |
CN103440460A (zh) | 一种应用***变更验证方法及验证*** | |
CN111782456A (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
US11816163B2 (en) | Systems and methods for improved transactional mainframes | |
CN112835885A (zh) | 一种分布式表格存储的处理方法、装置及*** | |
CN111741080B (zh) | 网络文件分发方法及装置 | |
CN114328749A (zh) | 业务数据处理方法及其装置、计算机可读存储介质 | |
US11243979B1 (en) | Asynchronous propagation of database events | |
US20180225325A1 (en) | Application resiliency management using a database driver | |
CN114218303B (zh) | 一种交易数据的处理***、处理方法、介质和设备 | |
US6865697B2 (en) | Method and apparatus for reduced error checking of data received by a server from a client | |
CN112148762A (zh) | 一种实时数据流的统计方法和装置 | |
CN112860746B (zh) | 一种基于缓存削减的方法、设备及*** | |
CN115374098A (zh) | 高并发支付订单防重方法、装置、***、设备、介质和程序产品 | |
CN114218173A (zh) | 传帐类交易文件的批处理***、处理方法、介质和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |