博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud系列:利用SpringCloud Sleuth和Zipkin实现分布式服务调用链跟踪(一)
阅读量:6256 次
发布时间:2019-06-22

本文共 2272 字,大约阅读时间需要 7 分钟。

hot3.png

一、概述

在单体应用时代,接口缓慢能够被迅速定位和发现,而随着分布式微服务的流行,服务之间的调用关系越来越复杂,错中复杂的调用关系使得我们想找到某一个接口的效率缓慢变得非常困难,而分布式服务调用跟踪组件就解决了这个 问题。Sleuth是SprinCloud在分布式系统中提供追踪解决方案,zipkin是基于Google Dapper的分布式链路调用监控系统。先介绍下有关的专业术语,

  • Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址) 
  • Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式服务工程,你可能需要创建一个trace。
  • Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束  

               cs   - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始

               sr   - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网                          络延迟

               ss  - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服                        务端需要的处理请求时间

              cr  - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳                     便可得到客户端从服务端获取回复的所有所需时间

二、功能开发实现

 1.创建zipkin-server服务

     zipkin-server主要作用是使用ZipkinServer 的功能,收集调用数据链,并提供展示页面供用户使用。创建普通的SpringBoot项目zipkin-server,在pom.xml文件中增加如下依赖

io.zipkin.java
zipkin-server
io.zipkin.java
zipkin-autoconfigure-ui
runtime
org.springframework.boot
spring-boot-starter-test
test

在ZipKinServerApplication主方法上添加@EnableZipkinServer注解,启用ZipkinServer功能。

@EnableZipkinServer@SpringBootApplicationpublic class ZipkinServerApplication {   public static void main(String[] args) {      SpringApplication.run(ZipkinServerApplication.class, args);   }}

修改配置文件

spring.application.name=zipkin-serverserver.port=9107

启动服务,可以看到链路监控页面,此时没有收集到任何链路调用记录。

114522_JZTC_2376417.png

2.给原先服务增加链路追踪支持

   给eureka-provider、eureka-consumer、gateway三个服务增加如下依赖

org.springframework.cloud
spring-cloud-starter-zipkin

该依赖内部包含了两个依赖,等于同时引入了spring-cloud-starter-sleuthspring-cloud-sleuth-zipkin两个依赖。

修改配置文件

#配置zipkin#指定zipkin的服务端,用于发送链路调用报告spring.zipkin.base-url=http://10.17.5.50:9107# 采样率,值为[0,1]之间的任意实数,这里代表100%采集报告。spring.sleuth.sampler.percentage=1

重新部署启动服务,调用zuul接口,观察zipkin-server页面,生成调用链路

154221_HsOp_2376417.png

154311_Rr15_2376417.png

154358_EYcu_2376417.png

三、小结

   本文还只是基本的链路分析,如果生产上使用,还需要把监控内容持久化、把监控内容发送从http模式切换到MQ等改造,这些内容下次再详细介绍。

   码云地址:https://gitee.com/gengkangkang/springcloud.git

    github地址:https://github.com/gengkangkang/springcloud.git

 

 

 

 

 

转载于:https://my.oschina.net/gengkangkang/blog/1590478

你可能感兴趣的文章
Go Little Book - 关于本书
查看>>
Java 反斜杠如何转义的问题
查看>>
关于POJO类
查看>>
inline函数
查看>>
mysql 5.7 修改初始密码
查看>>
修改Mac OS X的hosts文件
查看>>
表单提交时的非法性有效性验证
查看>>
李开复:21世纪最需要的7种人才
查看>>
opencsv
查看>>
单词匹配二
查看>>
关于代码生成器的理解
查看>>
Spiral Matrix
查看>>
shell 日志
查看>>
Oracle/Hive/Impala SQL比较
查看>>
文章自动生成目录及侧边栏目录滚动特效的插件toc-helper
查看>>
对于Python字符编码的理解
查看>>
JBoss 系列二十五:在Red Hat PaaS OpenShift上运行jBPM Approval Demo
查看>>
前端学习资料
查看>>
处理支付只能输入两位小数
查看>>
操作系统历史
查看>>