CN116431375A - 一种券商核心交易***容错方法、装置及存储介质 - Google Patents

一种券商核心交易***容错方法、装置及存储介质 Download PDF

Info

Publication number
CN116431375A
CN116431375A CN202310425579.5A CN202310425579A CN116431375A CN 116431375 A CN116431375 A CN 116431375A CN 202310425579 A CN202310425579 A CN 202310425579A CN 116431375 A CN116431375 A CN 116431375A
Authority
CN
China
Prior art keywords
dealer
transaction
core
service
request
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.)
Pending
Application number
CN202310425579.5A
Other languages
English (en)
Inventor
李寞
胡辉
徐文长
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huatai Securities Co ltd
Original Assignee
Huatai Securities Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huatai Securities Co ltd filed Critical Huatai Securities Co ltd
Priority to CN202310425579.5A priority Critical patent/CN116431375A/zh
Publication of CN116431375A publication Critical patent/CN116431375A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种券商核心交易***容错方法、装置及存储介质,包括:获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;识别各服务提供方在执行各所述服务请求时的状态;若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性。本发明能够在服务提供方偶发性失败和故障宕机场景下保持调用方的可用性,并有效的保证了各***数据的最终一致性,在工程实践中具有很好的性能和扩展性。

Description

一种券商核心交易***容错方法、装置及存储介质
技术领域
本发明涉及分布式***容错技术领域,特别涉及一种券商核心交易***容错方法、装置及存储介质。
背景技术
在分布式***环境下,一个客户端请求需要经过多个服务或***才能完成,服务间需要通过网络来进行相互调用,如果某个服务由于宕机或者其他原因导致不可用,则服务的调用方需要采取一定的容错机制,避免该不可用服务影响了当前服务的请求处理。
券商核心交易***与各服务提供方之间交互关系如图1所示,客户A做一笔银证转账,券商核心交易***向银行***发起将钱从个人账户转入证券账户的请求,银行***将请求的处理结果反馈至券商核心交易***;若银行***的处理结果返回成功,则调用柜台***给客户簿记一笔入金流水;若返回失败,则银证转账交易失败。在这过程中,券商核心交易***在调用银行***时,有可能请求丢失未到达银行,或者银行***由于某种原因宕机故障,或者银行反馈结果丢失,导致券商核心交易***不明确客户的划账是否成功,无法进行后续的交易步骤;类似的,券商核心交易***在调用交易柜台***时,有可能请求未到达交易柜台***,或者交易柜台***宕机故障,或者交易柜台***簿记结果回传丢失,导致券商核心交易***不明确客户的柜台簿记是否成功。在这两种场景下券商核心交易***都应该设计相应的容错机制,避免给客户遗漏或者重复入金,确保三个***都在做正确的处理,银行***记录一笔客户转账流水,券商核心交易***记录一笔客户的银证转账申请流水,交易柜***台簿记一笔客户入金流水,保证三个***数据的最终一致性。
容错机制是与具体要处理的业务场景强绑定的,采用不同的处理方式也会产生不同的处理结果;目前,券商核心交易***常用的容错机制包括以下几种:
(1)快速失败机制:当服务调用失败时,什么都不做,也不进行重试,直接给客户端返回失败。这种机制通常适用于那些接口不具备幂等性的服务,重试可能会导致数据的不一致性;
(2)失败自动切换机制:当调用服务的某个节点失败时,自动切换到集群的另一个节点重试发送请求,因为如果集群只是单节点故障,切换到其他节点依然可以保证***的可用性。这种机制因为需要重试,比较耗时,要注意超时间的设置,而且也要求接口具备幂等性,失败节点的结果是未知的,对于不具备幂等性的被调用***也会引发数据的不一致;
(3)失败安全机制:当服务调用失败时,尽量保证核心业务的完成,只要不是核心业务失败就可以返回成功。但是该机制只适合于非核心业务,可以忽略不计,或者可以通过日志数据来补偿的,不适用于核心业务的容错。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种券商核心交易***容错方法、装置及存储介质,能够在服务提供方发生偶发性失败和故障宕机场景下保持调用方的可用性,并且能够有效保证各***数据的最终一致性。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供一种券商核心交易***容错方法,所述方法包括:
获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;
识别各服务提供方在执行各所述服务请求时的状态;
若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;
若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性;
其中,不同的服务提供方发生大面积请求失败时采用不同的熔断机制。
结合第一方面,优选地,所述失败自动重试机制,包括以下步骤:
步骤a:采用快照的方式记录异常服务请求的调用过程信息,包括所述异常服务请求的幂等流水号、异常阶段、请求中的全部接口参数;
步骤b:根据所述调用过程信息中的幂等流水号,到其对应的服务提供方查询该服务请求的交易状态;
步骤c:若能查询到该服务请求的交易结果,则根据所述交易结果更新所述券商核心交易***内相关的交易状态,异常任务恢复结束;
步骤d:若查无交易或者查询仍然异常,则按照预设的查询时间间隔重复步骤b继续查询,若在预设的查询次数阈值内查询到该服务请求的交易结果,则执行步骤c;若查询次数达到预设的查询次数阈值,则执行步骤e;
步骤e:根据所述调用过程信息中的幂等流水号重新发起交易;
步骤f:若重试交易成功,则按照正常流程更新所述券商核心交易***的交易数据和状态,异常任务恢复结束;
步骤g:若重试交易仍然失败,则按照预设的重试时间间隔重复步骤e继续发起服务请求;若在预设的重试次数阈值内重试交易成功,则执行步骤f;若重试次数达到预设的重试次数阈值,则触发预警,以通知人工进行异常处理。
结合第一方面,优选地,所述偶发性调用异常场景包括服务调用超时、交易未明、网络异常、***繁忙。
结合第一方面,优选地,所述服务提供方包括银行***和交易柜台***。
结合第一方面,优选地,所述银行***发生故障宕机场景时采用的熔断机制,包括以下步骤:
采集银行***的心跳检测接口数据;
每间隔一分钟调用所述接口数据并进行识别,若识别到连续5次交易失败,则将券商核心交易***与所述银行***的切换为open熔断状态;
若识别到连续5次交易成功则将券商核心交易***与所述银行***的服务通道恢复至close关闭状态。
结合第一方面,优选地,所述交易柜台***发生故障宕机场景时采用的熔断机制,包括以下步骤:
每分钟识一次券商核心交易***对所述交易柜台***发起的服务请求成功率;
若当前次识别到的成功率高于预设的上阈值,则将券商核心交易***与所述交易柜台***的服务通道保持close关闭状态;
若当前次识别到的成功率低于预设的下阈值,则将券商核心交易***与所述交易柜台***的服务通道切换为open熔断状态,并且不调用该服务直接返回同时缓存请求;
下一次识别成功率时,将券商核心交易***与所述交易柜台***的服务通道切换为half–open半熔断状态,并间隔发起尝试探测交易请求;
当探测交易请求的成功率高于预设的上阈值时,将券商核心交易***与所述交易柜台***的服务通道恢复至close关闭状态;否则,继续转入open熔断状态,继续等待下个间隔尝试时间重新发起尝试探测交易请求。
结合第一方面,优选地,所述成功率预设的下阈值为50%,预设的上阈值为80%。
第二方面,本发明提供一种券商核心交易***容错装置,所述装置包括:
获取模块,用于获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;
识别模块,用于识别各服务提供方在执行各所述服务请求时的状态;
失败自动重试模块,用于若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;
熔断模块,用于若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性;
其中,不同的服务提供方发生大面积请求失败时采用不同的熔断机制。
第三方面,本发明提供一种券商核心交易***容错装置,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行第一方面任一项所述的券商核心交易***容错方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如第一方面任一项所述的券商核心交易***容错方法的步骤。
与现有技术相比,本发明所达到的有益效果:
本发明通过基于失败自动重试机制+熔断机制实现券商核心交易***与银行***、交易柜台***间的容错方案,提出了一套完整的在服务提供方偶发性失败和故障宕机场景下保持调用方可用性的流程;本发明在工程实践中具有很高的性能和扩展性,并有效的保证了各***数据的最终一致性。
与目前的分布式***容错方案相比,本发明具有如下优点:
1、***的高可用性:当下游两个服务提供方发生故障时,没有通过快速失败直接拒绝客户请求,而是通过缓存和异常恢复的方式解决,有效控制了下游服务故障的影响范围;
2、故障处理自动化:通过***自动化恢复偶发性***间调用失败,通过***自动化隔离外部***的宕机和停服,通过***自动化感应外部***的恢复,整个过程无需人工干预,降低了运维成本;
3、***具有很强的可扩展性:本发明中的失败自动重试机制可支持多种业务场景,新增场景只需覆盖requery重查和retry重试两个功能便可加入自动重试队列;熔断机制采用aop+redis+自定义注解,不侵入业务代码,新增业务场景只需添加自定义注解即可。
附图说明
图1是本发明实施例提供的券商核心交易***与各服务提供方之间交互关系示意图;
图2是本发明实施例提供的一种券商核心交易***容错方法的流程原理框图;
图3是本发明实施例提供的交易柜台执行失败自动重试机制的流程示意框图;
图4是本发明实施例提供的熔断机制2实现三种状态的转换逻辑示意图;
图5是本发明实施例提供的针对银证转账业务实施券商核心交易***容错方法的流程示意图。
具体实施方式
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符"/",一般表示前后关联对象是一种“或”的关系。
实施例一:
一个完整的业务功能通常都不是在一个独立***中完成的,需要串联起多个服务和***;券商核心交易***的服务提供方包括银行***和交易柜台***,为确保券商核心交易***要具备实时性、准确性、稳定性的基本要求,针对网络不可靠、服务提供方可能会发生故障等问题,本实施例介绍一种券商核心交易***容错方法,具体包括如下步骤:
步骤1:获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;
步骤2:识别各服务提供方在执行各所述服务请求时的状态;
步骤3.1:若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;
步骤3.2:若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性;
其中,不同的服务提供方发生大面积请求失败时采用不同的熔断机制。
具体的,如图2所示,本实施例提供的券商核心交易***容错方法包括失败自动重试机制+熔断机制两部分共同解决***的容错问题;在整个银证转账***运行过程中,当调用银行***和交易柜台***时,对于服务调用超时、交易未明、网络异常、***繁忙等偶发性调用异常场景设计了一套通用的失败自动重试机制处理偶发性***调用异常;此外,采用熔断机制1应对银行***的调用的大面积失败(即故障宕机场景),采用熔断机制2应对交易柜台***调用的大面积失败。
需要说明的是,在执行失败自动重试机制前,首先需要对异常场景进行分类,明确哪些场景失败可以重试,哪些不需要重试;要区分超时、交易未明和明确失败的场景,对于明确失败的场景(如银行划款,但是客户个人账户资金不足)直接返回失败,无需容错机制干预;对于失败场景需要通过自动重试等手段恢复的,首先要保证交易幂等性,本实施例使用开源的雪花算法snowflake生成幂等交易流水号,每各服务请求均有一个全局唯一的ID,以防止一笔交易重复做多次。
作为本发明的一种实施例,本发明所设计的失败自动重试机制,包括以下步骤:
步骤a:采用快照的方式记录异常服务请求的调用过程信息,包括所述异常服务请求的幂等流水号、异常阶段、请求中的全部接口参数;
步骤b:根据所述调用过程信息中的幂等流水号,到其对应的服务提供方查询该服务请求的交易状态;
步骤c:若能查询到该服务请求的交易结果,则根据所述交易结果更新所述券商核心交易***内相关的交易状态,异常任务恢复结束;
步骤d:若查无交易或者查询仍然异常,则按照预设的查询时间间隔重复步骤b继续查询,若在预设的查询次数阈值内查询到该服务请求的交易结果,则执行步骤c;若查询次数达到预设的查询次数阈值,则执行步骤e;
进一步的,本实施例预设的查询次数阈值为5次。
步骤e:根据所述调用过程信息中的幂等流水号重新发起交易;
步骤f:若重试交易成功,则按照正常流程更新所述券商核心交易***的交易数据和状态,异常任务恢复结束;
步骤g:若重试交易仍然失败,则按照预设的重试时间间隔重复步骤e继续发起服务请求;若在预设的重试次数阈值内重试交易成功,则执行步骤f;若重试次数达到预设的重试次数阈值,则触发预警,以通知人工进行异常处理;
进一步的,本实施例预设的重试次数阈值也设置为5次。
其中,对交易柜台执行失败自动重试机制的逻辑如3图所示。
需要说明的是,如果大面积请求失败,失败自动重试也失败,重试也没有意义了,此时,应该开启适当的熔断机制,使用熔断机制的设计不仅可以保护服务提供方不会过载,还可以避免调用方资源浪费。
作为本发明的一种实施例,针对银行***发生故障宕机场景时采用的熔断机制(即熔断机制1),包括以下步骤:
采集银行***的心跳检测接口数据;
每间隔一分钟调用所述接口数据并进行识别,若识别到连续5次交易失败,则将券商核心交易***与所述银行***的切换为open熔断状态;
若识别到连续5次交易成功则将券商核心交易***与所述银行***的服务通道恢复至close关闭状态。
需要说明的是,为适应银行***场景,该熔断机制1的方法相对简单,当银行不在服务时间或者停服升级时,为了让客户无感知,会先将客户的银证转账申请缓存下来,当服务正常后,自动向银行发起调用。
作为本发明的一种实施例,由于交易柜台***没有类似于银行***的健康检测接口,因此,熔断机制2要根据调用的结果自适应调节其服务通道熔断的状态;具体包括aop(面向切面编程)+redis缓存+自定义注解,添加注解@CheckResult的方法执行后统计方法调用结果,结合close(关闭)、open(熔断)、half open(半熔断)三个状态控制整个熔断的逻辑。
具体的,本实施例提供的交易柜台***发生故障宕机场景时采用的熔断机制(即熔断机制2),包括以下步骤:
每分钟识一次券商核心交易***对所述交易柜台***发起的服务请求成功率;
若当前次识别到的成功率高于预设的上阈值,则将券商核心交易***与所述交易柜台***的服务通道保持close关闭状态;
若当前次识别到的成功率低于预设的下阈值,则将券商核心交易***与所述交易柜台***的服务通道切换为open熔断状态,并且不调用该服务直接返回同时缓存请求;
下一次识别成功率时,将券商核心交易***与所述交易柜台***的服务通道切换为half–open半熔断状态,并间隔发起尝试探测交易请求;
当探测交易请求的成功率高于预设的上阈值时,将券商核心交易***与所述交易柜台***的服务通道恢复至close关闭状态;否则,继续转入open熔断状态,继续等待下个间隔尝试时间重新发起尝试探测交易请求。
下面结合图4对熔断机制2实现三种状态的转换逻辑做进一步介绍:
首先关于close关闭状态,也就是正常状态,标记自定义注解@CheckResult的方法执行后统计结果,如果失败或异常,则在redis中创建breaker_key,并且自增1,设置该key的存活时长为1分钟,breaker_key值失效前成功率低于预设的下阈值(50%),则认为达到不可用的状态标准,进入open熔断状态;在close关闭状态下的调用失败会按照失败自动重试机制进行恢复;
其次是open熔断状态,进入该状态下所有请求都缓存下来,不执行真正的调用而是直接返回,并且启动间隔尝试定时器,在redis创建recover_key(失效时间),并设置存活时长(10分钟);
最后当recover_key失效后则开启间隔尝试探测,转入half–open半熔断状态,在此状态期间统计调用成功的次数,如果成功率大于阈值(80%),则认为达到可用状态标准,转close关闭状态;否则继续转入open熔断状态,继续等待下个间隔尝试时间(recover_key)。
下面结合图5,以券商银证转账业务为例进一步说明本发明方法在实际中的运用;具体过程为:客户首先在券商核心交易***发起一笔银证转账申请,然后,券商核心交易***要先判断银行***当前的状态,open则缓存请求数据,不调用银行服务,直接返回;close则通知银行***将客户资金从个人账户划拨到证券账户,银行反馈处理结果,调用失败则记录数据;调用正常,则调用柜台簿记流水。此外,簿记流水要先判断当前交易柜台***的状态,open则缓存簿记请求,不调用交易柜台***,直接返回;half open则放行一些交易检测服务恢复情况;close则正常调用柜台簿记流水;half open和close中调用失败的都要记录数据;通过定时器触发异常任务恢复,处理以上各阶段记录的全部调用失败数据。因此,本发明方法很好的解决了该业务场景下***间的容错问题,在银证转账业务流程中,偶发性调用银行***、交易柜台***失败均可通过失败自动重试机制自动恢复;银行***、交易柜台***宕机场景通过两个不同的熔断机制使得券商核心交易***仍可以保持可用性。
综上所述,本发明实施例提供的券商核心交易***容错方法,通过雪花算法生成唯一的交易流水号,发送给银行***和交易柜台***做数据库唯一索引,为失败自动重试机制提供幂等前提;设计具备通用性的失败自动重试机制降低了运维成本;通过基于open、close、half open三个状态转换的自适应熔断器机制,保证了***的高可用性,在工程实践中具有很好的性能和扩展性。
实施例二:
本发明实施例提供了一种券商核心交易***容错装置,可以用于实施实施例一所述的方法,具体包括:
获取模块,用于获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;
识别模块,用于识别各服务提供方在执行各所述服务请求时的状态;
失败自动重试模块,用于若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;
熔断模块,用于若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性;
其中,不同的服务提供方发生大面积请求失败时采用不同的熔断机制。
本发明实施例提供的券商核心交易***容错装置与实施例一提供的券商核心交易***容错方法基于相同的技术构思,能够产生如实施例一所述的有益效果,在本实施例中未详尽描述的内容可以参见实施例一。
实施例三:
本发明实施例提供了一种券商核心交易***容错装置,包括处理器及存储介质;
所述存储介质用于存储指令;
处理器用于根据指令进行操作以执行根据实施例一中任一项方法的步骤。
实施例四:
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如实现实施例一中任一项方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (10)

