CN116257329A - 业务操作方法、装置、计算机设备和存储介质 - Google Patents
业务操作方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116257329A CN116257329A CN202211653466.2A CN202211653466A CN116257329A CN 116257329 A CN116257329 A CN 116257329A CN 202211653466 A CN202211653466 A CN 202211653466A CN 116257329 A CN116257329 A CN 116257329A
- Authority
- CN
- China
- Prior art keywords
- service
- transaction
- micro
- call request
- data transaction
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种业务操作方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。采用本方法能够保证执行业务操作的各微服务间的数据一致性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种业务操作方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,基于微服务架构的业务服务得到广泛应用。在微服务架构下,业务服务通常由多个分布式的微服务构成,每个微服务部署了单独的数据库,数据库间互相不通信,在通过业务服务执行业务操作时,怎样使各微服务对应的数据库保持数据一致性成为重要的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够保持数据一致性的业务操作方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种业务操作方法。所述方法包括:
当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
第二方面,本申请还提供了一种业务操作装置。所述装置包括:
确定模块,用于当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
加入模块,用于将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
提交模块,用于若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
回滚模块,用于若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
在一个实施例中,所述装置还包括:
检测模块,用于若通过第二微服务接收到服务调用请求,检测所述服务调用请求对应的数据事务是否已创建;
创建模块,用于若所述服务调用请求对应的数据事务尚未创建,创建数据事务并确定所述数据事务对应的事务信息;
添加模块,用于将所述事务信息添加至所述服务调用请求,并将添加了所述事务信息的服务调用请求转发至所述第一微服务;
所述确定模块,还用于当通过第一微服务拦截到所述第二微服务转发的服务调用请求,从所述服务调用请求中提取事务信息。
在一个实施例中,所述装置还包括:
所述确定模块,还用于若所述服务调用请求对应的数据事务已创建,确定所述服务调用请求对应的已创建数据事务;
所述加入模块,还用于将所述第二微服务加入所述已创建数据事务对应的服务链。
在一个实施例中,所述检测模块,还用于:
若通过部署在第二微服务中的调用拦截器拦截到服务调用请求,检测所述服务调用请求是否包含已创建数据事务的事务信息;
若所述服务调用请求中不包含所述已创建数据事务的事务信息,确定所述服务调用请求对应的数据事务未创建。
在一个实施例中,所述创建模块,还用于:
若所述服务调用请求对应的数据事务尚未创建,向事务管理器发送事务创建指令,以使所述事务管理器基于所述事务创建指令创建所述数据事务并确定所述数据事务对应的事务信息。
在一个实施例中,所述提交模块,还用于:
当所述服务链上的微服务成功执行所述数据事务对应的业务操作时,向事务管理器反馈操作成功信息;
若所述事务管理器接收到所述服务链上的全部微服务反馈的操作成功信息,执行事务提交操作。
在一个实施例中,所述回滚模块,还用于:
若事务管理器捕获到所述服务链上的微服务对业务操作执行异常的信息,确定所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作;
对所述服务链上的全部所述微服务对应的数据库进行回滚操作。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
上述业务操作方法、装置、计算机设备、存储介质和计算机程序产品,当通过第一微服务拦截到服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务。将第一微服务加入执行数据事务的服务链,服务链上还包括执行数据事务的其他微服务。若服务链上的微服务均全部成功执行数据事务对应的业务操作,执行事务提交操作,从而使整个服务链上的全部微服务可以统一的执行数据事务对应的业务操作。若服务链上的微服务未全部成功执行数据事务对应的业务操作,对各微服务对应的数据库进行回滚操作,避免某个微服务因执行业务操作异常而无法与其他成功执行业务操作的微服务保持数据一致,保证了整个服务链中的数据一致性。
附图说明
图1为一个实施例中业务操作方法的应用环境图;
图2为一个实施例中业务操作方法的流程示意图;
图3为一个实施例中第一微服务的示意图;
图4为一个实施例中服务链的示意图;
图5为一个实施例中服务调用请求转发方法的流程示意图;
图6为一个实施例中执行事务提交操作方法的流程示意图;
图7为一个实施例中分布式微服务系统的示意图;
图8为一个实施例中业务操作方法的时序图;
图9为另一个实施例中业务操作方法的时序图;
图10为一个实施例中业务操作方法的流程示意图;
图11为一个实施例中业务操作装置的结构框图;
图12为一个实施例中业务操作装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的业务操作方法,可以应用于如图1所示的应用环境中。其中,终端104通过网络与服务器102进行通信,向服务器102发送数据调用请求。服务器102当通过第一微服务拦截到服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务;将第一微服务加入执行数据事务的服务链;服务链上还包括执行数据事务的其他微服务;若服务链上的微服务均全部成功执行数据事务对应的业务操作,执行事务提交操作;若服务链上的微服务未全部成功执行数据事务对应的业务操作,对各微服务对应的数据库进行回滚操作。
其中,服务器102可以是独立的物理服务器,也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。此外,服务器102还可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端104可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。
在一个实施例中,如图2所示,提供了一种业务操作方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
S202,当通过第一微服务拦截到服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务。
其中,微服务是运行在独立进程中的微小服务。例如,微服务可以是基于REST(Representational State Transfer,表述性状态传递风格)架构的分布式微服务。REST是基于Web(World Wide Web,全球广域网)标准的软件架构,基于该架构部署的各微服务通过HTTP(Hyper Text Transfer Protocol,超文本传输)协议进行通信。多个独立部署的微服务可以构成一个完整的对外业务服务。业务服务可以是通过各种业务系统对外提供的服务。业务系统例如可以是订购系统、交易系统、银行系统、ERP(Enterprise ResourcePlanning,企业资源计划系统)、OA(Office Automation,办公自动化系统)或者仓储管理等系统。第一微服务是用于构成业务服务的任意微服务。所构成的业务服务例如可以是订购系统提供的机票订购服务、交易系统提供的股票交易服务或者仓储管理系统提供的库存查询服务等。
服务调用请求是用于调用服务的请求,可以是基于REST协议的调用请求(REST调用)。服务器通过部署的多个微服务对服务调用请求进行响应,对外提供业务服务。事务信息是数据事务相关的信息,包括事务标识、时间、用户标识等。数据事务是由多个数据库上的数据库事务组成的全局事务。数据库事务是由访问并操作各种数据项的数据库操作序列组成的事务。数据库操作例如可以是数据删除操作、数据插入操作、数据更新操作或者数据查询操作等。
在一个实施例中,S202具体包括:当通过第一微服务中部署的调用拦截器,拦截到其他微服务转发的服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务。其中,调用拦截器是部署在第一微服务中的组件,用于拦截并转发第一微服务接收的服务调用请求。例如,如图3所示,第一微服务中的调用拦截器拦截其他微服务或者客户端发送的服务调用请求,并可以将服务调用请求转发至其他微服务。此外,调用拦截器也可以与事务管理器进行通信,使事务管理器对第一微服务进行管理。
S204,将第一微服务加入执行数据事务的服务链;服务链上还包括执行数据事务的其他微服务。
其中,服务链是由执行数据事务的微服务组成的。如图4所示,服务链上包括微服务A、微服务B和微服务C。服务链上的各微服务均被调用执行全局的数据事务。
在一个实施例中,服务器通过部署的事务管理器对REST架构中的各微服务进行统一的管理。事务管理器用于协调多个微服务执行统一的业务操作,使各微服务在执行业务操作时保持一致,从而保证了各微服务间的数据一致性。
S206,若服务链上的微服务均全部成功执行数据事务对应的业务操作,执行事务提交操作。
其中,业务操作是完成业务服务过程中执行的数据操作。例如,当业务服务是机票订购服务时,业务操作可以包括座位分配操作、账户余额查询操作以及扣款操作等。微服务在执行业务操作时,对该微服务对应的数据库进行数据库操作。事务提交操作是通过数据库提交业务操作的结果。例如,数据库可以通过commit()接口函数完成事务提交操作。数据库在执行事务提交操作时,将业务操作的结果写入硬盘,并释放业务操作过程中锁定的数据库资源。
若服务链上的微服务均全部成功执行数据事务对应的业务操作,则各微服务对应的数据库可以保持数据一致性,服务器通过各微服务对应的数据库执行事务提交操作。
在一个实施例中,若服务链上的微服务成功执行了数据事务对应的业务操作,在接收到事务结束的指令时,部署在微服务中的资源管理器向对应的数据库发送提交准备指令(例如,prepare()指令)。当资源管理器接收到数据库响应于提交准备指令的正确应答时,资源管理器向数据库发送提交指令(例如,commit()指令),以使数据库根据提交指令进行事务提交操作。
S208,若服务链上的微服务未全部成功执行数据事务对应的业务操作,对各微服务对应的数据库进行回滚操作。
若服务链上的微服务未全部成功执行数据事务对应的业务操作,则各微服务对应的数据库不能保持数据一致性,为避免各微服务对应的数据库间数据不一致,使各微服务对应的数据库进行回滚操作,以回滚到未执行业务操作前的状态,保持数据一致性。
在一个实施例中,S208具体包括:若事务管理器捕获到服务链上的微服务对业务操作执行异常的信息,确定服务链上的微服务未全部成功执行数据事务对应的业务操作;对服务链上的全部微服务对应的数据库进行回滚操作。
其中,业务操作执行异常可能是业务方面的异常,也可能是数据库方面的异常。例如,当微服务执行从账户中扣费的业务操作时,如果账户中余额不足,则发生业务方面的业务操作执行异常。例如,当微服务执行业务操作时写数据库失败,则发生数据库方面的业务操作执行异常。
在一个实施例中,如果微服务对业务操作执行异常,则微服务中部署的资源管理器不会向数据库发送提交准备指令(prepare()指令)。当微服务接收到事务结束的指令时,微服务中部署的资源管理器向数据库发送回滚指令(例如,rollback()指令),以使数据库根据回滚指令进行回滚操作。
现有的分布式REST调用,在调用服务执行业务操作的过程中并不考虑数据一致性,若在数据库执行事务提交操作之后捕获到服务调用过程发生异常,则将异常相关的业务操作和数据记录到单独的数据库里,然后等待人工介入处理,通过人工对账以及与客户沟通然后人工订正数据等方法实现各微服务的数据一致。人工对账及订正数据的过程需要花费很长时间,效率较低。本申请利用数据库的2阶段执行能力,在数据库执行事务提交操作之前即对各微服务是否能够成功执行业务操作进行确认,从全局层面保证了各微服务的数据一致性,避免了在事务提交操作之后再进行人工对账和订正,提高了业务操作的效率。
上述实施例中,当通过第一微服务拦截到服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务。将第一微服务加入执行数据事务的服务链,服务链上还包括执行数据事务的其他微服务。若服务链上的微服务均全部成功执行数据事务对应的业务操作,执行事务提交操作,从而使整个服务链上的全部微服务可以统一的执行数据事务对应的业务操作。若服务链上的微服务未全部成功执行数据事务对应的业务操作,对各微服务对应的数据库进行回滚操作,避免某个微服务因执行业务操作异常而无法与其他成功执行业务操作的微服务保持数据一致,保证了整个服务链中的数据一致性。
在一个实施例中,如图5所示,S202之前还包括S502-S506,S202具体包括S508:
S502,若通过第二微服务接收到服务调用请求,检测服务调用请求对应的数据事务是否已创建。
其中,第二微服务是作为服务调用入口的微服务。第二微服务在接收到客户端发送的服务调用请求时,检测服务调用请求对应的数据事务是否已创建。
在一个实施例中,S502具体包括:若通过部署在第二微服务中的调用拦截器拦截到服务调用请求,检测服务调用请求是否包含已创建数据事务的事务信息;若服务调用请求中不包含已创建数据事务的事务信息,确定服务调用请求对应的数据事务未创建。
第二微服务通过调用拦截器对进入第二微服务的服务调用请求进行拦截,在拦截到服务调用请求时,检测服务调用请求是否包含已创建数据事务的事务信息。例如,检测服务调用请求中是否包含已创建数据事务的事务标识、用户标识等。如果服务调用请求中包含已创建数据事务的事务标识,说明服务调用请求对应的数据事务已创建;如果服务调用请求中不包含已创建数据事务的事务标识,说明服务调用请求对应的数据事务尚未创建。
服务器通过调用拦截器对进入第二微服务的服务调用请求进行拦截,从而可以检测服务调用请求对应的数据事务是否已创建,从而可以避免重复创建数据事务,保证了数据事务的全局性,继而使各微服务可以在全局的数据事务中执行一致的业务操作,保证了各微服务间的数据一致性。
S504,若服务调用请求对应的数据事务尚未创建,创建数据事务并确定数据事务对应的事务信息。
若服务调用请求对应的数据事务尚未创建,则服务器需要创建新的数据事务,并确定所创建的数据事务对应的事务信息。
在一个实施例中,S504具体包括:若服务调用请求对应的数据事务尚未创建,向事务管理器发送事务创建指令,以使事务管理器基于事务创建指令创建数据事务并确定数据事务对应的事务信息。
若服务调用请求对应的数据事务尚未创建,第二微服务中部署的调用拦截器向事务管理器发送事务创建指令以通知事务管理器创建新的数据事务,事务管理器创建全局的数据事务。
服务器通过事务管理器对业务服务对应的数据事务进行管理,包括创建或者结束数据事务,使微服务加入执行数据事务的服务链等。从而可以通过事务管理器与各微服务进行通信,在全局层面对各微服务执行的数据事务进行协调,保证在各微服务均能成功执行数据事务对应的业务操作时,才使数据库提交业务操作的结果,保证了各微服务间的数据一致性。
S506,将事务信息添加至服务调用请求,并将添加了事务信息的服务调用请求转发至第一微服务。
第二微服务将事务信息添加至服务调用请求,并将添加了事务信息的服务调用请求转发至被调用的第一微服务。从而使第一微服务在接收到添加了事务信息的服务调用请求时,可以根据该服务调用请求中携带的事务信息确定应该加入的数据事务。
S508,当通过第一微服务拦截到第二微服务转发的服务调用请求,从服务调用请求中提取事务信息。
在一个实施例中,S508具体包括:第一微服务中部署的调用拦截器对进入第一微服务的服务调用请求进行拦截,并从服务调用请求中提取事务信息。
在一个实施例中,S508之后还包括:第一微服务中部署的调用拦截器向事务管理器发送事务加入指令,使事务管理器响应于事务加入指令,将第一微服务加入事务信息对应的数据事务,也即基于事务信息将第一微服务加入执行数据事务的服务链。
上述实施例中,若通过第二微服务接收到服务调用请求,检测服务调用请求对应的数据事务是否已创建。若服务调用请求对应的数据事务尚未创建,创建数据事务并确定数据事务对应的事务信息。将事务信息添加至服务调用请求,并转发至第一微服务。使被调用的第一微服务可以根据事务信息加入服务链,并对服务链上的微服务进行统一的管理,从而保证了被调用的多个微服务可以保持数据一致性。
在一个实施例中,S504之后还包括:若服务调用请求对应的数据事务已创建,确定服务调用请求对应的已创建数据事务;将第二微服务加入已创建数据事务对应的服务链。
若服务调用请求对应的数据事务已创建,则说明执行已创建数据事务的服务链包含第二微服务,第二微服务也需要执行该已创建数据事务,将第二微服务加入已创建数据事务对应的服务链,从而可以对服务链中的微服务进行统一管理,保证了第二微服务可以和服务链中的其他微服务保持数据一致性。
在一个实施例中,如图6所示,S206具体包括如下步骤:
S602,当服务链上的微服务成功执行数据事务对应的业务操作时,向事务管理器反馈操作成功信息。
在一个实施例中,当服务链上的微服务成功执行数据事务对应的业务操作时,若部署在微服务中的资源管理器接收到事务管理器发送的事务结束指令,资源管理器向微服务对应的数据库发送提交准备指令,在接收到数据库响应于提交准备指令反馈的应答时,微服务中部署的资源管理器向事务管理器反馈操作成功信息。
S604,若事务管理器接收到服务链上的全部微服务反馈的操作成功信息,执行事务提交操作。
事务管理器可以从全局层面对服务链上的全部微服务进行统一的管理,若事务管理器接收到服务链上的全部微服务反馈的操作成功信息,则确定服务链上的各微服务在执行事务提交操作后可以保证数据一致性,因此执行事务提交操作。
在一个实施例中,S604具体包括:若事务管理器接收到服务链上的全部微服务反馈的操作成功信息,事务管理器向部署在各第一微服务中的资源管理器发送事务提交指令。资源管理器在接收到事务提交指令时,向第一微服务对应的数据库发送事务提交指令,数据库根据事务提交指令执行事务提交操作。
上述实施例中,当服务链上的微服务成功执行数据事务对应的业务操作时,向事务管理器反馈操作成功信息。若事务管理器接收到服务链上的全部微服务反馈的操作成功信息,执行事务提交操作。从而可以是事务管理器对服务链上的全部微服务进行统一的管理,确保执行数据事务的各微服务能够保持数据一致性。
在一个实施例中,如图7所示,微服务A、微服务B和微服务C是REST架构中的分布式微服务。微服务A中部署了调用拦截器,微服务B和微服务C中部署了调用拦截器和资源管理器。事务管理器用于对系统中的全局事务进行管理。事务管理器与部署在各微服务中的调用拦截器与资源管理器进行通信。微服务B与数据库B相连接,微服务C与数据库C相连接。当微服务A中部署的调用拦截器接收到服务调用请求时,检测所述服务调用请求对应的数据事务是否已创建。若所述服务调用请求对应的数据事务尚未创建,通知事务管理器创建数据事务并确定所述数据事务对应的事务信息。微服务A中部署的调用拦截器将事务信息添加至服务调用请求,并将服务调用请求转发至微服务B。微服务B将服务调用请求转发至被调用的微服务C。微服务B的调用拦截器在接收到包含事务信息的服务调用请求时,通知事务管理器将微服务B加入执行数据事务的服务链。微服务C的调用拦截器在接收到包含事务信息的服务调用请求时,通知事务管理器将微服务C加入执行数据事务的服务链。微服务B和微服务C中部署的资源管理器根据数据库的2阶段提交(Two-phase Commit)的执行逻辑完成统一的业务操作,以保证各微服务间的数据一致性。
在一个实施例中,如图8所示,当调用拦截器A接收到服务调用请求时,调用拦截器A向事务管理器发送事务创建指令。事务管理器通知资源管理器B和资源管理器C开始新的事务。资源管理器B向数据库B发送指示事务开始的begin()指令,资源管理器C向数据库C发送指示事务开始的begin()指令。微服务B通过资源管理器B对数据库B进行业务操作,微服务C通过资源管理器C对数据库C进行业务操作。在微服务B成功执行业务操作后,微服务B中部署的资源管理器向数据库B发送提交准备指令,在微服务C成功执行业务操作后,微服务C中部署的资源管理器向数据库C发送提交准备指令。在返回服务调用时,调用拦截器A在接收到事务结束消息时,通知事务管理器事务结束,事务管理器分别通知资源管理器B和资源管理器C事务结束。资源管理器B和资源管理器C分别通知数据库B和数据库C准备提交。在接收到数据库的正确应答后,资源管理器B和资源管理器C通知事务管理器数据库B和数据库B已准备就绪。事务管理器通知资源管理器提交服务调用的结果,资源管理器B和资源管理器C分别通知数据库B和数据库C提交服务调用的结果。
在一个实施例中,如图9所示,当调用拦截器A接收到服务调用请求时,调用拦截器A向事务管理器发送事务创建指令。事务管理器通知资源管理器B和资源管理器C开始新的事务。资源管理器B向数据库B发送指示事务开始的begin()指令,资源管理器C向数据库C发送指示事务开始的begin()指令。微服务B通过资源管理器B对数据库B进行业务操作,微服务C通过资源管理器C对数据库C进行业务操作。若微服务B成功执行业务操作,而微服务C执行业务操作异常,则资源管理器C不再使数据库C进行prepare()操作。事务管理器捕获微服务执行异常的信息,并分别通知资源管理器B和资源管理器C使数据库B和数据库C执行回滚操作。
在一个实施例中,如图10所示,业务操作方法包括如下步骤:
S1002,若通过第二微服务接收到服务调用请求,检测服务调用请求是否包含已创建数据事务的事务信息。
S1004,若服务调用请求中不包含已创建数据事务的事务信息,确定服务调用请求对应的数据事务未创建。
S1006,若服务调用请求对应的数据事务尚未创建,向事务管理器发送事务创建指令,以使事务管理器基于事务创建指令创建数据事务并确定数据事务对应的事务信息。
S1008,将事务信息添加至服务调用请求,并将添加了事务信息的服务调用请求转发至第一微服务。
S1010,当通过第一微服务拦截到服务调用请求,从服务调用请求中提取事务信息包括:当通过第一微服务拦截到第二微服务转发的服务调用请求,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务。
S1012,将第一微服务加入执行数据事务的服务链;服务链上还包括执行数据事务的其他微服务。
S1014,当服务链上的微服务成功执行数据事务对应的业务操作时,向事务管理器反馈操作成功信息;若事务管理器接收到服务链上的全部微服务反馈的操作成功信息,执行事务提交操作。
S1016,若事务管理器捕获到服务链上的微服务对业务操作执行异常的信息,确定服务链上的微服务未全部成功执行数据事务对应的业务操作。
S1018,对服务链上的全部微服务对应的数据库进行回滚操作。
上述S1002至S1018的具体内容可以参考上文的具体实现过程。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的业务操作方法的业务操作装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个业务操作装置实施例中的具体限定可以参见上文中对于业务操作方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种业务操作装置,包括:确定模块1102、加入模块1104、提交模块1106和回滚模块1108,其中:
确定模块1102,用于当通过第一微服务拦截到服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务;
加入模块1104,用于将第一微服务加入执行数据事务的服务链;服务链上还包括执行数据事务的其他微服务;
提交模块1106,用于若服务链上的微服务均全部成功执行数据事务对应的业务操作,执行事务提交操作;
回滚模块1108,用于若服务链上的微服务未全部成功执行数据事务对应的业务操作,对各微服务对应的数据库进行回滚操作。
上述实施例中,当通过第一微服务拦截到服务调用请求时,从服务调用请求中提取事务信息,并确定事务信息对应的数据事务。将第一微服务加入执行数据事务的服务链,服务链上还包括执行数据事务的其他微服务。若服务链上的微服务均全部成功执行数据事务对应的业务操作,执行事务提交操作,从而使整个服务链上的全部微服务可以统一的执行数据事务对应的业务操作。若服务链上的微服务未全部成功执行数据事务对应的业务操作,对各微服务对应的数据库进行回滚操作,避免某个微服务因执行业务操作异常而无法与其他成功执行业务操作的微服务保持数据一致,保证了整个服务链中的数据一致性。
在一个实施例中,如图12所示,装置还包括:
检测模块1110,用于若通过第二微服务接收到服务调用请求,检测服务调用请求对应的数据事务是否已创建;
创建模块1112,用于若服务调用请求对应的数据事务尚未创建,创建数据事务并确定数据事务对应的事务信息;
添加模块1114,用于将事务信息添加至服务调用请求,并将添加了事务信息的服务调用请求转发至第一微服务;
确定模块1102,还用于当通过第一微服务拦截到第二微服务转发的服务调用请求,从服务调用请求中提取事务信息。
在一个实施例中,装置还包括:
确定模块1102,还用于若服务调用请求对应的数据事务已创建,确定服务调用请求对应的已创建数据事务;
加入模块1104,还用于将第二微服务加入已创建数据事务对应的服务链。
在一个实施例中,检测模块1110,还用于:
若通过部署在第二微服务中的调用拦截器拦截到服务调用请求,检测服务调用请求是否包含已创建数据事务的事务信息;
若服务调用请求中不包含已创建数据事务的事务信息,确定服务调用请求对应的数据事务未创建。
在一个实施例中,创建模块1112,还用于:
若服务调用请求对应的数据事务尚未创建,向事务管理器发送事务创建指令,以使事务管理器基于事务创建指令创建数据事务并确定数据事务对应的事务信息。
在一个实施例中,提交模块1106,还用于:
当服务链上的微服务成功执行数据事务对应的业务操作时,向事务管理器反馈操作成功信息;
若事务管理器接收到服务链上的全部微服务反馈的操作成功信息,执行事务提交操作。
在一个实施例中,回滚模块1108,还用于:
若事务管理器捕获到服务链上的微服务对业务操作执行异常的信息,确定服务链上的微服务未全部成功执行数据事务对应的业务操作;
对服务链上的全部微服务对应的数据库进行回滚操作。
上述业务操作装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务操作数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种业务操作方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种业务操作方法,其特征在于,所述方法包括:
当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若通过第二微服务接收到服务调用请求,检测所述服务调用请求对应的数据事务是否已创建;
若所述服务调用请求对应的数据事务尚未创建,创建数据事务并确定所述数据事务对应的事务信息;
将所述事务信息添加至所述服务调用请求,并将添加了所述事务信息的服务调用请求转发至所述第一微服务;
所述当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息包括:
当通过第一微服务拦截到所述第二微服务转发的服务调用请求,从所述服务调用请求中提取事务信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述服务调用请求对应的数据事务已创建,确定所述服务调用请求对应的已创建数据事务;
将所述第二微服务加入所述已创建数据事务对应的服务链。
4.根据权利要求2所述的方法,其特征在于,所述若通过第二微服务接收到服务调用请求,检测所述服务调用请求对应的数据事务是否已创建包括:
若通过部署在第二微服务中的调用拦截器拦截到服务调用请求,检测所述服务调用请求是否包含已创建数据事务的事务信息;
若所述服务调用请求中不包含所述已创建数据事务的事务信息,确定所述服务调用请求对应的数据事务未创建。
5.根据权利要求2所述的方法,其特征在于,所述若所述服务调用请求对应的数据事务尚未创建,创建数据事务并确定所述数据事务对应的事务信息包括:
若所述服务调用请求对应的数据事务尚未创建,向事务管理器发送事务创建指令,以使所述事务管理器基于所述事务创建指令创建所述数据事务并确定所述数据事务对应的事务信息。
6.根据权利要求1所述的方法,其特征在于,所述若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作包括:
当所述服务链上的微服务成功执行所述数据事务对应的业务操作时,向事务管理器反馈操作成功信息;
若所述事务管理器接收到所述服务链上的全部微服务反馈的操作成功信息,执行事务提交操作。
7.根据权利要求1所述的方法,其特征在于,所述若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作包括:
若事务管理器捕获到所述服务链上的微服务对业务操作执行异常的信息,确定所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作;
对所述服务链上的全部所述微服务对应的数据库进行回滚操作。
8.一种业务操作装置,其特征在于,所述装置包括:
确定模块,用于当通过第一微服务拦截到服务调用请求时,从所述服务调用请求中提取事务信息,并确定所述事务信息对应的数据事务;
加入模块,用于将所述第一微服务加入执行所述数据事务的服务链;所述服务链上还包括执行所述数据事务的其他微服务;
提交模块,用于若所述服务链上的微服务均全部成功执行所述数据事务对应的业务操作,执行事务提交操作;
回滚模块,用于若所述服务链上的微服务未全部成功执行所述数据事务对应的业务操作,对各所述微服务对应的数据库进行回滚操作。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211653466.2A CN116257329A (zh) | 2022-12-21 | 2022-12-21 | 业务操作方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211653466.2A CN116257329A (zh) | 2022-12-21 | 2022-12-21 | 业务操作方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116257329A true CN116257329A (zh) | 2023-06-13 |
Family
ID=86683442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211653466.2A Pending CN116257329A (zh) | 2022-12-21 | 2022-12-21 | 业务操作方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257329A (zh) |
-
2022
- 2022-12-21 CN CN202211653466.2A patent/CN116257329A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230004537A1 (en) | Extracting data from a blockchain network | |
CN108416577B (zh) | 一种区块链服务系统 | |
WO2018176965A1 (zh) | 基于区块链的用于金融数据处理的方法、装置及电子设备 | |
CN111898139B (zh) | 数据读写方法及装置、电子设备 | |
US11681683B2 (en) | Transaction compensation for single phase resources | |
KR20060045365A (ko) | 컴퓨터들 사이에서 네트워크를 통해 오브젝트를 공유하는시스템 및 방법 | |
WO2022218227A1 (zh) | 基于区块链的存证方法、装置及电子设备 | |
US11100094B2 (en) | Taking snapshots of blockchain data | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
US20120124001A1 (en) | Increasing database availability during fault recovery | |
CN113672350B (zh) | 一种应用处理方法、装置及相关设备 | |
WO2022247316A1 (zh) | 存储对象处理系统、请求处理方法、网关和存储介质 | |
US11194792B2 (en) | Taking snapshots of blockchain data | |
CN114217981A (zh) | 银企直连的通信方法、装置、计算机设备和存储介质 | |
CN110704438A (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
Aktas et al. | XML metadata services | |
WO2022206210A1 (zh) | 基于区块链的资产管理 | |
CN113095824B (zh) | 基于区块链的资产管理方法、装置及电子设备 | |
CN116257329A (zh) | 业务操作方法、装置、计算机设备和存储介质 | |
US11582345B2 (en) | Context data management interface for contact center | |
US10771242B2 (en) | Blockchain-based data processing | |
CN114493598A (zh) | 计算资源管理方法、装置、计算机设备和存储介质 | |
US20240061729A1 (en) | Multitenancy cross-tenant collaboration driven by event proxy | |
CN113495982B (zh) | 交易节点管理方法、装置、计算机设备及存储介质 | |
CN118277039A (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 |