999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SpringBoot+MongoDB的微服務日志系統的實現

2020-09-15 16:30:34閏四洋胡昌平卞德志左剛
計算機時代 2020年8期
關鍵詞:處理

閏四洋 胡昌平 卞德志 左剛

摘要:微服務的出現大大降低了Web系統的耦合度,但隨著微服務的規模不斷增大,其運行日志的數量不斷增多、內容也更加雜亂,給用戶查看日志數據帶來困難,因此對微服務的運行日志進行處理具有重要意義。文章介紹的微服務日志系統,采用SpringBoot開發,利用非關系性數據庫MongoDB作為日志系統的存儲庫,提供日志管理的相關接口,從而極大地提高了對日志數據管理和應用的效率。

關鍵詞:微服務;日志數據;查詢;SpringBoot;處理;MongoDB

中圖分類號:TP311 文獻標識碼:A 文章編號:1006-8228(2020)08-69-04

0 引言

當前微眼務的治理框架大多采用SpringCloud,如果把基于微服務架構的系統比作是一棟大樓,鋼筋混凝土結構可以說是SpringCloud,那么最基礎的磚頭瓦塊就是SpringBoot。所謂的獨立的微服務是用SpringBoot開發的,作為一套全新的框架,繼承了Spring所有的功能并青出于藍;SpringBoot的約定大于配置的核心思想,默認幫用戶做了許多基礎設置,很多SpringBoot應用只需要很少的Spring配置就可以正常運行。同時,SpringBoot也提供了很多應用集成包,支持絕大多數開源軟件,讓用戶可以以很低的成本去集成其他主流開源軟件[2]。

MongoDB是一個基于文檔模型的,支持索引、復制、事務的數據庫,是目前比較流行的非關系型數據庫[1]。微服務在運行過程中,由于用戶訪問、計劃任務等操作會產生大量日志,而MongoDB數據庫系統就非常適合管理這些日志。首先,它易擴展,靈活的文檔數據模型可以快捷直觀地處理數據;第二,它和關系型數據庫有共同點,具有豐富的數據查詢語言,其主要的聚合函數操作如表l所示;第三,它以文件形式把數據加載在內存中,假如服務器的內存資源足夠豐富,其插入和查詢效率要高于關系型數據庫[1]。

由于SpringBoot本身就封裝了MongoDB的套件,因此使用SpringBoot整合MongoDB做日志系統的開發,是相得益彰的。

1 實現原理

本系統共分為兩個模塊。一個是日志記錄模塊,是一個單獨的依賴組件,需要被微服務所引用,使用Spring的AOP及SpringBoot等技術開發,用于在微服務運行過程中,對Http請求的內容以及產生的異常等信息進行捕獲處理,并按照微服務名稱以及日期進行分類記錄到MongoDB數據庫。另一個模塊是日志管理模塊,是用SpringBoot開發的獨立的微服務,利用了MongoDB的相關特性,可提供日志數據的靈活查詢、統計分析、批量刪除、批量導出等功能接口供其他微服務調用[4]。

2 具體實現

2.1 功能模塊

2.1.1 日志記錄

日志記錄模塊在微服務內運行,主要負責在微服務運行過程中,將其產生的運行日志異步地記錄到MongoDB數據庫,其功能設計如圖l所示。

2.1.2 日志管理

日志管理模塊主要負責日志數據的管理,可對數據進行查詢、統計分析、批量刪除和導出,其功能設計如圖2所示。

2.2 軟件接口

2.2.1 寫日志接口

異步接口,其功能是將微服務產生的運行日志按照微服務名稱、產生日期進行分類,并記錄到MongoDB數據庫。

/**

* @param info日志信息

* @param level日志級別1 inf0 2 warn 3 error

*/|

public void saveLog(String info, int level);

2.2.2 查詢日志接口

提供日志數據的查詢功能,根據微服務名稱、日志產生日期篩選到指定的日志數據,并可根據具體的時間以及類型做進一步篩選,同時也可以根據日志內容做模糊查詢[3,5,6]。

/** @param appName微服務名稱* @param date檢索日期* @param time檢索時間* @param timeType檢索時間類型* @param searchStr檢索字符串*/ public ListgetAppLogs(String appName,

LocaIDate date, LocaITime time, int timeType,

String searchStr);

2.2.3 統計分析接口