1.一种券商核心交易***容错方法,其特征在于,所述方法包括:
获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;
识别各服务提供方在执行各所述服务请求时的状态;
若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;
若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性;
其中,不同的服务提供方发生大面积请求失败时采用不同的熔断机制。
2.根据权利要求1所述的券商核心交易***容错方法,其特征在于,所述失败自动重试机制,包括以下步骤:
步骤a:采用快照的方式记录异常服务请求的调用过程信息,包括所述异常服务请求的幂等流水号、异常阶段、请求中的全部接口参数;
步骤b:根据所述调用过程信息中的幂等流水号,到其对应的服务提供方查询该服务请求的交易状态;
步骤c:若能查询到该服务请求的交易结果,则根据所述交易结果更新所述券商核心交易***内相关的交易状态,异常任务恢复结束;
步骤d:若查无交易或者查询仍然异常,则按照预设的查询时间间隔重复步骤b继续查询,若在预设的查询次数阈值内查询到该服务请求的交易结果,则执行步骤c;若查询次数达到预设的查询次数阈值,则执行步骤e;
步骤e:根据所述调用过程信息中的幂等流水号重新发起交易;
步骤f:若重试交易成功,则按照正常流程更新所述券商核心交易***的交易数据和状态,异常任务恢复结束;
步骤g:若重试交易仍然失败,则按照预设的重试时间间隔重复步骤e继续发起服务请求;若在预设的重试次数阈值内重试交易成功,则执行步骤f;若重试次数达到预设的重试次数阈值,则触发预警,以通知人工进行异常处理。
3.根据权利要求1或2所述的券商核心交易***容错方法,其特征在于,所述偶发性调用异常场景包括服务调用超时、交易未明、网络异常、***繁忙。
4.根据权利要求1所述的券商核心交易***容错方法,其特征在于,所述服务提供方包括银行***和交易柜台***。
5.根据权利要求4所述的券商核心交易***容错方法,其特征在于,所述银行***发生故障宕机场景时采用的熔断机制,包括以下步骤:
采集银行***的心跳检测接口数据;
每间隔一分钟调用所述接口数据并进行识别,若识别到连续5次交易失败,则将券商核心交易***与所述银行***的切换为open熔断状态;
若识别到连续5次交易成功则将券商核心交易***与所述银行***的服务通道恢复至close关闭状态。
6.根据权利要求4所述的券商核心交易***容错方法,其特征在于,所述交易柜台***发生故障宕机场景时采用的熔断机制,包括以下步骤:
每分钟识一次券商核心交易***对所述交易柜台***发起的服务请求成功率;
若当前次识别到的成功率高于预设的上阈值,则将券商核心交易***与所述交易柜台***的服务通道保持close关闭状态;
若当前次识别到的成功率低于预设的下阈值,则将券商核心交易***与所述交易柜台***的服务通道切换为open熔断状态,并且不调用该服务直接返回同时缓存请求;
下一次识别成功率时,将券商核心交易***与所述交易柜台***的服务通道切换为half–open半熔断状态,并间隔发起尝试探测交易请求;
当探测交易请求的成功率高于预设的上阈值时,将券商核心交易***与所述交易柜台***的服务通道恢复至close关闭状态;否则,继续转入open熔断状态,继续等待下个间隔尝试时间重新发起尝试探测交易请求。
7.根据权利要求6所述的券商核心交易***容错方法,其特征在于,所述成功率预设的下阈值为50%,预设的上阈值为80%。
8.一种券商核心交易***容错装置,其特征在于,所述装置包括:
获取模块,用于获取所述券商核心交易***调用各服务提供方的服务请求,并通过雪花算法给每个服务请求生成各自唯一的幂等流水号;
识别模块,用于识别各服务提供方在执行各所述服务请求时的状态;
失败自动重试模块,用于若发生偶发性调用异常场景,则根据异常服务请求的幂等流水号,执行失败自动重试机制对其相应的服务提供方重新发起该服务请求;
熔断模块,用于若发生故障宕机场景,则采用熔断机制自动切换与其对应的服务提供方的连接状态,以保持所述券商核心交易***的可用性;
其中,不同的服务提供方发生大面积请求失败时采用不同的熔断机制。
9.一种券商核心交易***容错装置,其特征在于,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据权利要求1至7任一项所述的券商核心交易***容错方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1至7任一项所述的券商核心交易***容错方法的步骤。
CN202310425579.5A 2023-04-20 2023-04-20 一种券商核心交易***容错方法、装置及存储介质 Pending CN116431375A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310425579.5A CN116431375A (zh) 2023-04-20 2023-04-20 一种券商核心交易***容错方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310425579.5A CN116431375A (zh) 2023-04-20 2023-04-20 一种券商核心交易***容错方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116431375A true CN116431375A (zh) 2023-07-14

