欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

業(yè)務(wù)執(zhí)行方法及服務(wù)器的制造方法

文檔序號(hào):10552818閱讀:544來(lái)源:國(guó)知局
業(yè)務(wù)執(zhí)行方法及服務(wù)器的制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種業(yè)務(wù)執(zhí)行方法,包括:所述業(yè)務(wù)服務(wù)器在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解;若存在,則將所述日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與所述主線(xiàn)程異步的支線(xiàn)程任務(wù)池;在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池對(duì)接收到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù)中。本發(fā)明還公開(kāi)了一種服務(wù)器。本發(fā)明降低了主業(yè)務(wù)與輔業(yè)務(wù)之間的耦合性,提高了服務(wù)器執(zhí)行業(yè)務(wù)的性能及易擴(kuò)展性。
【專(zhuān)利說(shuō)明】
業(yè)務(wù)執(zhí)行方法及服務(wù)器
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及服務(wù)器技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)執(zhí)行方法及服務(wù)器。
【背景技術(shù)】
[0002] 通常在應(yīng)用程序(Application,APP)、無(wú)線(xiàn)應(yīng)用協(xié)議(Wireless Application Protocol,WAP)或網(wǎng)站(Website,WEB)等執(zhí)行較為重要的業(yè)務(wù)操作時(shí),服務(wù)器將執(zhí)行的業(yè)務(wù) 分為主業(yè)務(wù)和輔業(yè)務(wù),需要對(duì)主業(yè)務(wù)執(zhí)行過(guò)程中每個(gè)業(yè)務(wù)環(huán)節(jié)的業(yè)務(wù)數(shù)據(jù)變更進(jìn)行日志記 錄,進(jìn)行日志記錄即為輔業(yè)務(wù)的執(zhí)行,以便于根據(jù)記錄的日志進(jìn)行軌跡追蹤或業(yè)務(wù)系統(tǒng)崩 潰后業(yè)務(wù)數(shù)據(jù)可恢復(fù)。以應(yīng)用商店系統(tǒng)中安卓安裝包(Android Package,APK)上傳運(yùn)營(yíng)這 一業(yè)務(wù)為例,運(yùn)營(yíng)人員在上傳一個(gè)應(yīng)用的新版本APK至服務(wù)器時(shí),服務(wù)器需要執(zhí)行APK信息 解析、應(yīng)用新版本數(shù)據(jù)創(chuàng)建、應(yīng)用主表信息修改等主業(yè)務(wù),并且在主業(yè)務(wù)執(zhí)行的開(kāi)始與結(jié)束 時(shí)需執(zhí)行輔業(yè)務(wù)對(duì)業(yè)務(wù)數(shù)據(jù)的變化進(jìn)行記錄,即進(jìn)行日志記錄。通過(guò)所記錄的日志,不但可 以清晰的獲知APK上傳時(shí)業(yè)務(wù)數(shù)據(jù)的變更,而且一旦執(zhí)行業(yè)務(wù)的業(yè)務(wù)系統(tǒng)突然崩潰,可以根 據(jù)這些日志進(jìn)行數(shù)據(jù)恢復(fù)與清理。
[0003] 目前,在服務(wù)器執(zhí)行主業(yè)務(wù)與輔業(yè)務(wù)的過(guò)程中,將主業(yè)務(wù)與輔業(yè)務(wù)混合在同一個(gè) 線(xiàn)程上執(zhí)行,即將主業(yè)務(wù)與日志記錄混合在同一個(gè)線(xiàn)程上執(zhí)行。這種做法,一方面造成主業(yè) 務(wù)與輔業(yè)務(wù)的高度耦合,不利于服務(wù)器對(duì)應(yīng)的業(yè)務(wù)系統(tǒng)進(jìn)行后期拓展;另外一方面由于記 錄日志需要與數(shù)據(jù)庫(kù)打交道,從而延長(zhǎng)了業(yè)務(wù)處理的時(shí)長(zhǎng),損耗了服務(wù)器執(zhí)行業(yè)務(wù)的性能。

【發(fā)明內(nèi)容】

