什么是Zipkin?

它是一个分布式链路跟踪系统它可以帮助收集时间数据,每个应用程序向Zipkin报告定时数据,Zipkin UI呈现了一个依赖图表来展示多少跟踪请求经过了每个应用程序;如果想解决延迟问题,可以过滤或者排序所有的跟踪请求,并且可以查看每个跟踪请求占总跟踪时间的百分比。

什么要使用它?

随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构和容器技术的兴起,看似简单的一个应用,后台可能有几十个甚至几百个服务在支撑;一个前端的请求可能需要多次的服务调用最后才能完成;当请求变慢或者不可用时,我们无法得知是哪个后台服务引起的,这时就需要解决如何快速定位服务故障点,Zipkin分布式跟踪系统就能很好的解决这样的问题。

简单的说zipkin就可以实现,那个服务有问题,服务于服务之间的依赖关系,运行时间等等

继续上篇说,附链接:https://www.cnblogs.com/zgwjava/p/10447542.html

创建zipkin模块

Gradle

compile 'io.zipkin.java:zipkin-server'
compile 'io.zipkin.java:zipkin-autoconfigure-ui'

yml

server:
port: 9999
spring:
application:
name: zipkin-server

然后再看下启动类

package org.gw.zipkin.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin.server.EnableZipkinServer; /**
* @DATA 2019-02-28 00:17
* @Author 张国伟 WeChat:17630376104
* @Description TODO
*/ @EnableZipkinServer #次注解为标注zipkin服务端
@SpringBootApplication
public class ZipkinServerProvider { public static void main(String[] args) {
SpringApplication.run(ZipkinServerProvider.class, args);
}
}

我们运行项目 http://localhost:9999/zipkin/

可以看到zipkin服务端已经启动,在这上面可以查看服务间调用记录,要想实现链路追踪必须服务之间有依赖关系也就是调用关系,有RestTemplate在上一章我们已经说过服务间如何调用。

我们再来看下客户端如何配置

#eureka客户端
server:
port: 10001
spring:
application:
name: project-shopping-mall
thymeleaf:
prefix: classpath:/templates/
cache: false
zipkin:
base-url: http://localhost:9999/
sleuth:
sampler:
percentage: 1.0 #0.1-1.0链路跟踪的数据上传的概率,百分比
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka/
instance:
prefer-ip-address: true
logging:
path: /Users/mac/logs/shop
level:
org.gw.shopping.mai: info

我在controller这里加上了日志

我们看下控制台,为了测试我刷新了好几次,调用了好几次

可以看到有两个id,和一个true,true为是否想zikpin上传数据,接下来我们看下zipkin服务端

可以看到刚刚服务之间的调用信息,我们点击某一个

可以清晰的看到服务的信息,相应时间,当然也可以通过控制台的信息来查找服务调用信息,我们再来看下依赖

清晰的看到那个服务调用了那个服务。

并发量大的时候普通的日志处理不了这么多信息,如何出异常了很难判断到底是那个服务,那一边出了问题,所以zipkin链路解决这个问题,任何问题清晰可见。

最后再看下服务客户端gradle添加的依赖,上面忘说了

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

客户端必须添加这两个依赖

下一章健康检查,感谢支持!!!

SpringCloud-sleuth-zipkin链路追踪的更多相关文章

  1. 微服务SpringCloud之zipkin链路追踪

    随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位 ...

  2. SpringCloud:Zipkin链路追踪,并将数据写入mysql

    1.zipkin server 1.1.新建Springboot项目,zinkin 1.2.添加依赖 <dependency> <groupId>io.zipkin.java& ...

  3. SpringCloud Sleuth + Zipkin 实现链路追踪

    一.Sleuth介绍   为什么要使用微服务跟踪? 它解决了什么问题? 1.微服务的现状?   随着业务的发展,单体架构变为微服务架构,并且系统规模也变得越来越大,各微服务间的调用关系也变得越来越复杂 ...

  4. 微服务 Zipkin 链路追踪原理(图文详解)

    一个看起来很简单的应用,可能需要数十或数百个服务来支撑,一个请求就要多次服务调用. 当请求变慢.或者不能使用时,我们是不知道是哪个后台服务引起的. 这时,我们使用 Zipkin 就能解决这个问题. 由 ...

  5. springCloud学习-服务链路追踪(Spring Cloud Sleuth)

    1.简介 Spring Cloud Sleuth 是 Spring Cloud 的一个组件,它的主要功能是在分布式系统中提供服务链路追踪的解决方案. 常见的链路追踪组件有 Google 的 Dappe ...

  6. Spring Cloud Sleuth服务链路追踪(zipkin)(转)

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案, ...

  7. Spring Cloud(十三):Spring Cloud Sleuth服务链路追踪(zipkin)(转)

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案, ...

  8. springcloud -- sleuth+zipkin整合rabbitMQ详解

    为什么使用RabbitMQ? 我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路 ...

  9. Spring Cloud Sleuth + Zipkin 链路监控

    原文:https://blog.csdn.net/hubo_88/article/details/80878632 在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变 ...

  10. zipkin链路追踪

    zipkin架构说明 zipkin api 我想自己搞一些满足zipkin格式的日志,入库es,然后让zipkin仅做展示 1.需要了解zipkin组件 2,学习zipkin设计原理,何时何地产生日志 ...

随机推荐

  1. 【转】AB实验设计思路及实验落地

    这篇文章会讨论: 在什么情况下需要做 AB 实验 从产品/交互角度,如何设计一个实验 前端工程师如何打点 如何统计数据,并保证数据准确可信 如何分析实验数据,有哪些数据需要重点关注 附:如何搭建前端实 ...

  2. Python和Python解释器

    目录 Python介绍(了解) Python解释器发展史(了解) Python解释器(了解) CPython IPython PyPy Jython IronPython 安装Python解释器(掌握 ...

  3. Spring Boot 2.0 图文教程 | 集成邮件发送功能

    文章首发自个人微信公众号: 小哈学Java 个人网站: https://www.exception.site/springboot/spring-boots-send-mail 大家好,后续会间断地奉 ...

  4. Python中pathlib模块

    Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...

  5. PostGreSQL(1)-源码安装

    目录 简述 一.格式化磁盘 二.源码安装 PostGreSql 1. 安装 readline-devel 2. 安装 PostGresql 3. 设置环境变量 三. 初始化 1. 设置运行用户 2. ...

  6. okio:定义简短高效

    欢迎关注公众号,第一时间获取最新文章: 本篇目录 一.前言 okio是大名鼎鼎的square公司开发出来的,其是okhttp的底层io操作库,既然已经有java原生的io库为什么还要自己费尽开发一套呢 ...

  7. C#获取页面上的Html

    //根据Url地址得到网页的html源码 public static string GetWebContent(string Url) { string strResult = "" ...

  8. 什么是HTML?

    在了解概念之前,先做以下操作,在桌面新建一个txt文件,然后在txt文件中输入:“Hello World”,保存该文件并将其后缀名改为.html,然后双击打开,你就能在浏览器上看到页面显示“Hello ...

  9. gitbook 入门教程之 gitbook 简介

    gitBook 是一个基于node.js的命令行工具,使用 github/git 和 markdown/asciiDoc 构建精美的电子书. gitbook 支持输出静态网页和电子书等多种格式,其中默 ...

  10. Windows系统ping本地虚拟机~

    虚拟机左上角[编辑]>>>[虚拟网络编辑器] [VMnet1]>>>子网ip:192.168.124.0 子网掩码:255.255.255.0 [VMnet8]&g ...