一种适用于分布式系统的事务日志记录方法

文档序号:8258295阅读:279来源:国知局
一种适用于分布式系统的事务日志记录方法
【技术领域】
[0001] 本发明涉及分布式计算技术领域,特别是一种适用于分布式系统的事务日志记录 方法。
【背景技术】
[0002] 在分布式系统中,由于一个事务可能需要多个组件协同完成。另外,事务执行时长 存在不确定性,因此会给事务的日志记录带来很大的困难。首先,事务可能由用户发起,然 后按顺序往下层的组件分发。也有可能由其中一个组件发起,往其他组件分发,比如定时执 行的事务或者基于告警事件发起的处理事务等。其次,执行的事务有可能是长任务,分布式 系统采用异步返回方式,不能同步获取事务执行的结果,也不能确定事务完成的时间点。因 此,不能马上产生一个事务的完整日志。
[0003] 目前,没有专门针对分布式事务的日志记录方法,分布式系统的各个组件都分别 进行日志记录,若要查看一个事务的完整日志记录,需要从不同的组件日志上获取。这种方 法有如下的弊端:
[0004] 1、需要人工从多个组件的日志上筛选出一个事务的完整日志,若需要对日志进行 审计,工作量较大,对运维人员排查故障也不利。
[0005] 2、不同组件产生的日志可能有其独特的格式,对产生的日志的管理过程将会非常 复杂,增加了运营管理的困难。

【发明内容】

