热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

SpringCloud分布式链路跟踪的方法

这篇文章主要介绍了SpringCloud分布式链路跟踪的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

注:作者使用IDEA + Gradle

注:需要有一定的java SpringBoot and SSM+Springcloud基础

程序测试错误追责

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

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

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

解决方案就是,记日志;

记录日志

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

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

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

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

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

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

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

3.开始调用日志

在控制层接口中调用日志

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

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

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

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

查看注册中心:

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

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

点击去查看一下👇:

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

小结

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

给solr添加日志记录

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

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

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

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

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

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

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

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

分布式链路追踪

首先需要引入依赖:

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

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

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

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

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

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

这个乱码分成三段:

第一高段请求方与调用方式一样的,因为它们属于同一个链路上,所以一样,因此,我们可以通过第一段代码,来跟踪;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 抖音服务器带宽有多大,才能供上亿人同时刷?
    最近看到一个有意思的提问:抖音服务器带宽有多大,为什么能够供那么多人同时刷?今天来给大家科普一下。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
  • pm2常用的命令用法介绍pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
author-avatar
陈怡伶翰纬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有