CN113515352B - 分布式事务异库模式反交易调用方法及装置 - Google Patents

分布式事务异库模式反交易调用方法及装置 Download PDF

Info

Publication number
CN113515352B
CN113515352B CN202110540794.0A CN202110540794A CN113515352B CN 113515352 B CN113515352 B CN 113515352B CN 202110540794 A CN202110540794 A CN 202110540794A CN 113515352 B CN113515352 B CN 113515352B
Authority
CN
China
Prior art keywords
transaction
information
sub
main
gray scale
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
Application number
CN202110540794.0A
Other languages
English (en)
Other versions
CN113515352A (zh
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110540794.0A priority Critical patent/CN113515352B/zh
Publication of CN113515352A publication Critical patent/CN113515352A/zh
Application granted granted Critical
Publication of CN113515352B publication Critical patent/CN113515352B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种分布式事务异库模式反交易调用方法及装置,可用于分布式技术领域,方法包括:客户端主事务侧生成主事务信息,将主事务信息登记到服务端,得到主事务ID,登记成功后发起RPC调用请求,RPC调用请求中设置灰度流量标签,根据灰度流量标签,查找对应的客户端子事务侧灰度提供方;客户端子事务侧根据RPC调用请求,获取子事务信息和灰度流量标签的属性信息,根据主事务ID,将子事务信息登记到服务端,得到子事务ID;调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求。本发明可以简化操作复杂度,实现全链路灰度。

Description

分布式事务异库模式反交易调用方法及装置
技术领域
本发明涉及分布式技术领域,尤其涉及分布式事务异库模式反交易调用方法及装置。
背景技术
在分布式事务中,saga模型由于性能业务流程不锁数据库资源,按交易流程顺序运行和高性能的特点在银行金融机构中得到广泛应用。该模型基于冲正补偿,一个事务有多个参与者,每个参与者有正向操作(T)和反向补偿操作(C),业务流程中执行各参与者正向操作(T),当出现失败时则补偿前面一致性参与者的逆向操作(C)。其中在每个正向操作(T)前,需要远端的事务管理器登记事务信息,正向操作(T)执行结束发送更新事务状态的请求到远端事务管理器进行该事务状态的更新,如果失败或出现异常则由远端的事务管理器发起反交易方法的调用(C)。
为了支持事务应用的灰度版本试点功能,提供版本发布的可靠性,事务框架需要支持全链路灰度。当前,异库模式支持灰度的方式主要是应用增加集群,令灰度服务单独部署一个集群,而扩增集群会给应用带来额外的服务管理负担,增加操作复杂度,同时也只能实现单个节点的灰度无法实现全链路上的灰度。
因此,亟需一种可以克服上述问题的分布式事务异库模式反交易调用方案。
发明内容
本发明实施例提供一种分布式事务异库模式反交易调用方法,用以简化操作复杂度,实现全链路灰度,该方法包括:
客户端主事务侧生成主事务信息;
客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;
登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;
客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;
客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;
客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;
调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
本发明实施例提供一种分布式事务异库模式反交易调用装置,用以简化操作复杂度,实现全链路灰度,该装置包括:
信息生成模块,用于客户端主事务侧生成主事务信息;
第一信息登记模块,用于客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;
调用请求发起模块,用于登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;
提供方查找模块,用于客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;
信息获取模块,用于客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;
第二信息登记模块,用于客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;
更新请求发起模块,用于调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述分布式事务异库模式反交易调用方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述分布式事务异库模式反交易调用方法的计算机程序。
本发明实施例通过客户端主事务侧生成主事务信息;客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。本发明实施例在客户端子事务侧抛出异常时向服务端发起信息更新请求,服务端进行主事务信息和子事务信息更新后,根据主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,不需要应用为版本试点增加服务集群,减少服务的管理等复杂操作,从而有效简化操作复杂度,实现全链路灰度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中分布式事务异库模式反交易调用方法示意图;
图2-图3为本发明具体实施例中分布式事务异库模式反交易调用流程示意图;
图4为本发明实施例中分布式事务异库模式反交易调用装置结构图;
图5是本发明实施例的计算机设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
如前所述,为了支持事务应用的灰度版本试点功能,提供版本发布的可靠性,事务框架需要支持全链路灰度。当前,异库模式支持灰度的方式主要是应用增加集群,令灰度服务单独部署一个集群,而扩增集群会给应用带来额外的服务管理负担,增加操作复杂度,同时也只能实现单个节点的灰度无法实现全链路上的灰度。因此异库模式saga需要支持全链路灰度发布,以支持应用不同版本的升级改造,在回调反向补偿方法(C)时能匹配到正确的提供方。
为了简化操作复杂度,实现全链路灰度,本发明实施例提供一种分布式事务异库模式反交易调用方法,如图1所示,该方法可以包括:
步骤101、客户端主事务侧生成主事务信息;
步骤102、客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;
步骤103、登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;
步骤104、客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;
步骤105、客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;
步骤106、客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;
步骤107、调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
由图1所示可以得知,本发明实施例通过客户端主事务侧生成主事务信息;客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。本发明实施例在客户端子事务侧抛出异常时向服务端发起信息更新请求,服务端进行主事务信息和子事务信息更新后,根据主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,不需要应用为版本试点增加服务集群,减少服务的管理等复杂操作,从而有效简化操作复杂度,实现全链路灰度。
发明人发现,为了saga模式下尽量减小应用灰度版本部署的复杂度,实现事务链路中灰度节点的灵活部署,需要saga模式具有支持全链路灰度支持能力。在saga模式下,需要在子事务正交易逻辑执行前判断RPC调用请求是否带有灰度标签并记录到远程事务管理器的数据库,在事务异常时,事务管理器回调应用的反向补偿服务方法前先查询该笔事务是否有灰度标签,如果有则在回调反向补偿服务前为请求打上灰度标签,使得通过服务框架的匹配查找则能够找正确的补偿服务回调入口。
实施例中,客户端主事务侧生成主事务信息,客户端主事务侧将主事务信息登记到服务端,得到主事务ID,登记成功后客户端主事务侧发起RPC调用请求,RPC调用请求中设置灰度流量标签,客户端主事务侧根据灰度流量标签,查找对应的客户端子事务侧灰度提供方,客户端子事务侧根据RPC调用请求,获取子事务信息和灰度流量标签的属性信息,客户端子事务侧根据主事务ID,将子事务信息登记到服务端,得到子事务ID。
本实施例中,根据所述灰度流量标签,查找所述主事务对应的子事务的灰度提供方,包括:
将所述灰度流量标签与多个提供方预先设置的灰度标志进行匹配;
根据匹配的结果,确定所述主事务对应的子事务的灰度提供方。
实施例中,调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
本实施例中,所述信息更新请求用于服务端进行主事务信息和子事务信息更新,包括:
所述信息更新请求用于服务端将所述主事务信息更新为补偿状态,将子事务信息更新为调用失败状态。
本实施例中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,包括:
在客户端子事务侧向主事务侧抛出异常时,主事务侧向服务端发起信息更新请求。
本实施例中,分布式事务异库模式反交易调用方法,还包括:将所述主事务状态信息,灰度标签属性和对应的子事务状态信息登记到事务日志存储数据库。
图2为分布式事务异库模式反交易调用的***示意图,包括本地事务管理器(Local TransactionManager,LTM),远端事务管理器(Remote TransactionManager,RTM),灰度处理器(Gray Processor),事务日志存储数据库(DB)。一个事务有多个事务参与者,其中事务发起方作为主事务,事务参与者作为子事务,每个子事务都有有正向方法(T)和反向补偿方法的生命(C),正向操作(T)由主事务发起调用,逆向补偿操作(C)由服务端在事务需要回滚时发起调用。其中,本地事务管理器(Local TransactionManager,LTM):创建及更新事务并发送RPC调用请求将事务信息登记及更新到saga的远端事务管理器(RemoteTransactionManager,RTM),管理本地事务上下文的传递和恢复。远程事务管理器(RemoteTransactionManager,RTM):负责处理LTM发送来的RPC调用请求,将事务信息登记或更新到服务端数据库。对于失败的需要补偿的事务根据主事务ID查询数据库中的子事务列表,根据查询到的子事务中的服务群组,补偿方法信息等回调应用的补偿服务。事务日志存储数据库(DB):RTM存储事务信息的数据库,存储主事务信息和子事务信息。灰度处理器(GrayProcessor):在每次RPC调用时检查该条调用链路上是否存在本次调用设置的或上层调用传递下来需要往下透传灰度标签信息,如果存在则在RPC调用前给该请求流量打上灰度标签使之在调用链路上往下透传。同时该模块负责全链路灰度服务发布时给灰度服务打灰度标志和服务订阅时根据RPC调用请求中包含的标签匹配查找到灰度服务。简而言之,就是负责灰度标签在调用链路上的透传、服务发布的灰度标志设置、服务订阅时的服务匹配寻找。
下面给出一个具体实施例,说明本发明实施例中分布式事务异库模式反交易调用方案。如图3所示,事务发起方S调用事务参与者A的灰度服务和事务参与者B的服务。事务A有正常提供者和灰度提供者,并且属于相同服务群组。事务A的服务内定义了正交易方法(T)和反向补偿方法(C)。正交易服务方法由事务发起者调用,而反向补偿方法(C)由事务框架根据主事务的执行状态判断发起,LTM上报更新主事务的状态为失败后RTM查询数据库中该主事务下面所有的子事务,发起子事务的反向补偿方法(C)的调用。如果调用每个子事务的反向补偿方法时都需要订阅其所属服务,对RTM来说则需要订阅成千上万的服务,服务订阅管理比较复杂。所以为了方便管理,规定每个服务群组基于服务群组名按照既定规则注册一个回调服务,RTM在回调子事务A的补偿方法时则根据数据库查询到的事务A的服务群组名根据相同规则生成服务服务名并订阅前述的回调服务,并且在回调该服务时传回补偿方法名。而回调服务是一个服务群组寻找真正补偿方法的入口,进入到入口后,通过RTM回调时传回的补偿方法名查找到服务启动阶段时存储在内存中的相应的补偿方法的参数等信息,并利用反射调用到真正的补偿方法C。如果事务A同时注册了正常服务和灰度服务,因为正常服务和灰度服务共用一个服务群组,注册的回调服务名也是相同的,但是全链路灰度场景下灰度服务会带有灰度节点标志,所以RTM可以根据事务A存储的灰度标签在回调时给流量打上标签,匹配到正确的灰度服务提供方。
具体的,调用链路上每个节点都有一个Gray Processor,通过该组件为RPC调用请求过滤匹配到灰度提供方。假设这样一个调用场景,事务参与者S调用事务参与者A的灰度服务和调用B的正常服务。
1、事务发起方S在事务开始时,首先由发起方S的LTM生成主事务,并通过RPC调用RTM提供的登记事务信息服务,将主事务信息登记到服务端的事务数据库,将主事务登记为CREATE状态。然后依次调用下面的灰度子事务A和子事务B。
2、S首先调用子事务A的灰度服务(服务提供方侧有通过Gray Processor设置服务的灰度标志),在调用A前,S的LTM首先会调用它的Gray Processor为调用A的RPC调用请求打灰度流量标签,底层为调用A的RPC请求匹配寻找A的灰度提供方时依据该RPC请求的流量标签和提供方的灰度标志匹配查找服务,并调用到A的灰度提供方。
3、在步骤2匹配查找A的灰度提供方后,事务链路上流转到A节点。首先由A的LTM创建生成子事务A,同时调用Gray Processor解析上层链路发来的RPC调用请求中包含的灰度标签,设置为事务A的灰度标签属性,与子事务A的其他信息一并登记持久化记录到服务端数据库。登记成功则LTM发起事务A应用业务方法的调用,如果在调用A的业务方法抛出异常或业务逻辑本身检查到异常主动利用提供的工具类置失败,则子事务A抛出异常,并抛出给主事务层,并异步发起RPC调用,调用RTM提供的服务接口更新子事务信息为START_FAILED。
4、主事务层的LTM接收到步骤3中事务A抛出的异常,同步通过RPC调用RTM提供的更新主事务状态接口,更新主事务状态为COMPENSATE状态,并抛出异常到事务S中并终止事务流程进行,并不会执行到子事务B。RTM收到主事务S的失败更新请求后,更新数据库中事务状态并发起整个事务的回滚。
5、事务S的回滚过程如下:RTM根据事务ID查询到事务S下的子事务获取一个子事务列表,发现下面有一个子事务A需要补偿。根据子事务A的灰度标签属性信息判断其是灰度服务,在RPC回调A提供的补偿回调接口时,RTM会调用Gray Processor为该RPC请求打灰度流量标签。同时远程服务端的底层在服务匹配查找时也是利用Gray Processor匹配查找灰度提供方注册的回调接口,找到正确的回调入口后就能在内存内找到补偿方法其它信息并发起补偿方法的调用。
上述过程只描述了调用灰度服务A失败时的情况,假设灰度服务A调用成功,事务发起方S则在调用完A后顺序调用B,B事务调用失败RTM在回滚事务时子事务列表则会查到两个子事务,并逆序依次发起子事务的回滚,回滚过程也类似上述所示。每一次RPC调用请求时,底层在寻找提供方时,Gray Processor都会负责过滤匹配查找服务,如果RPC调用请求打了灰度标签,在匹配查找到相应灰度标志的提供方时如果没有找到灰度提供方则会发生服务降级,调用到没有标签的服务。所以在上述子事务A的LTM在RPC调用RTM服务时虽然流量中有标签,但是因为存在服务降级处理,会调用到没有灰度标志的RTM提供的服务。并且因为每一次RPC调用Gray Processor都会将上层链路传递下来的灰度标签以及本层设置的标签透传下去,所以能够实现事务链路上的全链路灰度功能。
本发明实施例为了解决基于saga模式的事务框架中分布式事务应用服务的灰度版本发布问题,提供了一种基于全链路灰度场景下异库模式反交易调用方案。事务框架通过解析服务提供方侧接收到的RPC调用请求中的灰度标签并存储到服务端数据库,在补偿回调时取出存储的灰度标签信息,如果存在标签信息,在发起补偿回调服务的RPC调用前利用Gray Processor重新为该RPC请求打上灰度标签,使回调请求能匹配找到正确的回调入口。本发明实施例不需要应用为版本试点增加服务集群,减少服务的管理等复杂操作,事务调用链路上一个节点的灰度版本发布不会影响事务其它节点,不用因为一个节点的服务群增加给其它事务节点带来额外适配操作负担,支持事务中灰度流量的灵活地控制,可以让事务应用更灵活地控制链路上流量的灰度染色。
基于同一发明构思,本发明实施例还提供了一种分布式事务异库模式反交易调用装置,如下面的实施例所述。由于这些解决问题的原理与分布式事务异库模式反交易调用方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
图4为本发明实施例中分布式事务异库模式反交易调用装置的结构图,如图4所示,该装置包括:
信息生成模块401,用于客户端主事务侧生成主事务信息;
第一信息登记模块402,用于客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;
调用请求发起模块403,用于登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;
提供方查找模块404,用于客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;
信息获取模块405,用于客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;
第二信息登记模块406,用于客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;
更新请求发起模块407,用于调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
一个实施例中,所述提供方查找模块404进一步用于:
将所述灰度流量标签与多个提供方预先设置的灰度标志进行匹配;
根据匹配的结果,确定所述主事务对应的子事务的灰度提供方。
一个实施例中,所述信息更新请求用于服务端进行主事务信息和子事务信息更新,包括:
所述信息更新请求用于服务端将所述主事务信息更新为补偿状态,将子事务信息更新为调用失败状态。
一个实施例中,所述更新请求发起模块407进一步用于:
在客户端子事务侧向主事务侧抛出异常时,主事务侧向服务端发起信息更新请求。
综上所述,本发明实施例通过客户端主事务侧生成主事务信息;客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。本发明实施例在客户端子事务侧抛出异常时向服务端发起信息更新请求,服务端进行主事务信息和子事务信息更新后,根据主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,不需要应用为版本试点增加服务集群,减少服务的管理等复杂操作,从而有效简化操作复杂度,实现全链路灰度。
基于前述发明构思,如图5所示,本发明还提出了一种计算机设备500,包括存储器510、处理器520及存储在存储器510上并可在处理器520上运行的计算机程序530,所述处理器520执行所述计算机程序530时实现前述油气钻井岩屑返出量确定方法。
基于前述发明构思,本发明提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述油气钻井岩屑返出量确定方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种分布式事务异库模式反交易调用方法,其特征在于,包括:
客户端主事务侧生成主事务信息;
客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;
登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;
客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;
客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;
客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;
调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
2.如权利要求1所述的分布式事务异库模式反交易调用方法,其特征在于,根据所述灰度流量标签,查找所述主事务对应的子事务的灰度提供方,包括:
将所述灰度流量标签与多个提供方预先设置的灰度标志进行匹配;
根据匹配的结果,确定所述主事务对应的子事务的灰度提供方。
3.如权利要求1所述的分布式事务异库模式反交易调用方法,其特征在于,所述信息更新请求用于服务端进行主事务信息和子事务信息更新,包括:
所述信息更新请求用于服务端将所述主事务信息更新为补偿状态,将子事务信息更新为调用失败状态。
4.如权利要求1所述的分布式事务异库模式反交易调用方法,其特征在于,在客户端子事务侧抛出异常时向服务端发起信息更新请求,包括:
在客户端子事务侧向主事务侧抛出异常时,主事务侧向服务端发起信息更新请求。
5.一种分布式事务异库模式反交易调用装置,其特征在于,包括:
信息生成模块,用于客户端主事务侧生成主事务信息;
第一信息登记模块,用于客户端主事务侧将所述主事务信息登记到服务端,得到主事务ID;
调用请求发起模块,用于登记成功后客户端主事务侧发起RPC调用请求,所述RPC调用请求中设置灰度流量标签;
提供方查找模块,用于客户端主事务侧根据所述灰度流量标签,查找对应的客户端子事务侧灰度提供方;
信息获取模块,用于客户端子事务侧根据所述RPC调用请求,获取子事务信息和灰度流量标签的属性信息;
第二信息登记模块,用于客户端子事务侧根据所述主事务ID,将子事务信息登记到服务端,得到子事务ID;
更新请求发起模块,用于调用子事务业务方法过程中,在客户端子事务侧抛出异常时向服务端发起信息更新请求,所述信息更新请求用于服务端进行主事务信息和子事务信息更新后,根据所述主事务ID查询主事务下的所有子事务,根据灰度流量标签的属性信息查找灰度提供方注册的回调接口,并根据所述回调接口进行分布式事务异库模式反交易调用。
6.如权利要求5所述的分布式事务异库模式反交易调用装置,其特征在于,所述提供方查找模块进一步用于:
将所述灰度流量标签与多个提供方预先设置的灰度标志进行匹配;
根据匹配的结果,确定所述主事务对应的子事务的灰度提供方。
7.如权利要求5所述的分布式事务异库模式反交易调用装置,其特征在于,所述信息更新请求用于服务端进行主事务信息和子事务信息更新,包括:
所述信息更新请求用于服务端将所述主事务信息更新为补偿状态,将子事务信息更新为调用失败状态。
8.如权利要求5所述的分布式事务异库模式反交易调用装置,其特征在于,所述更新请求发起模块进一步用于:
在客户端子事务侧向主事务侧抛出异常时,主事务侧向服务端发起信息更新请求。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至4任一所述方法。
CN202110540794.0A 2021-05-18 2021-05-18 分布式事务异库模式反交易调用方法及装置 Active CN113515352B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110540794.0A CN113515352B (zh) 2021-05-18 2021-05-18 分布式事务异库模式反交易调用方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110540794.0A CN113515352B (zh) 2021-05-18 2021-05-18 分布式事务异库模式反交易调用方法及装置

Publications (2)

Publication Number Publication Date
CN113515352A CN113515352A (zh) 2021-10-19
CN113515352B true CN113515352B (zh) 2024-01-26

Family

ID=78064667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110540794.0A Active CN113515352B (zh) 2021-05-18 2021-05-18 分布式事务异库模式反交易调用方法及装置

Country Status (1)

Country Link
CN (1) CN113515352B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422398B (zh) * 2021-12-28 2024-05-14 中国电信股份有限公司 一种事务节点异常识别***、方法及装置
CN115208869A (zh) * 2022-07-20 2022-10-18 康键信息技术(深圳)有限公司 一种灰度发布的处理方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613106A (en) * 1989-09-15 1997-03-18 Motorola, Inc. Method for processing and storing a transaction in a distributed database system
CN107045454A (zh) * 2016-02-06 2017-08-15 华为技术有限公司 跨进程分布式事务控制方法及相关***
CN111666132A (zh) * 2020-05-28 2020-09-15 中国平安财产保险股份有限公司 分布式事务实现方法、装置、计算机***及可读存储介质
CN112395104A (zh) * 2020-11-16 2021-02-23 中国工商银行股份有限公司 一种分布式事务上下文在路由层传递的实现方法与装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613106A (en) * 1989-09-15 1997-03-18 Motorola, Inc. Method for processing and storing a transaction in a distributed database system
CN107045454A (zh) * 2016-02-06 2017-08-15 华为技术有限公司 跨进程分布式事务控制方法及相关***
CN111666132A (zh) * 2020-05-28 2020-09-15 中国平安财产保险股份有限公司 分布式事务实现方法、装置、计算机***及可读存储介质
CN112395104A (zh) * 2020-11-16 2021-02-23 中国工商银行股份有限公司 一种分布式事务上下文在路由层传递的实现方法与装置

Also Published As

Publication number Publication date
CN113515352A (zh) 2021-10-19

Similar Documents

Publication Publication Date Title
CN112118565B (zh) 多租户服务灰度发布方法、装置、计算机设备和存储介质
CN108076098B (zh) 一种业务处理方法及***
CN113515352B (zh) 分布式事务异库模式反交易调用方法及装置
KR20140047580A (ko) 다중-서버 예약 시스템 상의 동기화 메커니즘 시스템 및 방법
CN111522631B (zh) 分布式事务处理方法、装置、服务器及介质
CN111369350B (zh) 冲正交易处理方法及装置
CN108595505B (zh) 数据查询的方法和装置
CN110888718A (zh) 分布式事务的实现方法及装置
CN110231956B (zh) 应用程序版本构建的方法、***及装置
US10970141B2 (en) Integrating transaction processing system interfaces with event-driven polyglot runtime modules
US7454761B1 (en) Method and apparatus for correlating output of distributed processes
CN112256318B (zh) 一种用于依赖产品的构建方法及设备
CN114237994A (zh) 用于分布式***的测试方法及***、电子设备及存储介质
CN111681011B (zh) 数据处理方法、区块链***、计算机***和介质
CN114615135A (zh) 一种前端灰度发布方法、***及存储介质
CN113691635A (zh) 调用微服务的方法、装置、电子设备和可读存储介质
US20090100082A1 (en) Replication and mapping mechanism for recreating memory durations
JP2001056767A (ja) トランザクションサービス同期インターフェースを使用して、内部状態のクリーンアップを実施するための方法
CN115729946B (zh) 一种处理分布式事务的方法、装置、设备及存储介质
CN111143040A (zh) 事务处理方法、装置、***及存储介质
CN116319241A (zh) 处理事务的方法、处理事务的装置和电子设备
CN114968498A (zh) 一种分布式事务处理方法及装置
CN114579406A (zh) 一种分布式事务一致性实现方法及装置
JP2017091532A (ja) 製品ライフサイクル管理(plm)システムからソースコード管理(scm)システムへの階層的なデータのエクスポート
CN113407445B (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