可根據微服務名稱、分析類型、檢索字符串等條件,同時利用MongoDB的聚合函數等,對日志數據進行統計分析,例如按小時、天、月統計某個微服務的日志數量。

/**

* @param appName微服務名稱

* @param type分析類型

* @param searchStr檢索字符串

*/

public Object analyseAppLogs(String appName,

int type, String searchStr);

2.2.4批量刪除日志接口

根據微服務名稱及指定的日期范圍對日志進行批量刪除。

/**

* @param appName微服務名稱

* @param startDate刪除范圍的起始日期

* @param endDate刪除范圍的截止日期

*/

public void deleteAppLogs(String appName,

LocaIDate startDate, LocaIDate endDate);

2.2.5 批量導出日志接口

根據微服務名稱及指定的時間范圍對日志進行批量導出。

/**

* @param appName微服務名稱

* @param startDate導出范圍的起始時間

* @param endDate導出范圍的截止時間

*/

public void exportAppLogs(String appName, LocaIDate

startDate, LocaIDate endDate, int type);

2.3 日志表設計

為了方便日志系統將來拓展,特增加幾個備用屬性,表定義見表2。

3 項目代碼

3.1 日志記錄接口

在業務系統的實際開發中,需要對日志進行不同級別的記錄,這里提供四個級別的接口,來分別記錄不同級別的日志。

public interfaceLogger(

/★調試級別,不記錄/*,

void debug(String info);

/* info級別*/,

void info(String info);

/* warn級別 */,

void warn(String info);

/* error級別*/

void error(String info);

3.2 請求跟蹤

對于微服務接收的Http請求,可以利用AOP切面技術來處理。首先可以利用Pointcut注解來對所有的web接口進行匹配,這樣就可以在每一個請求的流轉過程中進行內容的處理并記錄日志[4]。

/*切點,匹配包路徑最后為controller的所有包下面類的所有方法+,

@Pointcut(”execution(++..controIIer*.*(..))”)

public void printPointCutController()O

/*切點,匹配所有帶有RequestMapping注解的方法*/,

@Pointcut(”@annotation(org.springframework.web.bind

.annotation.RequestMapping)“)

public void printPointCutRequestMapping()O

/* AOP切點交集,針對所有的web接口 */,

@Pointcut(”printPointCutController0&&

printPointCutRequestMapping0”)

public void printPointCut()0

/*調用web接口之前調用此方法,可以對請求的路徑、地址、

內容等進行記錄*/,

@Before(”printPointCut()”)

public void doBefore(JoinPoint joinPoint){…)

/*調用web接口之后調用此方法,可以對請求的返回結果等進行記錄*,

@AfterReturning(returning=”ret”, pointcut=”printPointCut0”)

public void doAfterReturning(Object ret){…}

/*調用web接口的過程中調用此方法,可以對請求的響應時

間等進行記錄+,

@Around(”printPointCut()”)

public Object doAround(ProceedingjoinPoint pjp){…}

3.3 異常捕獲

在工具類上使用RestControllerAdvice注解可捕獲運行過程中產生的異常,而在方法上使用ExceptionHandler注解會匹配異常。一旦捕獲異常,此工具類會按照方法定義的前后順序去匹配異常執行。

@RestControllerAdvice

public class ExceptionHandler{

r匹配空指針異常*,

@ Exception Handler(N uIIPointerException.class)

public Object handleRException(RException e){…}

/*匹配所有異常*/

@ExceptionHandler(Exception.class)

public Object handleRException(RException e){…}}

4 結束語

本文針對微服務日志規模龐大、難管理的問題,利用Spring的AOP切面技術、SpringBoot的配置管理及MongoDB數據庫實現了對分散的微服務運行日志的統一收集處理。利用Spring的切面及SpringBoot的配置[6],可以獲取到微服務的運行日志及異常信息。使用MongoDB數據庫做存儲,主要是MongoDB的易拓展、高性能等特性以及具備一定的統計分析查詢功能,可以快速地對日志進行記錄并可以靈活地查詢、統計分析等。

目前,根據上面的設計開發的日志系統已成功應用到多個微服務平臺,運行狀況良好,用戶可直觀便捷地對日志進行查詢統計,大大提高了后臺日志的利用率。

參考文獻(References):

[1]宋瑜輝.基于MongoDB存儲和分析輔助決裳系統中的海量日志[J].科技創新與應用,2019:2095-2945

