CN109451078A - 一种分布式架构下的事务处理方法和装置 - Google Patents
一种分布式架构下的事务处理方法和装置 Download PDFInfo
- Publication number
- CN109451078A CN109451078A CN201910024130.1A CN201910024130A CN109451078A CN 109451078 A CN109451078 A CN 109451078A CN 201910024130 A CN201910024130 A CN 201910024130A CN 109451078 A CN109451078 A CN 109451078A
- Authority
- CN
- China
- Prior art keywords
- transaction
- message
- equipment
- log
- log recording
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/069—Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种分布式架构下的事务处理方法和装置,所述分布式架构包括节点设备、日志收集设备和事务分析设备,所述方法包括:所述各个节点设备对启动事务保障的事务处理消息生成日志记录;所述日志收集设备实时收集各个所述节点设备的日志记录;所述事务分析设备从所述日志收集设备中获取所述日志记录;所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。本发明实施例能够保障事务处理消息能够正确处理,提高分布式架构下事务的稳定性。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种分布式架构下的事务处理方法及装置、电子设备、存储介质。
背景技术
当今互联网受欢迎的业务,为了达到繁忙的用户请求所要求的服务速度,都需要考虑采用分布式的服务端架构来实现高吞吐、高并发、低延迟和负载均衡。分布式架构在解决了服务端受制于单台服务器的承载限制时,把一个事务处理消息分散给了各个节点服务器,如何保障一个事务处理消息能抵达相关节点服务器,并被正确处理,以满足该处理消息的事务要求,是亟待解决的一个问题。
目前为了实现分布式***的事务要求,有同步和异步两种类型的方案:
同步方案:包括二阶段提交、以及改进版的三阶段提交,这类方案通过引入协调者,由协调者确认各个参与节点都能正常处理后,通知各个节点完成事务提交。
异步方案:借助于第三方消息中间件来实现。每条消息的发送需要多个步骤:先将要发送的消息发送给第三方消息中间件来保存,做完本地事务后,再发送消息给中间件通知将前面保存的消息发送出去,或者取消发送。若第三方消息中间件长时间未收到确认发送或取消发送的消息,则向业务***询问本地事务状态,并做补偿处理。
然而,不管是同步方案或者异步方案,均存在一些缺点:
采用同步方案来实现,需要各个参与节点同步阻塞来完成整个事务,会带来整体复杂性的急剧上升,并发量上不去,扩展性能差,同时协调者与参与者之间出现通信超时,也会导致事务异常。
采用异步方案的第三方消息中间件来实现,所有的分布式节点之间的通信,都经由第三方消息中间件,同时需要配合第三方消息中间件,提供额外对应的消息是否确认需要发送的询问接口。这种实现方案,提高了各个节点实现的复杂度,增加了业务开发的工作量。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种分布式架构下的事务处理方法及装置、电子设备、存储介质。
为了解决上述问题,本发明实施例公开了一种分布式架构下的事务处理方法,所述分布式架构包括节点设备、日志收集设备和事务分析设备,所述方法包括:
所述各个节点设备对启动事务保障的事务处理消息生成日志记录;
所述日志收集设备实时收集各个所述节点设备的日志记录;
所述事务分析设备从所述日志收集设备中获取所述日志记录;
所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。
优选地,在所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤之前,包括:
当各个所述节点设备为关键节点设备时启动事务保障,生成携带事务标签的事务处理消息。
优选地,所述节点设备包括发送节点设备和接收节点设备,所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤,包括:
在启动事务保障时,若所述发送节点设备发送所述事务处理消息至所述接收节点设备,则将所述事务处理消息对应的事务相关信息记录为消息发布记录;所述消息发布记录包括所述接收节点设备的设备信息。
优选地,所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤,包括:
当所述接收节点设备接收到所述事务处理消息时,判断所述事务处理消息是否携带事务标签;
若所述事务处理消息携带事务标签,则所述接收节点设备启动事务保障;
在启动事务保障时,所述节点设备将所述事务处理消息对应的事务相关信息记录为准备日志记录。
优选地,所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤,包括:
当所述接收节点设备处理完所述事务处理消息后,生成处理结果信息和原因描述信息;
所述接收节点设备将所述事务处理消息的事务相关信息记录为结果日志记录;所述事务相关信息包括所述处理结果信息和所述原因描述信息。
优选地,所述日志收集设备实时收集各个所述节点设备的日志记录的步骤,包括:
所述日志收集设备实时收集各个所述节点设备的日志记录,所述日志记录包括消息发布记录、准备日志记录和结果日志记录;
所述日志收集设备将所述消息发布记录保存到数据库中;
所述日志收集设备为所述准备日志记录添加消费状态信息,并将所述准备日志记录保存到数据库中;
所述日志收集设备为所述结果日志记录添加消费状态信息,并将所述结果日志记录保存到数据库中。
优选地,所述事务处理消息还包括消息标签,所述事务分析设备从所述日志收集设备中获取所述日志记录,并根据所述日志记录确定所述事务处理消息的状态信息的步骤,包括:
所述事务分析设备按照所述事务标签和所述消息标签从所述日志记录中提取出消费状态信息;
所述事务分析设备根据所述结果日志记录中的处理结果确定事务处理消息的处理状态信息;
所述事务分析设备根据所述消费状态信息和处理状态信息处理所述事务处理消息。
优选地,所述事务分析设备根据所述消费状态信息和处理状态信息处理所述事务处理消息的步骤,包括:
当所述消费状态信息为未消费时,所述事务分析设备将所述事务处理消息基于对应的接收节点设备的设备信息重新发送;
当所述消费状态信息为已消费,且所述处理状态信息为已处理时,所述事务分析设备移除所述事务处理消息;
当所述消费状态信息为已消费,且所述处理状态信息为未处理时,所述事务分析设备返回所述事务分析设备从所述日志收集设备中获取所述日志记录的步骤;
当所述消费状态信息为已消费,且所述处理状态信息为处理异常时,所述事务分析设备按照预设规则处理所述事务处理消息。
本发明实施例还公开了一种分布式架构下的事务处理装置,所述分布式架构包括节点设备、日志收集设备和事务分析设备,所述装置包括:
日志记录生成模块,用于所述各个节点设备对启动事务保障的事务处理消息生成日志记录;
日志记录收集模块,用于所述日志收集设备实时收集各个所述节点设备的日志记录;
日志记录获取模块,用于所述事务分析设备从所述日志收集设备中获取所述日志记录;
消息处理模块,用于所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。
本发明实施例还公开了一种物体运动的控制***,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述一个或多个的一种分布式架构下的事务处理方法。
本发明实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上述一个或多个的一种分布式架构下的事务处理方法。
本发明实施例包括以下优点:
本发明实施例的分布式架构下包括节点设备、日志收集设备和事务分析设备中,其中,各个节点设备会对于启动事务保障的事务处理消息生成日志记录,日志收集设备则实时收集各个节点设备的日志记录,事务分析设备从日志收集设备中获取日志记录,并根据日志记录确定事务处理消息的状态信息,再根据状态信息处理事务处理消息。本发明实施例启动事务保障的各个节点设备会自行记录相应的日志记录,并通过日志收集设备来集中收集日志记录,事务分析设备则可以基于日志记录进行分析确定事务处理消息的状态,从而可以确定对于该事务处理消息的下一步处理,保障事务处理消息能够正确处理,提高分布式架构下事务的稳定性。
附图说明
图1是本发明的一种分布式架构下的事务处理方法实施例的步骤流程图;
图2是本发明的一种日志记录入库的流程示意图;
图3是本发明的一种事务消息处理的流程示意图;
图4是本发明的一种分布式架构下的事务处理装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例旨在提供一种在分布式架构下,采用异步方案,不修改已有分布式架构中各个节点设备之间的通信方式,不增加分布式业务逻辑实现复杂度,可以按需指定关键消息链路,检测并保障该消息链路中的消息正确投递、正确处理的分布式架构下的事务辅助方案,增强分布式架构下事务运行的稳定性。下面对于本发明实施例进行详细介绍。
参照图1,示出了本发明的一种分布式架构下的事务处理方法实施例的步骤流程图,所述分布式架构可以包括多个节点设备、日志收集设备和事务分析设备,所述方法具体可以包括如下步骤:
步骤101,所述各个节点设备对启动事务保障的事务处理消息生成日志记录。
在本发明实施例中,各个节点设备(节点服务器)可以通过预先配置来确定是否启动事务保障。当确定启动事务保障时,节点设备会对于发送前、处理前和处理后事务处理消息进行保存,得到日志记录,以便于后续消息的分析和处理。
在本发明的一种优选实施例中,在所述步骤101之前可以包括如下步骤:
当各个所述节点设备为关键节点设备时启动事务保障,生成携带事务标签的事务处理消息。
本发明实施例中可以通过配置的方式,指定需要增加事务保障的处理入口,也即是节点设备,触发后续的事务保障功能,减少对事务不敏感的节点设备的负担。
启动事务保障的节点设备,可以作为处理流程的入口,当然,也可以是处理流程的非入口。如果在节点设备处接收到的事务处理消息携带额外的事务标签,将启动事务保障,如果在节点设备处接收到的事务处理消息没有携带额外的事务标签,但如果这个节点设备配置为需要事务保障,那么将初始化额外的事务标签,启动事务保障。
在具体实现中,节点设备可以包括发送节点设备和接收节点设备,接收节点设备可以接收到发送节点设备发送的事务处理消息,当然,接收节点设备和发送节点设备之间是可以互相转换角色,例如,接收节点设备也可以作为发送节点设备,向其他节点设备发送事务处理消息。
在本发明的一种优选实施例中,所述步骤101可以包括如下子步骤:
当所述接收节点设备接收到所述事务处理消息时,判断所述事务处理消息是否携带事务标签;
若所述事务处理消息携带事务标签,则所述接收节点设备启动事务保障;
在启动事务保障时,所述节点设备将所述事务处理消息对应的事务相关信息记录为准备日志记录。
当接收节点设备接收到事务处理消息后,若识别出事务处理消息携带事务标签,则判断为需要参与事务保障,会将接收到的事务处理消息以及事务相关信息,通过日志的方式记录为准备日志记录(prepare记录)。
其中,prepare记录中事务相关信息包含的消息字段有:traceid、spanid、parentid、stamp、data,traceid表示一次消息链路唯一的标识(id),spanid表示消息链路中一次处理的唯一标识,parentid表示此次事务处理消息的发送节点设备对应处理的唯一spanid(可用于消息链路的跟踪)、stamp表示消息时间戳,data表示事务处理消息。
在本发明的一种优选实施例中,所所述步骤101可以包括如下子步骤:
在启动事务保障时,若所述发送节点设备发送所述事务处理消息至所述接收节点设备,则将所述事务处理消息对应的事务相关信息记录为消息发布记录;所述消息发布记录包括所述接收节点设备的设备信息。
在具体实施中,对于参与事务保障的发送节点设备,将事务处理消息发送至接收节点设备之前,会在事务处理消息的消息协议扩展部分增加事务标签,表示为需要启动事务保障,然后再将接收节点设备的设备信息和事务处理消息对应的事务相关信息记录为消息发布记录(publish记录)。
其中,publish记录中的事务相关信息包含的消息字段有:traceid、spanid、parentid、stamp、data、svr、sid、cid,其他的字段都如前面所述,此处的parentid记录为这个节点设备这次处理的spanid,同时生成新的spanid给publish记录,作为接收节点设备接来下处理的唯一spanid,而(svr、sid、cid)三元组作为设备信息,共同描述了唯一消息接收者,svr表示业务名称,sid、cid组合对应的是这个事务的相关唯一接口。
在本发明的一种优选实施例中,所述步骤101可以包括如下子步骤:
当所述接收节点设备处理完所述事务处理消息后,生成处理结果信息和原因描述信息;
所述接收节点设备将所述事务处理消息的事务相关信息记录为结果日志记录;所述事务相关信息包括所述处理结果信息和所述原因描述信息。
参与事务保障的接收节点设备,将接收到的事务处理消息处理完毕后,记录此次处理的结果信息,通过日志的方式将事务相关信息、处理结果信息和原因描述信息记录为结果日志记录(result记录)。
其中,result记录中事务相关信息包含的消息字段有:traceid、spanid、parentid、result、reason、stamp,其他的字段都如前面所述,此处result表示处理结果编码(处理结果),reason表示相关原因描述。
在具体实施中,日记记录的处理逻辑都是通过基础类库来实现,无需修改原有的分布式事务处理逻辑,同时因为实现了事务消息入口配置,从而能够灵活控制,按需接入事务保障。
本发明实施例中,节点设备根据事务处理消息以及配置,初始化这次处理的事务处理消息,包括:整条消息链路的唯一标识traceid;消息在这个节点设备这次处理的唯一标识spanid。如果节点设备接收到的消息附带有事务标签traceid,那么相应的这次处理同样需要启动事务保障,复用traceid,同时生成一个这次处理的唯一标识spanid。如果节点设备接收到的消息没有附带事务标签traceid,那么根据配置,查询这个节点设备的处理环节是否需要启动事务保障,如果需要启动事务保障,则在这个节点设备生成traceid和spanid,供后续的处理使用。
步骤102,所述日志收集设备实时收集各个所述节点设备的日志记录。
在本发明实施例的分布式架构下,设置有日志收集设备。日志收集设备实时收集分布式架构下,各个节点设备上产生的处理逻辑产生的日志记录。
在本发明的一种优选实施例中,参照图2,所述步骤102可以包括如下子步骤:
子步骤S11,所述日志收集设备实时收集各个所述节点设备的日志记录,所述日志记录包括消息发布记录、准备日志记录和结果日志记录;
子步骤S12,所述日志收集设备将所述消息发布记录保存到数据库中;
子步骤S13,所述日志收集设备为所述准备日志记录添加消费状态信息,并将所述准备日志记录保存到数据库中;
子步骤S14,所述日志收集设备为所述结果日志记录添加消费状态信息,并将所述结果日志记录保存到数据库中。
日志收集设备根据指定的节点设备、日志路径、文件名称格式,匹配事务的日志记录,并实时收集推送到数据库中。日志收集设备收集日志记录并分析,然后按固定格式存入数据库。其中,内容分析分为3类:prepare记录的分析,publish记录的分析,result记录的分析。
对于prepare记录,获取traceid、spanid、parentid、stamp、data信息,设置status字段为'consumed',即消费状态信息,表示消息已正确抵达接收方,被接收节点设备消费到,然后根据traceid、spandid所组成的唯一值,将这些信息更新、***到数据库。其中,消费状态信息可以根据的消息唯一的spanid为主键,结合相应的publish记录生成相应的消费状态信息。
对于publish记录,获取traceid、spanid、parentid、stamp、data、svr、sid、cid信息,然后根据traceid、spanid所组成的唯一值,将这些信息更新、***到数据库。
对于result记录,获取traceid、spanid、parentid、result、reason、stamp,已经产生结果记录,所以也同样表示消息被接收节点设备消费到,设置status字段为'consumed',即消费状态信息,然后根据traceid、spanid所组成的唯一值,将这些信息更新、***到数据库。其中,消费状态信息可以根据的消息唯一的spanid为主键,结合相应的publish记录和prepare记录一起生成相应的消费状态信息。
在完成对于prepare记录,publish记录,result记录的分析后,最后数据库记录的每次处理的固定字段包括:traceid、spanid、parentid、stamp、data、svr、sid、cid、status、result、reason。
步骤103,所述事务分析设备从所述日志收集设备中获取所述日志记录。
在本发明实施例的分布式架构下,设置有事务分析设备。事务分析设备可以从日志收集设备的数据库中获取分析后的日志记录,用于进一步分析和处理。
事务分析设备的分析逻辑定时触发,可以设置为1分钟一次。每次分析的事务处理消息均为设置为指定时间前,比如设置为1分钟,那么这次分析的消息就包括1分钟前触发的未被分析过的全部事务处理消息。其中,指定时间根据分布式架构下,日志记录收集延迟的最大可能时长来定,需要设置为大于最大可能时长。
步骤104,所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。
在本发明的一种优选实施例中,所述事务处理消息还包括消息标签,参照图3,所述步骤104可以包括如下子步骤:
子步骤S21,所述事务分析设备从所述日志收集设备中获取所述日志记录;
子步骤S22,所述事务分析设备按照所述事务标签和所述消息标签从所述日志记录中提取出消费状态信息;
子步骤S23,所述事务分析设备根据所述结果日志记录中的处理结果确定事务处理消息的处理状态信息;
子步骤S24,所述事务分析设备根据所述消费状态信息和处理状态信息处理所述事务处理消息。
事务分析设备按照指定时间获取日志收集设备数据库中的日志记录,然后按照事务标签traceid和消息标签panid获取到某条消息链路下的事务处理消息的消费状态信息,并根据result记录的result字段确定事务处理消息的处理状态信息,再根据消费状态信息和处理状态信息来分析处理事务处理消息。
在本发明的一种优选实施例中,所述子步骤S23可以包括如下子步骤:
当所述消费状态信息为未消费时,所述事务分析设备将所述事务处理消息基于对应的接收节点设备的设备信息重新发送;
当所述消费状态信息为已消费,且所述处理状态信息为已处理时,所述事务分析设备移除所述事务处理消息;
当所述消费状态信息为已消费,且所述处理状态信息为未处理时,所述事务分析设备返回所述事务分析设备从所述日志收集设备中获取所述日志记录的步骤;
当所述消费状态信息为已消费,且所述处理状态信息为处理异常时,所述事务分析设备按照预设规则处理所述事务处理消息。
在本发明实施例中,对于被消费到,而且被正确处理完的消息,说明这个环节,事务处理逻辑正常,可以移除这条事务处理消息。对于被消费到,但是尚未处理完的消息,等待下一次的分析。对于未被消费到的消息,会转移到待重试消息表。对于未被正确处理的消息,将转移到处理异常消息表。
对于转移到待重试消息表的消息,采用定时处理的逻辑,从待重试消息表获取待重试的具体事务处理消息和目标接收节点设备,发起重新投递。
对于转移到处理异常消息表的消息,采用定时处理的逻辑,从处理异常消息表获取具体的事务处理消息和处理结果编码(包括错误码),以及针对错误码配置的处理逻辑,按照配置的处理逻辑进行处理,如果针对错误码没有配置相应的处理逻辑,则可以采用告警的方式,提醒人工进行干预,然后将表中异常记录标记为已处理。
本发明实施例中,首先,可通过配置的方式,指定需要增加事务保障的节点设备,触发后续的事务功能,减少对事务不敏感的处理节点的负担。其次,通过节点设备基础层面的逻辑支持,通过记录日志记录的方式,记录各个分散节点设备之间的消息投递详情、以及处理结果详情,各个节点设备各自记录本地日志记录的方式,能够减少对分布式事务效率的影响。再次,采用异步日志收集的方案,将消息写入数据库,然后通过定时的数据库记录分析便能判断分布式架构下的事务处理情况,在发现丢消息或者异常时,提供自动重试和定制化的后续处理功能,能够有效实现一个事务在分布式架构下的事务处理要求。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明的一种分布式架构下的事务处理装置实施例的结构框图,所述分布式架构包括节点设备、日志收集设备和事务分析设备,所述装置具体可以包括如下模块:
日志记录生成模块201,用于所述各个节点设备对启动事务保障的事务处理消息生成日志记录;
日志记录收集模块202,用于所述日志收集设备实时收集各个所述节点设备的日志记录;
日志记录获取模块203,用于所述事务分析设备从所述日志收集设备中获取所述日志记录;
消息处理模块204,用于所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。
在本发明的一种优选实施例中,所述装置可以包括:
消息生成模块,用于当各个所述节点设备为关键节点设备时启动事务保障,生成携带事务标签的事务处理消息。
在本发明的一种优选实施例中,所述节点设备包括发送节点设备和接收节点设备,所述日志记录生成模块201可以包括:
第一记录子模块,用于在启动事务保障时,若所述发送节点设备发送所述事务处理消息至所述接收节点设备,则将所述事务处理消息对应的事务相关信息记录为消息发布记录;所述消息发布记录包括所述接收节点设备的设备信息。
在本发明的一种优选实施例中,所述日志记录生成模块201可以包括:
事务标签判断子模块,用于当所述接收节点设备接收到所述事务处理消息时,判断所述事务处理消息是否携带事务标签;
事务保障启动子模块,用于若所述事务处理消息携带事务标签,则所述接收节点设备启动事务保障;
第二记录子模块,用于在启动事务保障时,所述节点设备将所述事务处理消息对应的事务相关信息记录为准备日志记录。
在本发明的一种优选实施例中,所述日志记录生成模块201可以包括:
结果生成子模块,用于当所述接收节点设备处理完所述事务处理消息后,生成处理结果信息和原因描述信息;
第三记录子模块,用于所述接收节点设备将所述事务处理消息的事务相关信息记录为结果日志记录;所述事务相关信息包括所述处理结果信息和所述原因描述信息。
在本发明的一种优选实施例中,所述日志记录收集模块202可以包括:
日志记录收集子模块,用于所述日志收集设备实时收集各个所述节点设备的日志记录,所述日志记录包括消息发布记录、准备日志记录和结果日志记录;
第一保存模块,用于所述日志收集设备将所述消息发布记录保存到数据库中;
第二保存子模块,用于所述日志收集设备为所述准备日志记录添加消费状态信息,并将所述准备日志记录保存到数据库中;
第三保存子模块,用于所述日志收集设备为所述结果日志记录添加消费状态信息,并将所述结果日志记录保存到数据库中。
在本发明的一种优选实施例中,所述事务处理消息还包括消息标签,所述消息处理模块204可以包括:
状态信息提取子模块,用于所述事务分析设备按照所述事务标签和所述消息标签从所述日志记录中提取出消费状态信息;
状态信息确定子模块,用于所述事务分析设备根据所述结果日志记录中的处理结果确定事务处理消息的处理状态信息;
消息处理子模块,用于所述事务分析设备根据所述消费状态信息和处理状态信息处理所述事务处理消息。
在本发明的一种优选实施例中,所述消息处理子模块可以包括:
第一处理单元,用于当所述消费状态信息为未消费时,所述事务分析设备将所述事务处理消息基于对应的接收节点设备的设备信息重新发送;
第二处理单元,用于当所述消费状态信息为已消费,且所述处理状态信息为已处理时,所述事务分析设备移除所述事务处理消息;
第三处理单元,用于当所述消费状态信息为已消费,且所述处理状态信息为未处理时,所述事务分析设备返回所述事务分析设备从所述日志收集设备中获取所述日志记录的步骤;
第四处理单元,用于当所述消费状态信息为已消费,且所述处理状态信息为处理异常时,所述事务分析设备按照预设规则处理所述事务处理消息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明一实施例还提供了电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上分布式架构下的事务处理方法的步骤。
本发明一实施例还提供了计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上分布式架构下的事务处理法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种分布式架构下的事务处理方法及装置、电子设备、存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种分布式架构下的事务处理方法,其特征在于,所述分布式架构包括节点设备、日志收集设备和事务分析设备,所述方法包括:
所述各个节点设备对启动事务保障的事务处理消息生成日志记录;
所述日志收集设备实时收集各个所述节点设备的日志记录;
所述事务分析设备从所述日志收集设备中获取所述日志记录;
所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。
2.根据权利要求1所述的方法,其特征在于,在所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤之前,包括:
当各个所述节点设备为关键节点设备时启动事务保障,生成携带事务标签的事务处理消息。
3.根据权利要求1或2所述的方法,其特征在于,所述节点设备包括发送节点设备和接收节点设备,所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤,包括:
在启动事务保障时,若所述发送节点设备发送所述事务处理消息至所述接收节点设备,则将所述事务处理消息对应的事务相关信息记录为消息发布记录;所述消息发布记录包括所述接收节点设备的设备信息。
4.根据权利要求3所述的方法,其特征在于,所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤,包括:
当所述接收节点设备接收到所述事务处理消息时,判断所述事务处理消息是否携带事务标签;
若所述事务处理消息携带事务标签,则所述接收节点设备启动事务保障;
在启动事务保障时,所述节点设备将所述事务处理消息对应的事务相关信息记录为准备日志记录。
5.根据权利要求4所述的方法,其特征在于,所述各个节点设备对启动事务保障的事务处理消息生成日志记录的步骤,包括:
当所述接收节点设备处理完所述事务处理消息后,生成处理结果信息和原因描述信息;
所述接收节点设备将所述事务处理消息的事务相关信息记录为结果日志记录;所述事务相关信息包括所述处理结果信息和所述原因描述信息。
6.根据权利要求1所述的方法,其特征在于,所述日志收集设备实时收集各个所述节点设备的日志记录的步骤,包括:
所述日志收集设备实时收集各个所述节点设备的日志记录,所述日志记录包括消息发布记录、准备日志记录和结果日志记录;
所述日志收集设备将所述消息发布记录保存到数据库中;
所述日志收集设备为所述准备日志记录添加消费状态信息,并将所述准备日志记录保存到数据库中;
所述日志收集设备为所述结果日志记录添加消费状态信息,并将所述结果日志记录保存到数据库中。
7.根据权利要求6所述的方法,其特征在于,所述事务处理消息还包括消息标签,所述事务分析设备从所述日志收集设备中获取所述日志记录,并根据所述日志记录确定所述事务处理消息的状态信息的步骤,包括:
所述事务分析设备按照所述事务标签和所述消息标签从所述日志记录中提取出消费状态信息;
所述事务分析设备根据所述结果日志记录中的处理结果确定事务处理消息的处理状态信息;
所述事务分析设备根据所述消费状态信息和处理状态信息处理所述事务处理消息。
8.根据权利要求7所述的方法,其特征在于,所述事务分析设备根据所述消费状态信息和处理状态信息处理所述事务处理消息的步骤,包括:
当所述消费状态信息为未消费时,所述事务分析设备将所述事务处理消息基于对应的接收节点设备的设备信息重新发送;
当所述消费状态信息为已消费,且所述处理状态信息为已处理时,所述事务分析设备移除所述事务处理消息;
当所述消费状态信息为已消费,且所述处理状态信息为未处理时,所述事务分析设备返回所述事务分析设备从所述日志收集设备中获取所述日志记录的步骤;
当所述消费状态信息为已消费,且所述处理状态信息为处理异常时,所述事务分析设备按照预设规则处理所述事务处理消息。
9.一种分布式架构下的事务处理装置,其特征在于,所述分布式架构包括节点设备、日志收集设备和事务分析设备,所述装置包括:
日志记录生成模块,用于所述各个节点设备对启动事务保障的事务处理消息生成日志记录;
日志记录收集模块,用于所述日志收集设备实时收集各个所述节点设备的日志记录;
日志记录获取模块,用于所述事务分析设备从所述日志收集设备中获取所述日志记录;
消息处理模块,用于所述事务分析设备根据所述日志记录确定所述事务处理消息的状态信息,并根据所述状态信息处理所述事务处理消息。
10.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8中任一项所述的分布式架构下的事务处理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的分布式架构下的事务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910024130.1A CN109451078B (zh) | 2019-01-10 | 2019-01-10 | 一种分布式架构下的事务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910024130.1A CN109451078B (zh) | 2019-01-10 | 2019-01-10 | 一种分布式架构下的事务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109451078A true CN109451078A (zh) | 2019-03-08 |
CN109451078B CN109451078B (zh) | 2022-05-03 |
Family
ID=65543977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910024130.1A Active CN109451078B (zh) | 2019-01-10 | 2019-01-10 | 一种分布式架构下的事务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109451078B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457157A (zh) * | 2019-08-05 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 分布式事务异常处理方法、装置、计算机设备及存储介质 |
CN110489437A (zh) * | 2019-08-21 | 2019-11-22 | 中国工商银行股份有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
CN111130709A (zh) * | 2019-12-05 | 2020-05-08 | 紫光云(南京)数字技术有限公司 | 一种基于事务日志实现Kafka恰好一次消费方法 |
CN112764888A (zh) * | 2021-01-21 | 2021-05-07 | 中信银行股份有限公司 | 一种基于日志分析的分布式事务检查判断方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399894A (zh) * | 2013-07-23 | 2013-11-20 | 中国科学院信息工程研究所 | 一种基于共享存储池的分布式事务处理方法 |
CN103530255A (zh) * | 2013-10-12 | 2014-01-22 | 北京奇虎科技有限公司 | 分布式异步事件的处理方法及*** |
CN103647834A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种用于处理多阶段分布式任务调度的***及方法 |
CN108459919A (zh) * | 2018-03-29 | 2018-08-28 | 中信百信银行股份有限公司 | 一种分布式事务处理方法及装置 |
-
2019
- 2019-01-10 CN CN201910024130.1A patent/CN109451078B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399894A (zh) * | 2013-07-23 | 2013-11-20 | 中国科学院信息工程研究所 | 一种基于共享存储池的分布式事务处理方法 |
CN103530255A (zh) * | 2013-10-12 | 2014-01-22 | 北京奇虎科技有限公司 | 分布式异步事件的处理方法及*** |
CN103647834A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种用于处理多阶段分布式任务调度的***及方法 |
CN108459919A (zh) * | 2018-03-29 | 2018-08-28 | 中信百信银行股份有限公司 | 一种分布式事务处理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457157A (zh) * | 2019-08-05 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 分布式事务异常处理方法、装置、计算机设备及存储介质 |
CN110457157B (zh) * | 2019-08-05 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 分布式事务异常处理方法、装置、计算机设备及存储介质 |
CN110489437A (zh) * | 2019-08-21 | 2019-11-22 | 中国工商银行股份有限公司 | 分布式事务处理方法、装置、计算机设备及存储介质 |
CN111130709A (zh) * | 2019-12-05 | 2020-05-08 | 紫光云(南京)数字技术有限公司 | 一种基于事务日志实现Kafka恰好一次消费方法 |
CN112764888A (zh) * | 2021-01-21 | 2021-05-07 | 中信银行股份有限公司 | 一种基于日志分析的分布式事务检查判断方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN109451078B (zh) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109451078A (zh) | 一种分布式架构下的事务处理方法和装置 | |
CN109739929A (zh) | 数据同步方法、装置及*** | |
CN108768826A (zh) | 基于MQTT和Kafka高并发场景下的消息路由方法 | |
CN104579905B (zh) | 消息传递方法和***及mom服务器、接收端 | |
CN107943841A (zh) | 流式数据处理方法、***和计算机可读存储介质 | |
CN109450936A (zh) | 一种基于Kafka的异构通信协议的适配方法及装置 | |
CN110545327B (zh) | 一种信息推送方法及*** | |
US9152441B2 (en) | Systems and methods involving virtual machine host isolation over a network via a federated downstream cluster | |
CN112583931A (zh) | 消息处理方法、消息中间件、电子设备和存储介质 | |
CN109636304B (zh) | 业务***的发布方法及装置、存储介质、电子装置 | |
CN112486707B (zh) | 基于Redis的消息异步消费方法及装置 | |
CN112711635A (zh) | 一种分布式物联设备跨区域数据一致性的方法和服务集群 | |
CN103139157A (zh) | 一种基于socket的网络通信方法、装置及*** | |
CN109151056B (zh) | 基于Canal的消息推送方法和*** | |
CN109173270A (zh) | 一种游戏服务***和实现方法 | |
CN110198335A (zh) | 消息同步方法及装置、电子设备及存储介质 | |
CN110430196A (zh) | 视频大数据云平台级联服务方法 | |
CN115022318A (zh) | 一种基于微服务架构的消息发布方法及*** | |
CN108228756A (zh) | 基于日志解析技术的PG数据库到Hadoop平台的数据同步复制方法 | |
CN109474902A (zh) | 消息计费装置、方法、终端及*** | |
US20230244688A1 (en) | Systems and methods for universal data ingestion | |
CN105610823A (zh) | 一种基于任务向量的流媒体处理方法及其处理***架构 | |
CN111866544A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
EP2690560A2 (en) | Method of benchmarking the behaviour of a replacement information system with the old system | |
CN114301783B (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 |