[0006] 本发明解决的技术问题在于提供一种适用于分布式事务的日志记录方法,解决传 统分布式系统执行事务时日志分散、格式不统一、难于管理的问题。
[0007] 本发明解决上述技术问题的技术方案是:
[0008] 所述的方法包括如下步骤:
[0009] 步骤1 :对分布式系统中的所有事务逻辑中需要做事物日志记录的事务进行标 识,并对异步返回响应的事务逻辑也进行标识;
[0010] 步骤2 :在每个分布式事务开始前,给每个事务分配一个唯一的标识;
[0011] 步骤3 :在所有事务开始时,对其进行拦截,判断其是否为异步返回响应的事务, 如果不是,证明此事务为简单事务,不需要多个组件的协作,那么直接执行事务逻辑;然后 根据事务逻辑的执行结果写入事务日志记录;如果是,证明此事务是长事务,执行结果需要 异步返回,那么执行步骤4;
[0012] 步骤4 :把事务的信息作为一个记录写入到一个临时表中,记录以事务的唯一标 识作为标识,然后继续往下执行事务;
[0013] 步骤5:对分布式系统所有接收到的响应进行拦截,响应中包含请求中的事务唯 一标识;如果响应中的标识与临时表中某记录的标识一致,那么取出临时表中的相应记录, 把响应中的事务执行结果更新到记录中,然后写入事务日志记录中。
[0014] 所述事务的唯一标识指的是事务ID、对象ID、事务类型的组合;
[0015] 所述事务ID指的是为与其他事务进行区分而生成的唯一标识符;
[0016] 所述对象ID指的是事务所针对的虚拟机、逻辑卷等对象的唯一标识符;
[0017] 所述事务类型指的是针对对象所执行的操作。
[0018] 所述简单事务指的是只需要在一个组件内完成,且执行的结果是同步返回的事 务。
[0019] 所述执行结果异步返回指的是事务请求发送后由于执行时间过长或无法预测,在 并不知道执行结果的情况下先返回,后续需要另外通过监听的手段获取执行结果。
[0020] 本发明可以带来如下的有益效果:
[0021] 1、本发明的方法能产生集中的完整的事务日志记录,可使用此日志记录进行审 计,并且可以大大减少运维人员故障排查的工作量。
[0022] 2、本发明的方法能产生统一格式的事务日志记录,便于管理。
【附图说明】
[0023] 下面结合附图对本发明进一步说明:
[0024] 图1为本发明方法流程图。
【具体实施方式】
[0025] 见图1所示,本发明的流程是:
[0026] 步骤1 :对分布式系统中的所有事务逻辑中需要做事物日志记录的事务进行标 识,并对异步返回响应的事务逻辑也进行标识;
[0027] 步骤2 :在每个分布式事务开始前,给每个事务分配一个唯一的标识;
[0028] 步骤3 :在所有事务开始时,对其进行拦截,判断其是否为异步返回响应的事务, 如果不是,证明此事务为简单事务,不需要多个组件的协作,那么直接执行事务逻辑;然后 根据事务逻辑的执行结果写入事务日志记录;如果是,证明此事务是长事务,执行结果需要 异步返回,那么执行步骤4;
[0029] 步骤4 ;把事务的信息作为一个记录写入到一个临时表中,记录以事务的唯一标 识作为标识,然后继续往下执行事务;
[0030] 步骤5:对分布式系统所有接收到的响应进行拦截,响应中包含请求中的事务唯 一标识;如果响应中的标识与临时表中某记录的标识一致,那么取出临时表中的相应记录, 把响应中的事务执行结果更新到记录中,然后写入事务日志记录中。
[0031] 本发明的实现方式有多种,下面以Java的A0P技术作为拦截,Struts作为Web框 架为例,说明其中一种实现方式:
[0032] 1、使用注解对需要做事物日志记录的事务逻辑进行标识,并对异步返回响应的事 务逻辑也进行标识
[0033]
【主权项】
1. 一种适用于分布式系统的事务日志记录方法,其特征在于:所述的方法包括如下步 骤: 步骤1;对分布式系统中的所有事务逻辑中需要做事物日志记录的事务进行标识,并 对异步返回响应的事务逻辑也进行标识; 步骤2 ;在每个分布式事务开始前,给每个事务分配一个唯一的标识; 步骤3;在所有事务开始时,对其进行拦截,判断其是否为异步返回响应的事务,如果 不是,证明此事务为简单事务,不需要多个组件的协作,那么直接执行事务逻辑;然后根据 事务逻辑的执行结果写入事务日志记录;如果是,证明此事务是长事务,执行结果需要异步 返回,那么执行步骤4; 步骤4 ;把事务的信息作为一个记录写入到一个临时表中,记录W事务的唯一标识作 为标识,然后继续往下执行事务; 步骤5 ;对分布式系统所有接收到的响应进行拦截,响应中包含请求中的事务唯一标 识;如果响应中的标识与临时表中某记录的标识一致,那么取出临时表中的相应记录,把响 应中的事务执行结果更新到记录中,然后写入事务日志记录中。
2. 根据权利要求1所述的适用于分布式系统的事务日志记录方法,其特征在于:所述 事务的唯一标识指的是事务ID、对象ID、事务类型的组合; 所述事务ID指的是为与其他事务进行区分而生成的唯一标识符; 所述对象ID指的是事务所针对的虚拟机、逻辑卷等对象的唯一标识符; 所述事务类型指的是针对对象所执行的操作。
3. 根据权利要求1所述的适用于分布式系统的事务日志记录方法,其特征在于:所述 简单事务指的是只需要在一个组件内完成,且执行的结果是同步返回的事务。
4. 根据权利要求2所述的适用于分布式系统的事务日志记录方法,其特征在于:所述 简单事务指的是只需要在一个组件内完成,且执行的结果是同步返回的事务。
5. 根据权利要求1至4任一项所述的适用于分布式系统的事务日志记录方法,其特征 在于:所述执行结果异步返回指的是事务请求发送后由于执行时间过长或无法预测,在并 不知道执行结果的情况下先返回,后续需要另外通过监听的手段获取执行结果。
【专利摘要】本发明涉及分布式计算技术领域,特别是一种适用于分布式系统的事务日志记录方法。本发明首先对分布式系统中的所有事务逻辑中需要做事物日志记录的事务和异步返回响应的事务逻辑进行标识;在事务开始前,给其分配一个唯一的标识;事务开始时,判断其是否为异步返回响应的事务,如果不是直接执行事务逻辑,根据结果写入事务日志记录;如果是,那么把事务的信息作为一个记录写入到一个临时表中,然后继续往下执行事务;最后对所有接收到的响应进行拦截,如果响应中的标识与临时表中某记录的标识一致,那么取出临时表中的相应记录,把响应中的事务执行结果更新到记录中,然后写入事务日志记录中。本发明解决了传统分布式系统执行事务时日志分散、格式不统一、难于管理的问题;可以用于分布式系统的事务日志记录。
【IPC分类】G06F11-34, G06F9-46
【公开号】CN104572415
【申请号】CN201410817728
【发明人】莫展鹏, 杨松, 季统凯
【申请人】国云科技股份有限公司
【公开日】2015年4月29日
【申请日】2014年12月23日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1