Family

ID=87094134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310425579.5A Pending CN116431375A (zh) 2023-04-20 2023-04-20 一种券商核心交易***容错方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116431375A (zh)

Similar Documents

Publication Publication Date Title
US10261853B1 (en) Dynamic replication error retry and recovery
CN109901949B (zh) 双活数据中心的应用灾备***及方法
US6266785B1 (en) File system filter driver apparatus and method
US6857082B1 (en) Method for providing a transition from one server to another server clustered together
CN104778102A (zh) 一种主备切换方法及***
CN110807064A (zh) Rac分布式数据库集群***中的数据恢复装置
US20210320977A1 (en) Method and apparatus for implementing data consistency, server, and terminal
CA2229494A1 (en) Method and apparatus for handling processing errors in telecommunications exchanges
US11544245B2 (en) Transaction processing method, apparatus, and device and computer storage medium
JP2006012004A (ja) ホットスタンバイシステム
CN111090658B (zh) 异常事务处理方法、***及其设备
CN110297822A (zh) 面向区块链的密钥管理方法、装置、设备及存储介质
CN113905129A (zh) 一种骚扰电话的拦截方法和装置
US20120226945A1 (en) Providing automatic retry of transactions with diagnostics
CN116431375A (zh) 一种券商核心交易***容错方法、装置及存储介质
CN111461643A (zh) 资方路由方法及***
CN116466894A (zh) 数据迁移方法、装置、存储介质及电子设备
CN115629920A (zh) 数据请求的异常处理方法及其装置、计算机可读存储介质
CN114153858B (zh) 一种MySQL表空间下租户自动更新的方法及装置
CN114895879A (zh) 管理***设计方案确定方法、装置、设备及存储介质
CN114493860A (zh) 报盘集群管理方法、交易***和存储介质
JP2018537778A (ja) ローカル取引認可のためのネットワークブリッジ
CN109408123B (zh) 一种配置文件重新加载的方法及装置
CN113360568A (zh) 一种联盟链数据屏蔽方法、***及计算机可读存储介质
CN105574020B (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