一種適用于分布式系統(tǒng)的事務日志記錄方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及分布式計算技術(shù)領(lǐng)域,特別是一種適用于分布式系統(tǒng)的事務日志記錄 方法。
【背景技術(shù)】
[0002] 在分布式系統(tǒng)中,由于一個事務可能需要多個組件協(xié)同完成。另外,事務執(zhí)行時長 存在不確定性,因此會給事務的日志記錄帶來很大的困難。首先,事務可能由用戶發(fā)起,然 后按順序往下層的組件分發(fā)。也有可能由其中一個組件發(fā)起,往其他組件分發(fā),比如定時執(zhí) 行的事務或者基于告警事件發(fā)起的處理事務等。其次,執(zhí)行的事務有可能是長任務,分布式 系統(tǒng)采用異步返回方式,不能同步獲取事務執(zhí)行的結(jié)果,也不能確定事務完成的時間點。因 此,不能馬上產(chǎn)生一個事務的完整日志。
[0003] 目前,沒有專門針對分布式事務的日志記錄方法,分布式系統(tǒng)的各個組件都分別 進行日志記錄,若要查看一個事務的完整日志記錄,需要從不同的組件日志上獲取。這種方 法有如下的弊端:
[0004] 1、需要人工從多個組件的日志上篩選出一個事務的完整日志,若需要對日志進行 審計,工作量較大,對運維人員排查故障也不利。
[0005] 2、不同組件產(chǎn)生的日志可能有其獨特的格式,對產(chǎn)生的日志的管理過程將會非常 復雜,增加了運營管理的困難。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明解決的技術(shù)問題在于提供一種適用于分布式事務的日志記錄方法,解決傳 統(tǒng)分布式系統(tǒng)執(zhí)行事務時日志分散、格式不統(tǒng)一、難于管理的問題。
[0007] 本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
[0008] 所述的方法包括如下步驟:
[0009] 步驟1 :對分布式系統(tǒng)中的所有事務邏輯中需要做事物日志記錄的事務進行標 識,并對異步返回響應的事務邏輯也進行標識;
[0010] 步驟2 :在每個分布式事務開始前,給每個事務分配一個唯一的標識;
[0011] 步驟3 :在所有事務開始時,對其進行攔截,判斷其是否為異步返回響應的事務, 如果不是,證明此事務為簡單事務,不需要多個組件的協(xié)作,那么直接執(zhí)行事務邏輯;然后 根據(jù)事務邏輯的執(zhí)行結(jié)果寫入事務日志記錄;如果是,證明此事務是長事務,執(zhí)行結(jié)果需要 異步返回,那么執(zhí)行步驟4;
[0012] 步驟4 :把事務的信息作為一個記錄寫入到一個臨時表中,記錄以事務的唯一標 識作為標識,然后繼續(xù)往下執(zhí)行事務;
[0013] 步驟5:對分布式系統(tǒng)所有接收到的響應進行攔截,響應中包含請求中的事務唯 一標識;如果響應中的標識與臨時表中某記錄的標識一致,那么取出臨時表中的相應記錄, 把響應中的事務執(zhí)行結(jié)果更新到記錄中,然后寫入事務日志記錄中。
[0014] 所述事務的唯一標識指的是事務ID、對象ID、事務類型的組合;
[0015] 所述事務ID指的是為與其他事務進行區(qū)分而生成的唯一標識符;
[0016] 所述對象ID指的是事務所針對的虛擬機、邏輯卷等對象的唯一標識符;
[0017] 所述事務類型指的是針對對象所執(zhí)行的操作。
[0018] 所述簡單事務指的是只需要在一個組件內(nèi)完成,且執(zhí)行的結(jié)果是同步返回的事 務。
[0019] 所述執(zhí)行結(jié)果異步返回指的是事務請求發(fā)送后由于執(zhí)行時間過長或無法預測,在 并不知道執(zhí)行結(jié)果的情況下先返回,后續(xù)需要另外通過監(jiān)聽的手段獲取執(zhí)行結(jié)果。
[0020] 本發(fā)明可以帶來如下的有益效果:
[0021] 1、本發(fā)明的方法能產(chǎn)生集中的完整的事務日志記錄,可使用此日志記錄進行審 計,并且可以大大減少運維人員故障排查的工作量。
[0022] 2、本發(fā)明的方法能產(chǎn)生統(tǒng)一格式的事務日志記錄,便于管理。
【附圖說明】
[0023] 下面結(jié)合附圖對本發(fā)明進一步說明:
[0024] 圖1為本發(fā)明方法流程圖。
【具體實施方式】
[0025] 見圖1所示,本發(fā)明的流程是:
[0026] 步驟1 :對分布式系統(tǒng)中的所有事務邏輯中需要做事物日志記錄的事務進行標 識,并對異步返回響應的事務邏輯也進行標識;
[0027] 步驟2 :在每個分布式事務開始前,給每個事務分配一個唯一的標識;
[0028] 步驟3 :在所有事務開始時,對其進行攔截,判斷其是否為異步返回響應的事務, 如果不是,證明此事務為簡單事務,不需要多個組件的協(xié)作,那么直接執(zhí)行事務邏輯;然后 根據(jù)事務邏輯的執(zhí)行結(jié)果寫入事務日志記錄;如果是,證明此事務是長事務,執(zhí)行結(jié)果需要 異步返回,那么執(zhí)行步驟4;
[0029] 步驟4 ;把事務的信息作為一個記錄寫入到一個臨時表中,記錄以事務的唯一標 識作為標識,然后繼續(xù)往下執(zhí)行事務;
[0030] 步驟5:對分布式系統(tǒng)所有接收到的響應進行攔截,響應中包含請求中的事務唯 一標識;如果響應中的標識與臨時表中某記錄的標識一致,那么取出臨時表中的相應記錄, 把響應中的事務執(zhí)行結(jié)果更新到記錄中,然后寫入事務日志記錄中。
[0031] 本發(fā)明的實現(xiàn)方式有多種,下面以Java的A0P技術(shù)作為攔截,Struts作為Web框 架為例,說明其中一種實現(xiàn)方式:
[0032] 1、使用注解對需要做事物日志記錄的事務邏輯進行標識,并對異步返回響應的事 務邏輯也進行標識
[0033]
【主權(quán)項】
1. 一種適用于分布式系統(tǒng)的事務日志記錄方法,其特征在于:所述的方法包括如下步 驟: 步驟1;對分布式系統(tǒng)中的所有事務邏輯中需要做事物日志記錄的事務進行標識,并 對異步返回響應的事務邏輯也進行標識; 步驟2 ;在每個分布式事務開始前,給每個事務分配一個唯一的標識; 步驟3;在所有事務開始時,對其進行攔截,判斷其是否為異步返回響應的事務,如果 不是,證明此事務為簡單事務,不需要多個組件的協(xié)作,那么直接執(zhí)行事務邏輯;然后根據(jù) 事務邏輯的執(zhí)行結(jié)果寫入事務日志記錄;如果是,證明此事務是長事務,執(zhí)行結(jié)果需要異步 返回,那么執(zhí)行步驟4; 步驟4 ;把事務的信息作為一個記錄寫入到一個臨時表中,記錄W事務的唯一標識作 為標識,然后繼續(xù)往下執(zhí)行事務; 步驟5 ;對分布式系統(tǒng)所有接收到的響應進行攔截,響應中包含請求中的事務唯一標 識;如果響應中的標識與臨時表中某記錄的標識一致,那么取出臨時表中的相應記錄,把響 應中的事務執(zhí)行結(jié)果更新到記錄中,然后寫入事務日志記錄中。
2. 根據(jù)權(quán)利要求1所述的適用于分布式系統(tǒng)的事務日志記錄方法,其特征在于:所述 事務的唯一標識指的是事務ID、對象ID、事務類型的組合; 所述事務ID指的是為與其他事務進行區(qū)分而生成的唯一標識符; 所述對象ID指的是事務所針對的虛擬機、邏輯卷等對象的唯一標識符; 所述事務類型指的是針對對象所執(zhí)行的操作。
3. 根據(jù)權(quán)利要求1所述的適用于分布式系統(tǒng)的事務日志記錄方法,其特征在于:所述 簡單事務指的是只需要在一個組件內(nèi)完成,且執(zhí)行的結(jié)果是同步返回的事務。
4. 根據(jù)權(quán)利要求2所述的適用于分布式系統(tǒng)的事務日志記錄方法,其特征在于:所述 簡單事務指的是只需要在一個組件內(nèi)完成,且執(zhí)行的結(jié)果是同步返回的事務。
5. 根據(jù)權(quán)利要求1至4任一項所述的適用于分布式系統(tǒng)的事務日志記錄方法,其特征 在于:所述執(zhí)行結(jié)果異步返回指的是事務請求發(fā)送后由于執(zhí)行時間過長或無法預測,在并 不知道執(zhí)行結(jié)果的情況下先返回,后續(xù)需要另外通過監(jiān)聽的手段獲取執(zhí)行結(jié)果。
【專利摘要】本發(fā)明涉及分布式計算技術(shù)領(lǐng)域,特別是一種適用于分布式系統(tǒng)的事務日志記錄方法。本發(fā)明首先對分布式系統(tǒng)中的所有事務邏輯中需要做事物日志記錄的事務和異步返回響應的事務邏輯進行標識;在事務開始前,給其分配一個唯一的標識;事務開始時,判斷其是否為異步返回響應的事務,如果不是直接執(zhí)行事務邏輯,根據(jù)結(jié)果寫入事務日志記錄;如果是,那么把事務的信息作為一個記錄寫入到一個臨時表中,然后繼續(xù)往下執(zhí)行事務;最后對所有接收到的響應進行攔截,如果響應中的標識與臨時表中某記錄的標識一致,那么取出臨時表中的相應記錄,把響應中的事務執(zhí)行結(jié)果更新到記錄中,然后寫入事務日志記錄中。本發(fā)明解決了傳統(tǒng)分布式系統(tǒng)執(zhí)行事務時日志分散、格式不統(tǒng)一、難于管理的問題;可以用于分布式系統(tǒng)的事務日志記錄。
【IPC分類】G06F11-34, G06F9-46
【公開號】CN104572415
【申請?zhí)枴緾N201410817728
【發(fā)明人】莫展鵬, 楊松, 季統(tǒng)凱
【申請人】國云科技股份有限公司
【公開日】2015年4月29日
【申請日】2014年12月23日