如何使用SpringCloud跟踪分布式链路

如何使用SpringCloud跟踪分布式链路?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的西乡网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

程序测试错误追责

我举个例子,我现在要做一个电商项目,项目里面有一个购买模块,那我这边可能要执行一个代码,比如减库存之类的东西,那我两个服务不就是要相互调用嘛,我自身是一个服务,我现在要调用减库存这个服务;

你调用它,你知道它一定能执行成功吗?肯定是不一定;

比如说,我现在要执行一个减库存的代码,我调用这个方法会进行库存的一个更改,这个库存减少成功还好,万一要是失败就会出现一个问题就是,做前端的来调用你,但是你出错了,这时你也不知道你这个减库存到底有没有执行成功,两个人就会相互排斥问题,不知道到底是你前端调用的问题,还是我后端代码写的有毛病,反正测试工程师就只知道库存没有减;

解决方案就是,记日志;

记录日志

首先,springboot里面有集成好的日志组件,我们仅需拿来用即可,接下来,我将会分几个步骤来教大家如何在记日志;

1.首先我们打开一个编写好的子项目(服务),在yml配置文件中进行一些简单的配置?:

logging:
  path: 日志打印输出路径
  level:
  该服务的全包名: #级别【info级别最好,我用的是debug级别】

如何使用SpringCloud跟踪分布式链路

2.在我们的Controllerc引入Logge接口?:

 public static Logger logger = LoggerFactory.getLogger(#当前类);

注意:引入Logger时,它有许多个记日志的版本,java统一了成了slf4j,所以导入包的时候一定注意不要导错!

如何使用SpringCloud跟踪分布式链路

2.导入成功并且后需要把当前类加入到日志中?:

如何使用SpringCloud跟踪分布式链路

如何使用SpringCloud跟踪分布式链路

3.开始调用日志

在控制层接口中调用日志

logger.debug("执行了查询,开始调用project-solr的服务");

如何使用SpringCloud跟踪分布式链路

这里的话就简单的记录一下日志,将来方便追错;

4.运行程序,查看是日志是否能被记录

首先运行注册中心,再启动自己写好的服务朝注册中心注册一下

查看注册中心:

如何使用SpringCloud跟踪分布式链路

发现solr注册进来了,注册中心我这边用的是集群负载均衡,三个注册中心相互注册,在后面可以清楚的看到我另外三个注册中心的端口号

5.调用solr服务,查看日志是否输出并打印?:

如何使用SpringCloud跟踪分布式链路

点击去查看一下?:

如何使用SpringCloud跟踪分布式链路

总中我我们可以清楚的看到,从开始,到结束,就是中间打印了一些其他的东西,这个先不去深究它;

小结

在工作中,别人的代码到底能不能执行成功,你是保证不了的,唯有记日志,来证明自己的代码没有问题,从上我选择在调用前打印日志,在调用后也打印了日志,说明我这个接口没有问题,但是,你调用你的solr服务,出现了问题,那是你的问题,跟我调用无关,我正常调用没问题,至于后面库存没有减少,那,就是你的问题;

给solr添加日志记录

刚才我是以调用对方服务的方式来记录日志,保证自己正常调用,那么,我们solr也应该记录一下日志,因为,它也保证不了调用solr的人,是否存在调用问题,所以,我要保证我solr正常执行,为了证明我是没有问题的,所以我们也给solr这个服务记录日志;

很简单,跟上面的一样,我直接复制粘贴即可,但是这次稍微的改一下;

logging:
  path: C:\Users\30901\Desktop\log\project_solr
  level:
  com.lh.project.solr: info

注意:级别前面的包名需要更改成当前服务的包名,这次我在日志输出路径中多加了一个当前服务名,这样打印出的日志就能分别出谁打印出来的;

如何使用SpringCloud跟踪分布式链路

注意,日志文件是自动生成出来的;

我们把项目跑起来,试试,看看日志能不能被成功输出?:

如何使用SpringCloud跟踪分布式链路

我们也可以清楚的看见,日志信息在这里打印的非常清楚;

这个是它自动生成的日志文件:

如何使用SpringCloud跟踪分布式链路

分布式链路追踪

首先需要引入依赖:

compile 'org.springframework.cloud:spring-cloud-starter-sleuth'

如何使用SpringCloud跟踪分布式链路

根据以上的例子,两个服务均需要用到用到分布式链路跟踪,所以我们两个两个都配置一下;

加完所需依赖后,我们再进行日志的输出,看看有什么区别?:

如何使用SpringCloud跟踪分布式链路

区别就能发现,前面多出来了一串乱码,跟上面对比,就能看出来,那么具体是什么意思呢?

首先打印出来的日志有两个,一个是调用方,一个是被调用方,我们打开这两个日志来看一下:

如何使用SpringCloud跟踪分布式链路

这个时候,假设,以上一个请求,其中一个有问题,那么,你就可以把这个有问题的这个乱码跟被调用方里面的日志进行匹配,如果查询到了,那么说明这两个日志,对应的是同一个请求,咱们就可以通过这个乱码就可以判断,这两个服务调用的到底是不是属于同一个请求;

这个乱码分成三段:

如何使用SpringCloud跟踪分布式链路

关于如何使用SpringCloud跟踪分布式链路问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享名称:如何使用SpringCloud跟踪分布式链路
本文链接:http://ybzwz.com/article/gijgje.html