[2]張驍,應時,張韜.應用軟件運行日志的收集與服務處理框架[J].計算機工程與應用,2018.10:1002-8331

[3]楊旭東,陳婷,梁瀟聆.基于web的本科畢業師生雙選系統開發設計[J].軟件,2018.39(5):182-188

[4]李天賜,余海情.基于SSH框架試題系統的設計與實現[J].軟件,2018.39(6):74-77

[5]周芷儀,陳婷,袁瑩靜,陳龍.基于JavaScript的電子時鐘效果實現[J].軟件,2019.40(3):60-64

[6]陳申平.敏捷軟件開發中的配置管理探討[J].軟件,2018.39(5):134-138

*基金項目:中國船舶集團有限公司科技創新項目(201823K)

作者簡介:閆四洋(1993-),男,江蘇連云港人,本科,工程師,主要研究方向:企業應用開發。

猜你喜歡
處理
簡析事業單位涉稅業務的會計處理
同一控制下企業合并會計處理方法的探討
大經貿(2016年9期)2016-11-16 15:36:09
科學實驗數據處理與概念構建
教育(2016年38期)2016-11-15 17:52:07
一起500 kV變壓器鐵芯多點接地故障診斷與處理①
科技資訊(2016年19期)2016-11-15 08:24:00
利用核心網網絡優化系統定位用戶投訴問題
科技資訊(2016年19期)2016-11-15 08:13:38
影響油田污水處理水質因素分析
視頻后期剪輯制作中鏡頭時長的處理
戲劇之家(2016年19期)2016-10-31 18:38:40
聲樂演唱中藝術與情感的深入處理
戲劇之家(2016年19期)2016-10-31 18:04:18
東風4B型內燃機車C6級維修后冷卻風扇不動作原因及解決辦法
橋梁軟土基礎處理應用
主站蜘蛛池模板: 一区二区自拍| 日韩欧美在线观看| 91综合色区亚洲熟妇p| 在线a视频免费观看| 亚洲三级电影在线播放 | 亚洲无码37.| 午夜福利无码一区二区| 国产97视频在线| 黄色网站在线观看无码| 亚洲无码精彩视频在线观看| 久久五月视频| 成人午夜久久| 国产在线高清一级毛片| 香蕉eeww99国产精选播放| 精品久久综合1区2区3区激情| 国产地址二永久伊甸园| 99久久精品免费看国产电影| 国产精品99r8在线观看| 国产成人综合在线视频| 亚洲国产午夜精华无码福利| 98精品全国免费观看视频| 国产精品刺激对白在线 | 91成人免费观看| 国产偷倩视频| 日本亚洲最大的色成网站www| 女高中生自慰污污网站| 免费高清自慰一区二区三区| 欧美午夜视频| 性色一区| 青草视频免费在线观看| 伊人精品视频免费在线| 亚洲日本韩在线观看| 国产乱子伦手机在线| 久久国产精品国产自线拍| 国产精品专区第1页| 国产精品成人一区二区| 色老头综合网| 亚洲熟妇AV日韩熟妇在线| 日本一本正道综合久久dvd| 一本大道无码高清| 久久一日本道色综合久久| 免费aa毛片| 午夜欧美理论2019理论| 亚洲精品在线观看91| 色国产视频| 国产综合欧美| 99精品免费在线| 91破解版在线亚洲| 国产精品黄色片| 综合天天色| 成人国产免费| 情侣午夜国产在线一区无码| 日本三区视频| 中文字幕人成人乱码亚洲电影| 中国毛片网| 成人毛片免费在线观看| 亚洲第一极品精品无码| 天天视频在线91频| 国产呦精品一区二区三区网站| 国产不卡在线看| AV片亚洲国产男人的天堂| 国产精品久久久免费视频| 国内精品九九久久久精品| 国产第一福利影院| 国产资源免费观看| 波多野结衣视频网站| 欧美无专区| 4虎影视国产在线观看精品| 国产97视频在线观看| 成人在线观看不卡| 欧美日韩综合网| 国产手机在线观看| 国产毛片片精品天天看视频| 欧美亚洲国产视频| 精品国产美女福到在线不卡f| 福利在线不卡一区| 色综合手机在线| 亚洲欧洲一区二区三区| 日韩 欧美 小说 综合网 另类| 亚洲中文字幕97久久精品少妇| 激情六月丁香婷婷| 尤物在线观看乱码|