基于SpringBoot的日志集中搜集、微服务使用及切面的使用

优采云 发布时间: 2020-08-13 12:01

  在先前文章中,我们介绍了SpringBoot的使用,详见:

  一篇文章全面了解SpringBoot

  ,通过SpringBoot我们可以很方便的开发后台Restful插口,前端代码可通过调用那些插口调阅动态数据,本文主要介绍基于SpringBoot常常面临到的一些其他常见问题做个整理;

  在一篇文章全面了解SpringBoot这篇文章中我们解决了:

  配置文件如何管理,不同的环境配置文件如何分辨(如QA,生产和开发环境);

  项目怎样做集成测试和单元测试:不光单元测试,还包括模拟用户的真实操作;

  修改Java代码的时侯帮我手动重启服务器,以便能实时反映更改情况;

  修改静态页面代码,网页无需自动刷新,帮我手动LiveReload;

  部署打包如何实现一键布署?

  项目怎样做到纵向扩充,即如何保持各个Web项目sessionid同步?

  发布的项目怎么做监控,怎么无缝扩充监控指标?

  项目中怎样剥离“脚本类”代码,比如公式定义等?

  Web安全是否每次须要我自己实现,比如处理登入,登出,URI保护等?

  繁杂的数据库操作我是否一定要写一大堆BO,VO,Service,DAO?

  JavaBean中一定要写这么多Getter和Setter么?

  maven中的依赖引入与排除,版本冲突是否非得我自己整理和排查?

  项目进行中的数据库脚本管理如何管理?防止变更错误,跨数据库的脚本管理呢?

  这篇文章我们进一步解决:

  SpringBoot启用log4j记录日志,并发日志发往log4j日志中心(集中化日志管理与监控);

  SpringBoot调用微服务Dubbo;

  SpringBoot中使用切面:接口调用统计,API权限分级等;

  日志集中式管理与监控

  首先我们须要做一个Socket的服务端,基于Netty自定义榆林包体的TCP程序设计我们会在下一篇介绍并给出源码,这里记为logger-server程序,项目中,只须要引入client的maven jar即可,自定义的Log4j的Appender的实现较为简单,本文不做介绍,这一切都就绪后,在项目只须要引入maven和配置即可实现将log发往日志中心:

  添加maven依赖

  在资源目录下新建:

  在代码任意处借助log4j写入日志,如:

  至此,通过nettyIOAppender ref的Logger就会将日志发往日志中心,在那里你可以得到那个类,哪个方式,来自那个用户做了哪些处理,可以搜集到用户使用的浏览器信息,来源IP,访问来源等有效信息,可用于插口统计,用户行为搜集,排错跟踪等,下图是Netty服务端收到的消息:

  Dubbo微服务的使用

  在我们设计和实现后台构架时,我们会把公共的服务弄成微服务便于所有系统可以共享,比如在一个电商系统中,我们会把商品分类,商品详情信息,用户等信息封装成微服务,这样网站,客服系统,统计统计,CRM系统等会可以调用那些微服务,减少重复开发,而且微服务框架通常还提供负载均衡,版本控制,限流等众*敏*感*词*;

  Alibaba的团队针对Dubbo的使用专门提供了SpringBoot的maven依赖工程:

  在我们编撰后台服务时,如需调用微服务(消费方),我们只须要在Controller里将微服务的Service依赖注入进来即可:

  并在中加入配置:

  Aspect切面的使用

  在我们项目开发中,我们常常会遇到统计插口调用次数以及API分级调用(有些插口须要特定API级别能够调用)的功能,这时我们就可以使用到切面,使用步骤如下:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线