[0004] 本發(fā)明的主要目的在于提供一種業(yè)務(wù)執(zhí)行方法及服務(wù)器,旨在降低主業(yè)務(wù)與輔業(yè) 務(wù)之間的耦合性,提高服務(wù)器執(zhí)行業(yè)務(wù)的性能及易擴(kuò)展性。
[0005] 為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種服務(wù)器,所述服務(wù)器包括業(yè)務(wù)服務(wù)器,所述業(yè) 務(wù)服務(wù)器包括:
[0006] 判斷模塊,用于在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù)請(qǐng)求對(duì)應(yīng) 的主業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解;
[0007] 傳送模塊,用于若各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè)務(wù)的日志注解,則將 所述日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與所述主線(xiàn)程異步的支線(xiàn)程任務(wù) 池;
[0008] 控制模塊,用于在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池對(duì) 接收到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至 預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù)中。
[0009] 可選地,所述服務(wù)器還包括日志服務(wù)器,所述日志服務(wù)器包括:
[0010]記錄模塊,用于在偵測(cè)到所述存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有所述預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟動(dòng) 相應(yīng)的任務(wù)線(xiàn)程將所述預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)所述日志注解對(duì)應(yīng) 的日志進(jìn)行記錄。
[0011] 可選地,所述各業(yè)務(wù)層包括控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層,所述判斷模塊還用于, 先判斷所述控制層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,在所述控制層內(nèi)部 調(diào)用所述業(yè)務(wù)層時(shí),再判斷所述業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注 解;然后在所述業(yè)務(wù)層內(nèi)部調(diào)用所述數(shù)據(jù)邏輯層時(shí),判斷所述數(shù)據(jù)邏輯層對(duì)應(yīng)的執(zhí)行步驟 中是否存在執(zhí)行輔業(yè)務(wù)的日志注解。
[0012] 可選地,所述相關(guān)信息包括參數(shù)信息及結(jié)構(gòu)化查詢(xún)語(yǔ)言模版,所述預(yù)設(shè)格式包括 結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式,所述控制模塊還用于,控制所述支線(xiàn)程任務(wù)池根據(jù)接收到的所 述結(jié)構(gòu)化查詢(xún)語(yǔ)言模版,將所述參數(shù)信息封裝為結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式的數(shù)據(jù)。
[0013] 可選地,所述日志注解包括在當(dāng)前步驟執(zhí)行前插入一條日志、在當(dāng)前步驟執(zhí)行結(jié) 束后插入一條日志、在當(dāng)前步驟執(zhí)行前與執(zhí)行后各插入一條日志、在當(dāng)前步驟執(zhí)行出現(xiàn)異 常時(shí)插入一條日志及在當(dāng)前步驟需要返回結(jié)果時(shí)執(zhí)行結(jié)束后插入一條日志。
[0014] 此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種業(yè)務(wù)執(zhí)行方法,所述業(yè)務(wù)執(zhí)行方法應(yīng) 用于服務(wù)器,所述服務(wù)器包括業(yè)務(wù)服務(wù)器,所述業(yè)務(wù)包括主業(yè)務(wù)和輔業(yè)務(wù),所述業(yè)務(wù)執(zhí)行方 法包括以下步驟:
[0015] 所述業(yè)務(wù)服務(wù)器在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù)請(qǐng)求對(duì)應(yīng) 的主業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解;
[0016] 若存在,則將所述日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與所述主線(xiàn) 程異步的支線(xiàn)程任務(wù)池;
[0017] 在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池對(duì)接收到的所述日 志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù) 庫(kù)中。
[0018] 可選地,所述服務(wù)器還包括日志服務(wù)器,所述控制所述支線(xiàn)程任務(wù)池對(duì)接收到的 所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存 儲(chǔ)數(shù)據(jù)庫(kù)中之后包括:
[0019] 所述日志服務(wù)器在偵測(cè)到所述存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有所述預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟動(dòng) 相應(yīng)的任務(wù)線(xiàn)程將所述預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)所述日志注解對(duì)應(yīng) 的日志進(jìn)行記錄。
[0020] 可選地,所述各業(yè)務(wù)層包括控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層,所述依次判斷各業(yè)務(wù)層 對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解包括:
[0021 ]先判斷所述控制層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,在所述控 制層內(nèi)部調(diào)用所述業(yè)務(wù)層時(shí),再判斷所述業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的 日志注解;然后在所述業(yè)務(wù)層內(nèi)部調(diào)用所述數(shù)據(jù)邏輯層時(shí),判斷所述數(shù)據(jù)邏輯層對(duì)應(yīng)的執(zhí) 行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解。
[0022] 可選地,所述相關(guān)信息包括參數(shù)信息及結(jié)構(gòu)化查詢(xún)語(yǔ)言模版,所述預(yù)設(shè)格式包括 結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式,所述控制所述支線(xiàn)程任務(wù)池對(duì)接收到的所述日志注解的相關(guān)信 息封裝為預(yù)設(shè)格式的數(shù)據(jù)包括:
[0023] 控制所述支線(xiàn)程任務(wù)池根據(jù)接收到的所述結(jié)構(gòu)化查詢(xún)語(yǔ)言模版,將所述參數(shù)信息 封裝為結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式的數(shù)據(jù)。
[0024] 可選地,所述日志注解包括在當(dāng)前步驟執(zhí)行前插入一條日志、在當(dāng)前步驟執(zhí)行結(jié) 束后插入一條日志、在當(dāng)前步驟執(zhí)行前與執(zhí)行后各插入一條日志、在當(dāng)前步驟執(zhí)行出現(xiàn)異 常時(shí)插入一條日志及在當(dāng)前步驟需要返回結(jié)果時(shí)執(zhí)行結(jié)束后插入一條日志。
[0025] 本發(fā)明實(shí)施例業(yè)務(wù)服務(wù)器通過(guò)主線(xiàn)程執(zhí)行業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),并當(dāng)各業(yè)務(wù)層 對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè)務(wù)的日志注解時(shí),將該日志注解的相關(guān)信息傳送至支線(xiàn)程 任務(wù)池。在主線(xiàn)程執(zhí)行主業(yè)務(wù)的同時(shí),控制支線(xiàn)程任務(wù)池對(duì)日志注解的相關(guān)信息封裝為預(yù) 設(shè)格式的數(shù)據(jù)存儲(chǔ)至存儲(chǔ)數(shù)據(jù)庫(kù)中,以供日志服務(wù)器從存儲(chǔ)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)寫(xiě)入日志數(shù) 據(jù)庫(kù)中。從而可以通過(guò)將主業(yè)務(wù)與輔業(yè)務(wù)分別在主線(xiàn)程與支線(xiàn)程上執(zhí)行,并分別設(shè)置業(yè)務(wù) 服務(wù)器與日志服務(wù)器及其對(duì)應(yīng)的數(shù)據(jù)庫(kù)對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行存儲(chǔ)。相對(duì)于現(xiàn)有技術(shù)中將主業(yè) 務(wù)與輔業(yè)務(wù)混合在同一線(xiàn)程上執(zhí)行,降低了主業(yè)務(wù)與輔業(yè)務(wù)之間的耦合性,提高了服務(wù)器 執(zhí)行業(yè)務(wù)的性能及易擴(kuò)展性。
【附圖說(shuō)明】
[0026] 圖1為本發(fā)明服務(wù)器一實(shí)施例的功能模塊示意圖;
[0027] 圖2為本發(fā)明服務(wù)器執(zhí)行業(yè)務(wù)的結(jié)構(gòu)示意圖;
[0028] 圖3為本發(fā)明服務(wù)器另一實(shí)施例的功能模塊示意圖;
[0029] 圖4為本發(fā)明業(yè)務(wù)執(zhí)行方法一實(shí)施例的流程示意圖;
[0030] 圖5為本發(fā)明業(yè)務(wù)執(zhí)行方法另一實(shí)施例的流程示意圖。
[0031 ]本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
【具體實(shí)施方式】
[0032] 應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0033] 如圖1所示,示出了本發(fā)明一種服務(wù)器第一實(shí)施例。該實(shí)施例的服務(wù)器包括業(yè)務(wù)服 務(wù)器,所述業(yè)務(wù)服務(wù)器包括:
[0034] 判斷模塊10,用于在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù)請(qǐng)求對(duì) 應(yīng)的主業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解;
[0035] 本實(shí)施例中,業(yè)務(wù)執(zhí)行方法應(yīng)用于服務(wù)器,業(yè)務(wù)包括主業(yè)務(wù)和輔業(yè)務(wù),主業(yè)務(wù)為該 業(yè)務(wù)的核心業(yè)務(wù),輔業(yè)務(wù)為記錄日志等次要的業(yè)務(wù)??蛇x地,為了降低主業(yè)務(wù)和輔業(yè)務(wù)的耦 合性,主業(yè)務(wù)由主線(xiàn)程執(zhí)行,輔業(yè)務(wù)由支線(xiàn)程執(zhí)行,兩者之間互不干擾。同時(shí),將服務(wù)器劃分 為業(yè)務(wù)服務(wù)器、日志服務(wù)器等,且業(yè)務(wù)服務(wù)器對(duì)應(yīng)設(shè)置業(yè)務(wù)數(shù)據(jù)庫(kù),用于存儲(chǔ)核心業(yè)務(wù)的相 關(guān)數(shù)據(jù);日志服務(wù)器對(duì)應(yīng)設(shè)置日志數(shù)據(jù)庫(kù),用于存儲(chǔ)記錄日志相關(guān)的數(shù)據(jù)。
[0036]具體地,業(yè)務(wù)服務(wù)器偵測(cè)是否接收到客戶(hù)端的HTTP請(qǐng)求(即業(yè)務(wù)請(qǐng)求),該HTTP請(qǐng) 求是指從客戶(hù)端到服務(wù)器端的請(qǐng)求消息,包括:消息首行中,對(duì)資源的請(qǐng)求方法、資源的標(biāo) 識(shí)符及使用的協(xié)議。當(dāng)業(yè)務(wù)服務(wù)器接收到客戶(hù)端發(fā)送的業(yè)務(wù)請(qǐng)求時(shí),業(yè)務(wù)服務(wù)器通過(guò)預(yù)置 的主線(xiàn)程執(zhí)行該業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),并由判斷模塊10依次判斷控制層、業(yè)務(wù)層及數(shù)據(jù) 邏輯層等各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,形成面向切面的注 解方式。
[0037]需要說(shuō)明的是,日志注解包括在當(dāng)前步驟執(zhí)行前插入一條日志、在當(dāng)前步驟執(zhí)行 結(jié)束后插入一條日志、在當(dāng)前步驟執(zhí)行前與執(zhí)行后各插入一條日志、在當(dāng)前步驟執(zhí)行出現(xiàn) 異常時(shí)插入一條日志及在當(dāng)前步驟需要返回結(jié)果時(shí)執(zhí)行結(jié)束后插入一條日志。
[0038]每個(gè)日志注解對(duì)應(yīng)一個(gè)標(biāo)簽,可根據(jù)業(yè)務(wù)的實(shí)際需要,設(shè)置日志注解的標(biāo)簽對(duì)各 個(gè)業(yè)務(wù)層的邏輯步驟進(jìn)行選擇性標(biāo)記。例如,日志注解的標(biāo)簽包括OLogBef ore、@ LogAf ter、OLogAround、OLogThrow及OLogReturn,不同的日志注解的標(biāo)簽表達(dá)意義不同,相 同的或不同的日志注解的標(biāo)簽可疊加使用。其中,
[0039] OLogBefore表示在當(dāng)前步驟執(zhí)行前插入一條日志;
[0040] OLogAfter表示在當(dāng)前步驟執(zhí)行結(jié)束后插入一條日志;
[0041 ] OLogAround表示在當(dāng)前步驟執(zhí)行前與后各插入一條日志;
[0042] OLogThrow表示在當(dāng)前步驟執(zhí)行出現(xiàn)異常時(shí)插入一條日志;
[0043] OLogRe turn表示若當(dāng)前步驟需要返回結(jié)果,則執(zhí)行結(jié)束后會(huì)插入一條日志。
[0044] 傳送模塊20,用于若各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè)務(wù)的日志注解,則 將所述日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與所述主線(xiàn)程異步的支線(xiàn)程任 務(wù)池;
[0045] 在判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解后,若各業(yè)務(wù) 層對(duì)應(yīng)的執(zhí)行步驟中不存在執(zhí)行輔業(yè)務(wù)的日志注解,則說(shuō)明業(yè)務(wù)服務(wù)器不需要通過(guò)支線(xiàn)程 執(zhí)行輔業(yè)務(wù),即不需要執(zhí)行后續(xù)的相關(guān)步驟。若各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè) 務(wù)的日志注解,則業(yè)務(wù)服務(wù)器調(diào)用傳送模塊20將日志注解的相關(guān)信息傳送至預(yù)置的與主線(xiàn) 程異步的支線(xiàn)程任務(wù)池。日志注解的相關(guān)信息包括注解配置、參數(shù)信息、SQUStructured Query Language,結(jié)構(gòu)化查詢(xún)語(yǔ)言)模板、Cache緩存等信息。
[0046] 控制模塊30,用于在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池 對(duì)接收到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ) 至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù)中。
[0047] 業(yè)務(wù)服務(wù)器將日志注解的相關(guān)信息傳送至支線(xiàn)程任務(wù)池后,在主線(xiàn)程執(zhí)行主業(yè) 務(wù),而控制模塊30控制支線(xiàn)程執(zhí)行輔業(yè)務(wù),兩者之間是同步進(jìn)行的,且互不干擾??刂颇K 30控制任務(wù)池在接收到注解配置、參數(shù)信息、SQL模板、Cache緩存等信息后,根據(jù)反射機(jī)制 對(duì)接收到的日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),實(shí)現(xiàn)對(duì)日志注解對(duì)應(yīng)的日志進(jìn)行 組裝。該預(yù)設(shè)格式的數(shù)據(jù)可包括SQL語(yǔ)句格式的數(shù)據(jù),反射機(jī)制可定義為動(dòng)態(tài)提取日志注解 的相關(guān)信息進(jìn)行寫(xiě)日志。然后控制模塊30將預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù)中, 該存儲(chǔ)數(shù)據(jù)庫(kù)可為Redis存儲(chǔ)隊(duì)列。從而使得主線(xiàn)程專(zhuān)注于核心業(yè)務(wù)處理,無(wú)損核心業(yè)務(wù), 異步支線(xiàn)程則處理日志數(shù)據(jù),可很大程度上減少業(yè)務(wù)處理耗時(shí),提升服務(wù)器對(duì)業(yè)務(wù)處理性 能。需要說(shuō)明的是,存儲(chǔ)數(shù)據(jù)庫(kù)(即Redis存儲(chǔ)隊(duì)列)可設(shè)置于業(yè)務(wù)服務(wù)器內(nèi),也可單獨(dú)設(shè)置 存儲(chǔ)服務(wù)器對(duì)應(yīng)該存儲(chǔ)數(shù)據(jù)庫(kù),用于存儲(chǔ)預(yù)設(shè)格式的數(shù)據(jù)。
[0048] 以下進(jìn)行舉例說(shuō)明,如圖2所示,服務(wù)器包括業(yè)務(wù)服務(wù)器和日志服務(wù)器,業(yè)務(wù)服務(wù) 器對(duì)應(yīng)設(shè)置主業(yè)務(wù)數(shù)據(jù)庫(kù),日志服務(wù)器對(duì)應(yīng)設(shè)置日志存儲(chǔ)數(shù)據(jù)庫(kù),存儲(chǔ)數(shù)據(jù)庫(kù)(即Redis存 儲(chǔ)隊(duì)列)單獨(dú)設(shè)置。具體地,當(dāng)業(yè)務(wù)請(qǐng)求抵達(dá)業(yè)務(wù)服務(wù)器時(shí),首先進(jìn)入的是控制層,由主線(xiàn)程 執(zhí)行相應(yīng)的步驟,在執(zhí)行步驟的過(guò)程中判斷對(duì)應(yīng)的步驟中是否存在日志注解;若存在,則通 過(guò)面向切面的日志注解方式,獲取日志注解的相關(guān)信息,將日志注解的相關(guān)信息傳入支線(xiàn) 程任務(wù)池。當(dāng)控制層內(nèi)部涉及業(yè)務(wù)層的調(diào)用時(shí),在觸發(fā)執(zhí)行業(yè)務(wù)層相關(guān)步驟過(guò)程中,判斷業(yè) 務(wù)層對(duì)應(yīng)的步驟中是否存在日志注解,若存在,則通過(guò)面向切面的日志注解方式,獲取該日 志注解的相關(guān)信息,將日志注解的相關(guān)信息傳入支線(xiàn)程任務(wù)池。同理,當(dāng)業(yè)務(wù)層涉及數(shù)據(jù)邏 輯層的調(diào)用時(shí),對(duì)日志注解的處理方法與業(yè)務(wù)層的相同。主線(xiàn)程執(zhí)行主業(yè)務(wù)操作產(chǎn)生的數(shù) 據(jù)將存儲(chǔ)在主業(yè)務(wù)數(shù)據(jù)庫(kù)中。支線(xiàn)程任務(wù)池在接收到日志注解的相關(guān)信息后,根據(jù)反射機(jī) 制,根據(jù)相關(guān)信息進(jìn)行日志SQL語(yǔ)句格式的封裝形成SQL語(yǔ)句格式的數(shù)據(jù),并將SQL語(yǔ)句格式 的數(shù)據(jù)推入存儲(chǔ)數(shù)據(jù)庫(kù)中,該支線(xiàn)程任務(wù)池相當(dāng)于類(lèi)生產(chǎn)者。日志服務(wù)器的線(xiàn)程任務(wù)池實(shí) 時(shí)監(jiān)測(cè)存儲(chǔ)數(shù)據(jù)庫(kù)中是否存在數(shù)據(jù),線(xiàn)程任務(wù)池相當(dāng)于類(lèi)消費(fèi)者。當(dāng)存儲(chǔ)數(shù)據(jù)庫(kù)中存在數(shù) 據(jù)時(shí),則線(xiàn)程任務(wù)池啟動(dòng)相應(yīng)的數(shù)量的分支線(xiàn)程,將存儲(chǔ)數(shù)據(jù)庫(kù)中的SQL語(yǔ)句格式的數(shù)據(jù)取 出,執(zhí)行將日志寫(xiě)入日志存儲(chǔ)數(shù)據(jù)庫(kù)的操作。
[0049] 業(yè)務(wù)服務(wù)器在主線(xiàn)程執(zhí)行主業(yè)務(wù)時(shí)對(duì)三大業(yè)務(wù)層次進(jìn)行日志注解的監(jiān)控,實(shí)現(xiàn)主 業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行的解耦,日志注解對(duì)應(yīng)日志信息的封裝由支線(xiàn)程任務(wù)池處理;封裝好后 的日志信息以生產(chǎn)者模式傳入存儲(chǔ)數(shù)據(jù)庫(kù)中。日志記錄服務(wù)器以消費(fèi)者模式不間斷從存儲(chǔ) 數(shù)據(jù)庫(kù)中提取流水日志信息,寫(xiě)入獨(dú)立的日志存儲(chǔ)數(shù)據(jù)庫(kù)中。從而在使用面向切面注解方 式解耦主業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行的基礎(chǔ)上,主業(yè)務(wù)數(shù)據(jù)庫(kù)與日志存儲(chǔ)數(shù)據(jù)庫(kù)實(shí)現(xiàn)分離,可加快 主業(yè)務(wù)的處理速度;且主業(yè)務(wù)的執(zhí)行、日志信息的封裝、日志服務(wù)器讀寫(xiě)日志三者是同步執(zhí) 行,實(shí)現(xiàn)縮短執(zhí)行業(yè)務(wù)的耗時(shí),加速業(yè)務(wù)功能的整體執(zhí)行效率。
[0050] 本發(fā)明實(shí)施例業(yè)務(wù)服務(wù)器通過(guò)主線(xiàn)程執(zhí)行業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),并當(dāng)各業(yè)務(wù)層 對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè)務(wù)的日志注解時(shí),將該日志注解的相關(guān)信息傳送至支線(xiàn)程 任務(wù)池。在主線(xiàn)程執(zhí)行主業(yè)務(wù)的同時(shí),控制支線(xiàn)程任務(wù)池對(duì)日志注解的相關(guān)信息封裝為預(yù) 設(shè)格式的數(shù)據(jù)存儲(chǔ)至存儲(chǔ)數(shù)據(jù)庫(kù)中,以供日志服務(wù)器從存儲(chǔ)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)寫(xiě)入日志數(shù) 據(jù)庫(kù)中。從而可以通過(guò)將主業(yè)務(wù)與輔業(yè)務(wù)分別在主線(xiàn)程與支線(xiàn)程上執(zhí)行,并分別設(shè)置業(yè)務(wù) 服務(wù)器與日志服務(wù)器及其對(duì)應(yīng)的數(shù)據(jù)庫(kù)對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行存儲(chǔ)。相對(duì)于現(xiàn)有技術(shù)中將主業(yè) 務(wù)與輔業(yè)務(wù)混合在同一線(xiàn)程上執(zhí)行,降低了主業(yè)務(wù)與輔業(yè)務(wù)之間的耦合性,提高了服務(wù)器 執(zhí)行業(yè)務(wù)的性能及易擴(kuò)展性,達(dá)到提升用戶(hù)體驗(yàn)的目的。
[0051] 進(jìn)一步地,如圖3所示,基于上述服務(wù)器第一實(shí)施例,提出了本發(fā)明服務(wù)器第二實(shí) 施例,第二實(shí)施例與第一實(shí)施例的區(qū)別在于,該第二實(shí)施例中上述服務(wù)器還包括日志服務(wù) 器,所述日志服務(wù)器包括:
[0052]記錄模塊40,用于在偵測(cè)到所述存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有所述預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟 動(dòng)相應(yīng)的任務(wù)線(xiàn)程將所述預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)所述日志注解對(duì) 應(yīng)的日志進(jìn)行記錄。
[0053]本實(shí)施例中,上述服務(wù)器還包括日志服務(wù)器,日志服務(wù)器實(shí)時(shí)偵測(cè)存儲(chǔ)數(shù)據(jù)庫(kù)(即 Redis存儲(chǔ)隊(duì)列)中的數(shù)據(jù)。在上述業(yè)務(wù)服務(wù)器將預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù) 中后,日志服務(wù)器在偵測(cè)到存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有預(yù)設(shè)格式的數(shù)據(jù)時(shí),記錄模塊40啟動(dòng)相應(yīng) 的數(shù)量的任務(wù)線(xiàn)程將執(zhí)行將該預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)日志注解對(duì) 應(yīng)的日志進(jìn)行記錄,日志存儲(chǔ)數(shù)據(jù)庫(kù)中記錄日志的規(guī)范的一實(shí)施例可如表1所示,可以理解 的是,表1中記錄日志的規(guī)范也可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,并不限定本發(fā)明。
[0054]需要說(shuō)明的是,日志服務(wù)器的任務(wù)線(xiàn)程池中的分支線(xiàn)程數(shù)量是有限的,任務(wù)線(xiàn)程 池中任務(wù)線(xiàn)程數(shù)量的最大閾值可根據(jù)具體情況而靈活設(shè)置,日志服務(wù)器只能啟動(dòng)到最大閾 值的數(shù)量的分支線(xiàn)程。在啟動(dòng)分支線(xiàn)程的過(guò)程中,隨著存儲(chǔ)數(shù)據(jù)庫(kù)中數(shù)據(jù)的減少,相應(yīng)的分 支線(xiàn)程也會(huì)被回收。例如,當(dāng)預(yù)設(shè)格式的數(shù)據(jù)為SQL語(yǔ)句格式的數(shù)據(jù)時(shí),記錄模塊40在偵測(cè) 到儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有一個(gè)SQL語(yǔ)句格式的數(shù)據(jù)時(shí),啟動(dòng)一個(gè)分支線(xiàn)程將儲(chǔ)數(shù)據(jù)庫(kù)中的SQL語(yǔ) 句格式的數(shù)據(jù)取出,將數(shù)據(jù)保存到日志存儲(chǔ)數(shù)據(jù)庫(kù)中。
[0055]表1.日志存儲(chǔ)數(shù)據(jù)庫(kù)中記錄日志的規(guī)范
[0058]在現(xiàn)有服務(wù)器執(zhí)行業(yè)務(wù)的過(guò)程中,由于是將主業(yè)務(wù)與輔業(yè)務(wù)耦合交錯(cuò)在一起,以 串行方式執(zhí)行,因此,輔業(yè)務(wù)的執(zhí)行所消耗的時(shí)間無(wú)形中增加了整體業(yè)務(wù)的處理時(shí)長(zhǎng),損耗 了服務(wù)器對(duì)應(yīng)執(zhí)行系統(tǒng)的性能。例如,業(yè)務(wù)執(zhí)行完畢需要耗時(shí)T0為5秒,其中,主業(yè)務(wù)執(zhí)行耗 時(shí)T1為3.3秒,輔業(yè)務(wù)執(zhí)行耗時(shí)T2為1.7秒。
[0059] 而本實(shí)施例中,在使用面向切面注解方式解耦主業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行的基礎(chǔ)上,主 業(yè)務(wù)與輔業(yè)務(wù)異步執(zhí)行,實(shí)現(xiàn)縮短甚至是消除執(zhí)行輔業(yè)務(wù)的耗時(shí),加速業(yè)務(wù)功能的整體執(zhí) 行效率。例如,主業(yè)務(wù)執(zhí)行耗時(shí)T1為3.3秒,輔業(yè)務(wù)執(zhí)行耗時(shí)T2為1.7秒,兩者之間互不干擾。
[0060] 本實(shí)施例通過(guò)日志服務(wù)器提取存儲(chǔ)數(shù)據(jù)庫(kù)中的數(shù)據(jù),啟動(dòng)相應(yīng)的任務(wù)線(xiàn)程將該數(shù) 據(jù)寫(xiě)入日志數(shù)據(jù)庫(kù)中,以對(duì)日志注解對(duì)應(yīng)的日志進(jìn)行記錄。降低了主業(yè)務(wù)與輔業(yè)務(wù)之間的 耦合性,使得主線(xiàn)程專(zhuān)注于執(zhí)行主業(yè)務(wù),支線(xiàn)程則執(zhí)行輔業(yè)務(wù),減少了整體業(yè)務(wù)處理的耗 時(shí),提升服務(wù)器對(duì)業(yè)務(wù)處理性能。
[0061] 進(jìn)一步地,基于上述服務(wù)器第一實(shí)施例,提出了本發(fā)明服務(wù)器第三實(shí)施例,第三實(shí) 施例與第一實(shí)施例的區(qū)別在于,該第三實(shí)施例中上述判斷模塊10還用于,先判斷所述控制 層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,在所述控制層內(nèi)部調(diào)用所述業(yè)務(wù)層 時(shí),再判斷所述業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解;然后在所述業(yè) 務(wù)層內(nèi)部調(diào)用所述數(shù)據(jù)邏輯層時(shí),判斷所述數(shù)據(jù)邏輯層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔 業(yè)務(wù)的日志注解。
[0062] 本實(shí)施例中,各業(yè)務(wù)層包括控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層,在判斷模塊10判斷各業(yè) 務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解的過(guò)程中,當(dāng)業(yè)務(wù)請(qǐng)求達(dá)到業(yè)務(wù)服 務(wù)器時(shí),首先進(jìn)入控制層(即Controller層),并調(diào)用預(yù)置的監(jiān)控程序判斷對(duì)應(yīng)的步驟中是 否有日志注解。若存在,則通過(guò)面向切面的日志注解方式,獲取日志注解的相關(guān)信息,將注 解配置、參數(shù)信息、SQL模板、Cache緩存等日志注解的相關(guān)信息傳入與主線(xiàn)程異步的支線(xiàn)程 任務(wù)池。當(dāng)Control ler層內(nèi)部涉及業(yè)務(wù)層(即Service層)調(diào)用時(shí),在觸發(fā)Service層步驟執(zhí) 行前后,監(jiān)控程序會(huì)判斷Service層對(duì)應(yīng)的步驟中是否存在日志注解,若存在,則通過(guò)面向 切面的日志注解方式,獲取日志注解的相關(guān)信息,將注解配置、參數(shù)信息、SQL模板、Cache緩 存等日志注解的相關(guān)信息傳入支線(xiàn)程任務(wù)池。同理,當(dāng)Service層涉及數(shù)據(jù)邏輯層(即Dao 層)的調(diào)用時(shí),判斷Dao層對(duì)應(yīng)的步驟中是否存在日志注解,若存在,則通過(guò)面向切面的日志 注解方式,獲取日志注解的相關(guān)信息,將注解配置、參數(shù)信息、SQL模板、Cache緩存等日志注 解的相關(guān)信息傳入支線(xiàn)程任務(wù)池。例如,在Controller層的步驟執(zhí)行過(guò)程中,當(dāng)存在@ LogBefore注解時(shí),在當(dāng)前步驟執(zhí)行前插入一條日志。在Service層的步驟執(zhí)行過(guò)程中,當(dāng)存 在OLogThrow注解時(shí),在當(dāng)前步驟執(zhí)行出現(xiàn)異常時(shí)插入一條日志。在Dao層的步驟執(zhí)行過(guò)程 中,當(dāng)存在OLogAround注解時(shí),在當(dāng)前步驟執(zhí)行前與后各插入一條日志。
[0063] 本實(shí)施例在控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層等各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中,判斷各 業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,以將日志注解的相關(guān)信息傳送 至支線(xiàn)程任務(wù)池,實(shí)現(xiàn)了通過(guò)面向切面的日志注解方式解耦主業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行,提高了 業(yè)務(wù)服務(wù)器執(zhí)行業(yè)務(wù)的便捷性。
[0064] 進(jìn)一步地,基于上述服務(wù)器第一實(shí)施例,提出了本發(fā)明服務(wù)器第四實(shí)施例,第四實(shí) 施例與第一實(shí)施例的區(qū)別在于,該第四實(shí)施例中上述控制模塊30還用于,控制所述支線(xiàn)程 任務(wù)池根據(jù)接收到的所述SQL模版,將所述參數(shù)信息封裝為SQL語(yǔ)句格式的數(shù)據(jù)。
[0065]本實(shí)施例中,日志注解的相關(guān)信息包括注解配置、參數(shù)信息、SQL模板、Cache緩存 等信息,預(yù)設(shè)格式的數(shù)據(jù)包括SQL語(yǔ)句格式的數(shù)據(jù)。業(yè)務(wù)服務(wù)器在由主線(xiàn)程執(zhí)行主業(yè)務(wù)的同 時(shí),控制支線(xiàn)程執(zhí)行輔業(yè)務(wù)。具體地,控制模塊30控制支線(xiàn)程任務(wù)池接收到注解配置、參數(shù) 信息、SQL模板、Cache緩存等信息后,可根據(jù)接收到的注解配置獲取對(duì)應(yīng)的日志注解,根據(jù) 日志注解執(zhí)行相應(yīng)的操作。以及根據(jù)接收到的SQL模版,將參數(shù)信息封裝為SQL語(yǔ)句格式的 數(shù)據(jù)。然后將SQL語(yǔ)句格式的數(shù)據(jù)傳入存儲(chǔ)數(shù)據(jù)庫(kù)。
[0066]本實(shí)施例由支線(xiàn)程任務(wù)池根據(jù)SQL模版將相關(guān)的參數(shù)信息封裝為SQL語(yǔ)句格式的 數(shù)據(jù),使得主線(xiàn)程執(zhí)行主業(yè)務(wù)與支線(xiàn)程執(zhí)行輔任務(wù)是異步進(jìn)行的,互不干擾,可很大程度上 減少業(yè)務(wù)處理耗時(shí),提升服務(wù)器對(duì)業(yè)務(wù)處理的性能。
[0067] 對(duì)應(yīng)地,如圖4所示,提出本發(fā)明一種業(yè)務(wù)執(zhí)行方法第一實(shí)施例。該實(shí)施例的業(yè)務(wù) 執(zhí)行方法包括:
[0068] 步驟S10、所述業(yè)務(wù)服務(wù)器在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù) 請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注 解;
[0069] 本實(shí)施例中,業(yè)務(wù)執(zhí)行方法應(yīng)用于服務(wù)器,業(yè)務(wù)包括主業(yè)務(wù)和輔業(yè)務(wù),主業(yè)務(wù)為該 業(yè)務(wù)的核心業(yè)務(wù),輔業(yè)務(wù)為記錄日志等次要的業(yè)務(wù)??蛇x地,為了降低主業(yè)務(wù)和輔業(yè)務(wù)的耦 合性,主業(yè)務(wù)由主線(xiàn)程執(zhí)行,輔業(yè)務(wù)由支線(xiàn)程執(zhí)行,兩者之間互不干擾。同時(shí),將服務(wù)器劃分 為業(yè)務(wù)服務(wù)器、日志服務(wù)器等,且業(yè)務(wù)服務(wù)器對(duì)應(yīng)設(shè)置業(yè)務(wù)數(shù)據(jù)庫(kù),用于存儲(chǔ)核心業(yè)務(wù)的相 關(guān)數(shù)據(jù);日志服務(wù)器對(duì)應(yīng)設(shè)置日志數(shù)據(jù)庫(kù),用于存儲(chǔ)記錄日志相關(guān)的數(shù)據(jù)。
[0070] 具體地,業(yè)務(wù)服務(wù)器偵測(cè)是否接收到客戶(hù)端的HTTP請(qǐng)求(即業(yè)務(wù)請(qǐng)求),該HTTP請(qǐng) 求是指從客戶(hù)端到服務(wù)器端的請(qǐng)求消息,包括:消息首行中,對(duì)資源的請(qǐng)求方法、資源的標(biāo) 識(shí)符及使用的協(xié)議。當(dāng)業(yè)務(wù)服務(wù)器接收到客戶(hù)端發(fā)送的業(yè)務(wù)請(qǐng)求時(shí),業(yè)務(wù)服務(wù)器通過(guò)預(yù)置 的主線(xiàn)程執(zhí)行該業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),并依次判斷控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層等各業(yè) 務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,形成面向切面的注解方式。
[0071] 需要說(shuō)明的是,日志注解包括在當(dāng)前步驟執(zhí)行前插入一條日志、在當(dāng)前步驟執(zhí)行 結(jié)束后插入一條日志、在當(dāng)前步驟執(zhí)行前與執(zhí)行后各插入一條日志、在當(dāng)前步驟執(zhí)行出現(xiàn) 異常時(shí)插入一條日志及在當(dāng)前步驟需要返回結(jié)果時(shí)執(zhí)行結(jié)束后插入一條日志。
[0072] 每個(gè)日志注解對(duì)應(yīng)一個(gè)標(biāo)簽,可根據(jù)業(yè)務(wù)的實(shí)際需要,設(shè)置日志注解的標(biāo)簽對(duì)各 個(gè)業(yè)務(wù)層的邏輯步驟進(jìn)行選擇性標(biāo)記。例如,日志注解的標(biāo)簽包括OLogBef ore、@ LogAf ter、OLogAround、OLogThrow及OLogReturn,不同的日志注解的標(biāo)簽表達(dá)意義不同,相 同的或不同的日志注解的標(biāo)簽可疊加使用。其中,
[0073] OLogBefore表示在當(dāng)前步驟執(zhí)行前插入一條日志;
[0074] OLogAf ter表示在當(dāng)前步驟執(zhí)行結(jié)束后插入一條日志;
[0075] OLogAround表示在當(dāng)前步驟執(zhí)行前與后各插入一條日志;
[0076] OLogThrow表示在當(dāng)前步驟執(zhí)行出現(xiàn)異常時(shí)插入一條日志;
[0077] OLogRe turn表示若當(dāng)前步驟需要返回結(jié)果,則執(zhí)行結(jié)束后會(huì)插入一條日志。
[0078] 步驟S20、若存在,則將所述日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與 所述主線(xiàn)程異步的支線(xiàn)程任務(wù)池;
[0079] 在判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解后,若各業(yè)務(wù) 層對(duì)應(yīng)的執(zhí)行步驟中不存在執(zhí)行輔業(yè)務(wù)的日志注解,則說(shuō)明業(yè)務(wù)服務(wù)器不需要通過(guò)支線(xiàn)程 執(zhí)行輔業(yè)務(wù),即不需要執(zhí)行后續(xù)的相關(guān)步驟。若各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè) 務(wù)的日志注解,則業(yè)務(wù)服務(wù)器將日志注解的相關(guān)信息傳送至預(yù)置的與主線(xiàn)程異步的支線(xiàn)程 任務(wù)池。日志注解的相關(guān)信息包括注解配置、參數(shù)信息、SQL模板、Cache緩存等信息。
[0080] 步驟S30、在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池對(duì)接收到 的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的 存儲(chǔ)數(shù)據(jù)庫(kù)中。
[0081] 業(yè)務(wù)服務(wù)器將日志注解的相關(guān)信息傳送至支線(xiàn)程任務(wù)池后,在主線(xiàn)程執(zhí)行主業(yè) 務(wù),而由支線(xiàn)程執(zhí)行輔業(yè)務(wù),兩者之間是同步進(jìn)行的,且互不干擾。任務(wù)池在接收到注解配 置、參數(shù)信息、SQL模板、Cache緩存等信息后,根據(jù)反射機(jī)制對(duì)接收到的日志注解的相關(guān)信 息封裝為預(yù)設(shè)格式的數(shù)據(jù),實(shí)現(xiàn)對(duì)日志注解對(duì)應(yīng)的日志進(jìn)行組裝。該預(yù)設(shè)格式的數(shù)據(jù)可包 括SQL語(yǔ)句格式的數(shù)據(jù),反射機(jī)制可定義為動(dòng)態(tài)提取日志注解的相關(guān)信息進(jìn)行寫(xiě)日志。然后 業(yè)務(wù)服務(wù)器將預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù)中,該存儲(chǔ)數(shù)據(jù)庫(kù)可為Redis存儲(chǔ) 隊(duì)列。從而使得主線(xiàn)程專(zhuān)注于核心業(yè)務(wù)處理,無(wú)損核心業(yè)務(wù),異步支線(xiàn)程則處理日志數(shù)據(jù), 可很大程度上減少業(yè)務(wù)處理耗時(shí),提升服務(wù)器對(duì)業(yè)務(wù)處理性能。需要說(shuō)明的是,存儲(chǔ)數(shù)據(jù)庫(kù) (即Redis存儲(chǔ)隊(duì)列)可設(shè)置于業(yè)務(wù)服務(wù)器內(nèi),也可單獨(dú)設(shè)置存儲(chǔ)服務(wù)器對(duì)應(yīng)該存儲(chǔ)數(shù)據(jù)庫(kù), 用于存儲(chǔ)預(yù)設(shè)格式的數(shù)據(jù)。
[0082] 以下進(jìn)行舉例說(shuō)明,如圖2所示,服務(wù)器包括業(yè)務(wù)服務(wù)器和日志服務(wù)器,業(yè)務(wù)服務(wù) 器對(duì)應(yīng)設(shè)置主業(yè)務(wù)數(shù)據(jù)庫(kù),日志服務(wù)器對(duì)應(yīng)設(shè)置日志存儲(chǔ)數(shù)據(jù)庫(kù),存儲(chǔ)數(shù)據(jù)庫(kù)(即Redis存 儲(chǔ)隊(duì)列)單獨(dú)設(shè)置。具體地,當(dāng)業(yè)務(wù)請(qǐng)求抵達(dá)業(yè)務(wù)服務(wù)器時(shí),首先進(jìn)入的是控制層,由主線(xiàn)程 執(zhí)行相應(yīng)的步驟,在執(zhí)行步驟的過(guò)程中判斷對(duì)應(yīng)的步驟中是否存在日志注解;若存在,則通 過(guò)面向切面的日志注解方式,獲取日志注解的相關(guān)信息,將日志注解的相關(guān)信息傳入支線(xiàn) 程任務(wù)池。當(dāng)控制層內(nèi)部涉及業(yè)務(wù)層的調(diào)用時(shí),在觸發(fā)執(zhí)行業(yè)務(wù)層相關(guān)步驟過(guò)程中,判斷業(yè) 務(wù)層對(duì)應(yīng)的步驟中是否存在日志注解,若存在,則通過(guò)面向切面的日志注解方式,獲取該日 志注解的相關(guān)信息,將日志注解的相關(guān)信息傳入支線(xiàn)程任務(wù)池。同理,當(dāng)業(yè)務(wù)層涉及數(shù)據(jù)邏 輯層的調(diào)用時(shí),對(duì)日志注解的處理方法與業(yè)務(wù)層的相同。主線(xiàn)程執(zhí)行主業(yè)務(wù)操作產(chǎn)生的數(shù) 據(jù)將存儲(chǔ)在主業(yè)務(wù)數(shù)據(jù)庫(kù)中。支線(xiàn)程任務(wù)池在接收到日志注解的相關(guān)信息后,根據(jù)反射機(jī) 制,根據(jù)相關(guān)信息進(jìn)行日志SQL語(yǔ)句格式的封裝形成SQL語(yǔ)句格式的數(shù)據(jù),并將SQL語(yǔ)句格式 的數(shù)據(jù)推入存儲(chǔ)數(shù)據(jù)庫(kù)中,該支線(xiàn)程任務(wù)池相當(dāng)于類(lèi)生產(chǎn)者。日志服務(wù)器的線(xiàn)程任務(wù)池實(shí) 時(shí)監(jiān)測(cè)存儲(chǔ)數(shù)據(jù)庫(kù)中是否存在數(shù)據(jù),線(xiàn)程任務(wù)池相當(dāng)于類(lèi)消費(fèi)者。當(dāng)存儲(chǔ)數(shù)據(jù)庫(kù)中存在數(shù) 據(jù)時(shí),則線(xiàn)程任務(wù)池啟動(dòng)相應(yīng)的數(shù)量的分支線(xiàn)程,將存儲(chǔ)數(shù)據(jù)庫(kù)中的SQL語(yǔ)句格式的數(shù)據(jù)取 出,執(zhí)行將日志寫(xiě)入日志存儲(chǔ)數(shù)據(jù)庫(kù)的操作。
[0083] 業(yè)務(wù)服務(wù)器在主線(xiàn)程執(zhí)行主業(yè)務(wù)時(shí)對(duì)三大業(yè)務(wù)層次進(jìn)行日志注解的監(jiān)控,實(shí)現(xiàn)主 業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行的解耦,日志注解對(duì)應(yīng)日志信息的封裝由支線(xiàn)程任務(wù)池處理;封裝好后 的日志信息以生產(chǎn)者模式傳入存儲(chǔ)數(shù)據(jù)庫(kù)中。日志記錄服務(wù)器以消費(fèi)者模式不間斷從存儲(chǔ) 數(shù)據(jù)庫(kù)中提取流水日志信息,寫(xiě)入獨(dú)立的日志存儲(chǔ)數(shù)據(jù)庫(kù)中。從而在使用面向切面注解方 式解耦主業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行的基礎(chǔ)上,主業(yè)務(wù)數(shù)據(jù)庫(kù)與日志存儲(chǔ)數(shù)據(jù)庫(kù)實(shí)現(xiàn)分離,可加快 主業(yè)務(wù)的處理速度;且主業(yè)務(wù)的執(zhí)行、日志信息的封裝、日志服務(wù)器讀寫(xiě)日志三者是同步執(zhí) 行,實(shí)現(xiàn)縮短執(zhí)行業(yè)務(wù)的耗時(shí),加速業(yè)務(wù)功能的整體執(zhí)行效率。
[0084] 本發(fā)明實(shí)施例業(yè)務(wù)服務(wù)器通過(guò)主線(xiàn)程執(zhí)行業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主業(yè)務(wù),并當(dāng)各業(yè)務(wù)層 對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè)務(wù)的日志注解時(shí),將該日志注解的相關(guān)信息傳送至支線(xiàn)程 任務(wù)池。在主線(xiàn)程執(zhí)行主業(yè)務(wù)的同時(shí),控制支線(xiàn)程任務(wù)池對(duì)日志注解的相關(guān)信息封裝為預(yù) 設(shè)格式的數(shù)據(jù)存儲(chǔ)至存儲(chǔ)數(shù)據(jù)庫(kù)中,以供日志服務(wù)器從存儲(chǔ)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)寫(xiě)入日志數(shù) 據(jù)庫(kù)中。從而可以通過(guò)將主業(yè)務(wù)與輔業(yè)務(wù)分別在主線(xiàn)程與支線(xiàn)程上執(zhí)行,并分別設(shè)置業(yè)務(wù) 服務(wù)器與日志服務(wù)器及其對(duì)應(yīng)的數(shù)據(jù)庫(kù)對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行存儲(chǔ)。相對(duì)于現(xiàn)有技術(shù)中將主業(yè) 務(wù)與輔業(yè)務(wù)混合在同一線(xiàn)程上執(zhí)行,降低了主業(yè)務(wù)與輔業(yè)務(wù)之間的耦合性,提高了服務(wù)器 執(zhí)行業(yè)務(wù)的性能及易擴(kuò)展性,達(dá)到提升用戶(hù)體驗(yàn)的目的。
[0085] 進(jìn)一步地,如圖5所示,基于上述業(yè)務(wù)執(zhí)行方法第一實(shí)施例,提出了本發(fā)明業(yè)務(wù)執(zhí) 行方法第二實(shí)施例,第二實(shí)施例與第一實(shí)施例的區(qū)別在于,該第二實(shí)施例中上述步驟S30之 后包括:所述日志服務(wù)器在偵測(cè)到所述存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有所述預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟動(dòng) 相應(yīng)的任務(wù)線(xiàn)程將所述預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)所述日志注解對(duì)應(yīng) 的日志進(jìn)行記錄。
[0086] 本實(shí)施例中,上述服務(wù)器還包括日志服務(wù)器,日志服務(wù)器實(shí)時(shí)偵測(cè)存儲(chǔ)數(shù)據(jù)庫(kù)(即 Redis存儲(chǔ)隊(duì)列)中的數(shù)據(jù)。在上述業(yè)務(wù)服務(wù)器將預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù) 中后,日志服務(wù)器在偵測(cè)到存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟動(dòng)相應(yīng)的數(shù)量的任 務(wù)線(xiàn)程將執(zhí)行將該預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)日志注解對(duì)應(yīng)的日志進(jìn) 行記錄,日志存儲(chǔ)數(shù)據(jù)庫(kù)中記錄日志的規(guī)范的一實(shí)施例可如上述表1所示,可以理解的是, 上述表1中記錄日志的規(guī)范也可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,并不限定本發(fā)明。
[0087] 需要說(shuō)明的是,日志服務(wù)器的任務(wù)線(xiàn)程池中的分支線(xiàn)程數(shù)量是有限的,任務(wù)線(xiàn)程 池中任務(wù)線(xiàn)程數(shù)量的最大閾值可根據(jù)具體情況而靈活設(shè)置,日志服務(wù)器只能啟動(dòng)到最大閾 值的數(shù)量的分支線(xiàn)程。在啟動(dòng)分支線(xiàn)程的過(guò)程中,隨著存儲(chǔ)數(shù)據(jù)庫(kù)中數(shù)據(jù)的減少,相應(yīng)的分 支線(xiàn)程也會(huì)被回收。例如,當(dāng)預(yù)設(shè)格式的數(shù)據(jù)為SQL語(yǔ)句格式的數(shù)據(jù)時(shí),日志服務(wù)器在偵測(cè) 到儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有一個(gè)SQL語(yǔ)句格式的數(shù)據(jù)時(shí),啟動(dòng)一個(gè)分支線(xiàn)程將儲(chǔ)數(shù)據(jù)庫(kù)中的SQL語(yǔ) 句格式的數(shù)據(jù)取出,將數(shù)據(jù)保存到日志存儲(chǔ)數(shù)據(jù)庫(kù)中。
[0088] 現(xiàn)有服務(wù)器執(zhí)行業(yè)務(wù)的過(guò)程中,由于是將主業(yè)務(wù)與輔業(yè)務(wù)耦合交錯(cuò)在一起,以串 行方式執(zhí)行,因此,輔業(yè)務(wù)的執(zhí)行所消耗的時(shí)間無(wú)形中增加了整體業(yè)務(wù)的處理時(shí)長(zhǎng),損耗了 服務(wù)器對(duì)應(yīng)執(zhí)行系統(tǒng)的性能。例如,業(yè)務(wù)執(zhí)行完畢需要耗時(shí)T0為5秒,其中,主業(yè)務(wù)執(zhí)行耗時(shí) T1為3.3秒,輔業(yè)務(wù)執(zhí)行耗時(shí)T2為1.7秒。
[0089] 而本實(shí)施例中,在使用面向切面注解方式解耦主業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行的基礎(chǔ)上,主 業(yè)務(wù)與輔業(yè)務(wù)異步執(zhí)行,實(shí)現(xiàn)縮短甚至是消除執(zhí)行輔業(yè)務(wù)的耗時(shí),加速業(yè)務(wù)功能的整體執(zhí) 行效率。例如,主業(yè)務(wù)執(zhí)行耗時(shí)T1為3.3秒,輔業(yè)務(wù)執(zhí)行耗時(shí)T2為1.7秒,兩者之間互不干擾。
[0090] 本實(shí)施例通過(guò)日志服務(wù)器提取存儲(chǔ)數(shù)據(jù)庫(kù)中的數(shù)據(jù),啟動(dòng)相應(yīng)的任務(wù)線(xiàn)程將該數(shù) 據(jù)寫(xiě)入日志數(shù)據(jù)庫(kù)中,以對(duì)日志注解對(duì)應(yīng)的日志進(jìn)行記錄。降低了主業(yè)務(wù)與輔業(yè)務(wù)之間的 耦合性,使得主線(xiàn)程專(zhuān)注于執(zhí)行主業(yè)務(wù),支線(xiàn)程則執(zhí)行輔業(yè)務(wù),減少了整體業(yè)務(wù)處理的耗 時(shí),提升服務(wù)器對(duì)業(yè)務(wù)處理性能。
[0091] 進(jìn)一步地,基于上述業(yè)務(wù)執(zhí)行方法第一實(shí)施例,提出了本發(fā)明業(yè)務(wù)執(zhí)行方法第三 實(shí)施例,第三實(shí)施例與第一實(shí)施例的區(qū)別在于,該第三實(shí)施例中上述依次判斷各業(yè)務(wù)層對(duì) 應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解的步驟包括:先判斷所述控制層對(duì)應(yīng)的執(zhí) 行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,在所述控制層內(nèi)部調(diào)用所述業(yè)務(wù)層時(shí),再判斷 所述業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解;然后在所述業(yè)務(wù)層內(nèi)部調(diào) 用所述數(shù)據(jù)邏輯層時(shí),判斷所述數(shù)據(jù)邏輯層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志 注解。
[0092] 本實(shí)施例中,各業(yè)務(wù)層包括控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層,在業(yè)務(wù)服務(wù)器判斷各業(yè) 務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解的過(guò)程中,當(dāng)業(yè)務(wù)請(qǐng)求達(dá)到業(yè)務(wù)服 務(wù)器時(shí),首先進(jìn)入控制層(即Controller層),并調(diào)用預(yù)置的監(jiān)控程序判斷對(duì)應(yīng)的步驟中是 否有日志注解。若存在,則通過(guò)面向切面的日志注解方式,獲取日志注解的相關(guān)信息,將注 解配置、參數(shù)信息、SQL模板、Cache緩存等日志注解的相關(guān)信息傳入與主線(xiàn)程異步的支線(xiàn)程 任務(wù)池。當(dāng)Control ler層內(nèi)部涉及業(yè)務(wù)層(即Service層)調(diào)用時(shí),在觸發(fā)Service層步驟執(zhí) 行前后,監(jiān)控程序會(huì)判斷Service層對(duì)應(yīng)的步驟中是否存在日志注解,若存在,則通過(guò)面向 切面的日志注解方式,獲取日志注解的相關(guān)信息,將注解配置、參數(shù)信息、SQL模板、Cache緩 存等日志注解的相關(guān)信息傳入支線(xiàn)程任務(wù)池。同理,當(dāng)Service層涉及數(shù)據(jù)邏輯層(即Dao 層)的調(diào)用時(shí),判斷Dao層對(duì)應(yīng)的步驟中是否存在日志注解,若存在,則通過(guò)面向切面的日志 注解方式,獲取日志注解的相關(guān)信息,將注解配置、參數(shù)信息、SQL模板、Cache緩存等日志注 解的相關(guān)信息傳入支線(xiàn)程任務(wù)池。例如,在Controller層的步驟執(zhí)行過(guò)程中,當(dāng)存在@ LogBefore注解時(shí),在當(dāng)前步驟執(zhí)行前插入一條日志。在Service層的步驟執(zhí)行過(guò)程中,當(dāng)存 在OLogThrow注解時(shí),在當(dāng)前步驟執(zhí)行出現(xiàn)異常時(shí)插入一條日志。在Dao層的步驟執(zhí)行過(guò)程 中,當(dāng)存在OLogAround注解時(shí),在當(dāng)前步驟執(zhí)行前與后各插入一條日志。
[0093] 本實(shí)施例在控制層、業(yè)務(wù)層及數(shù)據(jù)邏輯層等各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中,判斷各 業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,以將日志注解的相關(guān)信息傳送 至支線(xiàn)程任務(wù)池,實(shí)現(xiàn)了通過(guò)面向切面的日志注解方式解耦主業(yè)務(wù)與輔業(yè)務(wù)執(zhí)行,提高了 業(yè)務(wù)服務(wù)器執(zhí)行業(yè)務(wù)的便捷性。
[0094] 進(jìn)一步地,基于上述業(yè)務(wù)執(zhí)行方法第一實(shí)施例,提出了本發(fā)明業(yè)務(wù)執(zhí)行方法第四 實(shí)施例,第四實(shí)施例與第一實(shí)施例的區(qū)別在于,該實(shí)施例中上述控制所述支線(xiàn)程任務(wù)池對(duì) 接收到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù)的步驟包括:控制所述支線(xiàn)程任 務(wù)池根據(jù)接收到的所述SQL模版,將所述參數(shù)信息封裝為SQL語(yǔ)句格式的數(shù)據(jù)。
[0095]本實(shí)施例中,日志注解的相關(guān)信息包括注解配置、參數(shù)信息、SQL模板、Cache緩存 等信息,預(yù)設(shè)格式的數(shù)據(jù)包括SQL語(yǔ)句格式的數(shù)據(jù)。業(yè)務(wù)服務(wù)器在由主線(xiàn)程執(zhí)行主業(yè)務(wù)的同 時(shí),控制支線(xiàn)程執(zhí)行輔業(yè)務(wù)。具體地,支線(xiàn)程任務(wù)池接收到注解配置、參數(shù)信息、SQL模板、 Cache緩存等信息后,可根據(jù)接收到的注解配置獲取對(duì)應(yīng)的日志注解,根據(jù)日志注解執(zhí)行相 應(yīng)的操作。以及根據(jù)接收到的SQL模版,將參數(shù)信息封裝為SQL語(yǔ)句格式的數(shù)據(jù)。然后將SQL 語(yǔ)句格式的數(shù)據(jù)傳入存儲(chǔ)數(shù)據(jù)庫(kù)。
[0096]本實(shí)施例由支線(xiàn)程任務(wù)池根據(jù)SQL模版將相關(guān)的參數(shù)信息封裝為SQL語(yǔ)句格式的 數(shù)據(jù),使得主線(xiàn)程執(zhí)行主業(yè)務(wù)與支線(xiàn)程執(zhí)行輔任務(wù)是異步進(jìn)行的,互不干擾,可很大程度上 減少業(yè)務(wù)處理耗時(shí),提升服務(wù)器對(duì)業(yè)務(wù)處理的性能。
[0097] 通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方 法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下 前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做 出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì) (如R0M/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),月艮 務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0098] 以上僅為本發(fā)明的可選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā) 明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技 術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1. 一種服務(wù)器,其特征在于,所述服務(wù)器包括業(yè)務(wù)服務(wù)器,所述業(yè)務(wù)服務(wù)器包括: 判斷模塊,用于在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主 業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解; 傳送模塊,用于若各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中存在執(zhí)行輔業(yè)務(wù)的日志注解,則將所述 日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與所述主線(xiàn)程異步的支線(xiàn)程任務(wù)池; 控制模塊,用于在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池對(duì)接收 到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置 的存儲(chǔ)數(shù)據(jù)庫(kù)中。2. 如權(quán)利要求1所述的服務(wù)器,其特征在于,所述服務(wù)器還包括日志服務(wù)器,所述日志 服務(wù)器包括: 記錄模塊,用于在偵測(cè)到所述存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有所述預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟動(dòng)相應(yīng) 的任務(wù)線(xiàn)程將所述預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)所述日志注解對(duì)應(yīng)的日 志進(jìn)行記錄。3. 如權(quán)利要求1所述的服務(wù)器,其特征在于,所述各業(yè)務(wù)層包括控制層、業(yè)務(wù)層及數(shù)據(jù) 邏輯層,所述判斷模塊還用于,先判斷所述控制層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù) 的日志注解,在所述控制層內(nèi)部調(diào)用所述業(yè)務(wù)層時(shí),再判斷所述業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中 是否存在執(zhí)行輔業(yè)務(wù)的日志注解;然后在所述業(yè)務(wù)層內(nèi)部調(diào)用所述數(shù)據(jù)邏輯層時(shí),判斷所 述數(shù)據(jù)邏輯層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解。4. 如權(quán)利要求1所述的服務(wù)器,其特征在于,所述相關(guān)信息包括參數(shù)信息及結(jié)構(gòu)化查詢(xún) 語(yǔ)言模版,所述預(yù)設(shè)格式包括結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式,所述控制模塊還用于,控制所述支 線(xiàn)程任務(wù)池根據(jù)接收到的所述結(jié)構(gòu)化查詢(xún)語(yǔ)言模版,將所述參數(shù)信息封裝為結(jié)構(gòu)化查詢(xún)語(yǔ) 言語(yǔ)句格式的數(shù)據(jù)。5. 如權(quán)利要求1-4任一項(xiàng)所述的服務(wù)器,其特征在于,所述日志注解包括在當(dāng)前步驟執(zhí) 行前插入一條日志、在當(dāng)前步驟執(zhí)行結(jié)束后插入一條日志、在當(dāng)前步驟執(zhí)行前與執(zhí)行后各 插入一條日志、在當(dāng)前步驟執(zhí)行出現(xiàn)異常時(shí)插入一條日志及在當(dāng)前步驟需要返回結(jié)果時(shí)執(zhí) 行結(jié)束后插入一條日志。6. -種業(yè)務(wù)執(zhí)行方法,其特征在于,所述業(yè)務(wù)執(zhí)行方法應(yīng)用于服務(wù)器,所述服務(wù)器包括 業(yè)務(wù)服務(wù)器,所述業(yè)務(wù)包括主業(yè)務(wù)和輔業(yè)務(wù),所述業(yè)務(wù)執(zhí)行方法包括以下步驟: 所述業(yè)務(wù)服務(wù)器在接收到業(yè)務(wù)請(qǐng)求時(shí),通過(guò)預(yù)置的主線(xiàn)程執(zhí)行所述業(yè)務(wù)請(qǐng)求對(duì)應(yīng)的主 業(yè)務(wù),依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解; 若存在,則將所述日志注解的相關(guān)信息傳送至所述業(yè)務(wù)服務(wù)器預(yù)置的與所述主線(xiàn)程異 步的支線(xiàn)程任務(wù)池; 在所述主線(xiàn)程執(zhí)行所述主業(yè)務(wù)的同時(shí),控制所述支線(xiàn)程任務(wù)池對(duì)接收到的所述日志注 解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù) 中。7. 如權(quán)利要求6所述的業(yè)務(wù)執(zhí)行方法,其特征在于,所述服務(wù)器還包括日志服務(wù)器,所 述控制所述支線(xiàn)程任務(wù)池對(duì)接收到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù),將 所述預(yù)設(shè)格式的數(shù)據(jù)存儲(chǔ)至預(yù)置的存儲(chǔ)數(shù)據(jù)庫(kù)中之后包括: 所述日志服務(wù)器在偵測(cè)到所述存儲(chǔ)數(shù)據(jù)庫(kù)中存儲(chǔ)有所述預(yù)設(shè)格式的數(shù)據(jù)時(shí),啟動(dòng)相應(yīng) 的任務(wù)線(xiàn)程將所述預(yù)設(shè)格式的數(shù)據(jù)寫(xiě)入預(yù)置的日志數(shù)據(jù)庫(kù)中,以對(duì)所述日志注解對(duì)應(yīng)的日 志進(jìn)行記錄。8. 如權(quán)利要求6所述的業(yè)務(wù)執(zhí)行方法,其特征在于,所述各業(yè)務(wù)層包括控制層、業(yè)務(wù)層 及數(shù)據(jù)邏輯層,所述依次判斷各業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解 包括: 先判斷所述控制層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解,在所述控制層 內(nèi)部調(diào)用所述業(yè)務(wù)層時(shí),再判斷所述業(yè)務(wù)層對(duì)應(yīng)的執(zhí)行步驟中是否存在執(zhí)行輔業(yè)務(wù)的日志 注解;然后在所述業(yè)務(wù)層內(nèi)部調(diào)用所述數(shù)據(jù)邏輯層時(shí),判斷所述數(shù)據(jù)邏輯層對(duì)應(yīng)的執(zhí)行步 驟中是否存在執(zhí)行輔業(yè)務(wù)的日志注解。9. 如權(quán)利要求6所述的業(yè)務(wù)執(zhí)行方法,其特征在于,所述相關(guān)信息包括參數(shù)信息及結(jié)構(gòu) 化查詢(xún)語(yǔ)言模版,所述預(yù)設(shè)格式包括結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式,所述控制所述支線(xiàn)程任務(wù) 池對(duì)接收到的所述日志注解的相關(guān)信息封裝為預(yù)設(shè)格式的數(shù)據(jù)包括: 控制所述支線(xiàn)程任務(wù)池根據(jù)接收到的所述結(jié)構(gòu)化查詢(xún)語(yǔ)言模版,將所述參數(shù)信息封裝 為結(jié)構(gòu)化查詢(xún)語(yǔ)言語(yǔ)句格式的數(shù)據(jù)。10. 如權(quán)利要求6-9任一項(xiàng)所述的業(yè)務(wù)執(zhí)行方法,其特征在于,所述日志注解包括在當(dāng) 前步驟執(zhí)行前插入一條日志、在當(dāng)前步驟執(zhí)行結(jié)束后插入一條日志、在當(dāng)前步驟執(zhí)行前與 執(zhí)行后各插入一條日志、在當(dāng)前步驟執(zhí)行出現(xiàn)異常時(shí)插入一條日志及在當(dāng)前步驟需要返回 結(jié)果時(shí)執(zhí)行結(jié)束后插入一條日志。
【文檔編號(hào)】G06F11/34GK105912455SQ201610272164
【公開(kāi)日】2016年8月31日
【申請(qǐng)日】2016年4月27日
【發(fā)明人】鄒煒
【申請(qǐng)人】努比亞技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
枝江市| 二连浩特市| 洛浦县| 寿光市| 开封市| 遂昌县| 工布江达县| 建宁县| 宁陵县| 平阴县| 靖州| 渝中区| 井冈山市| 台山市| 通江县| 平武县| 咸丰县| 寿宁县| 鄂托克旗| 宝坻区| 厦门市| 裕民县| 连城县| 黄龙县| 全椒县| 东方市| 尼木县| 明溪县| 巴彦淖尔市| 蒲江县| 新宁县| 曲阜市| 佛坪县| 顺昌县| 六枝特区| 大埔县| 仁化县| 郓城县| 垫江县| 潮州市| 宁河县|