基于SpringBoot+MongoDB的微服务日志系统的实现

基于SpringBoot+MongoDB的微服务日志系统的实现

摘要:微服务的出现大大降低了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,

“张承辉博客” 基于SpringBoot+MongoDB的微服务日志系统的实现 https://www.zhangchenghui.com/81050

(0)
上一篇 2022年4月25日 下午3:31
下一篇 2022年4月25日 下午3:31

相关推荐

  • 2022英国艺术类院校排名 英国最好的艺术类大学

    英国艺术类最好的大学院校有:牛津大学、格拉斯大学、伦敦大学学院、兰卡斯特大学、纽卡斯尔大学等。 英国最好的艺术类大学排名1 University of Oxford牛津大学 2 U…

    问答 1天前
    004
  • 蝶变志愿模拟填报流程是什么

    很多同学想知道蝶变志愿模拟填报流程是什么,以下是一些相关信息的整理,希望能对同学们有所帮助。 蝶变志愿模拟填报流程第一步,圈定范围 在蝶变志愿里选择你的高考地区,科目,分数,就可以…

    问答 2022年6月8日
    002
  • 微信聊天最简短最深情的一句话

    1、不要抱怨,抱我。不管我本人多么平庸,我总觉得对你的爱很美。你是非常可爱的人,真应该遇到最好的人,我也真希望我就是。 2、这世上真话本就不多,一位女子的脸红胜过一大段对白。我一直…

    问答 2022年4月21日
    005
  • 期中物理状元:我对学习物理的一点体会

    期中物理状元:我对学习物理的一点体会   期中考试结束了,我在物理这门学科上取得了不错的成绩,受老师的委托,在这里就我在学习物理这方面的经验与心得进行一个简单的介绍,以求对大家有所…

    问答 2022年4月18日
    005
  • 教师读书心得10篇

    品味完一本名著后,大家一定对生活有了新的感悟和看法,何不静下心来写写读书心得呢?为了让您不再为写读书心得头疼,以下是小编为大家收集的教师的读书心得10篇,欢迎大家阅读。 教师读书心…

    问答 2022年4月18日
    001
  • 观《开心闯龙年》有感400字 – 观后感范文

      这几天,我在家里观看了一部电影,名字叫《喜羊羊与灰太狼之开心闯龙年》。   它主要讲了喜羊羊和它的伙伴们,还有灰太狼一家去了一个神秘的龙世界,找到喜羊羊的父母。他们在路上遇到了…

    问答 2022年4月18日
    001

发表评论

登录后才能评论