1.微服务架构下的排查问题复杂性概述
- 两个常⻅的问题
微服务调⽤链路出现了问题怎么快速排查?
微服务调⽤链路耗时⻓怎么定位是哪个服务?
- 链路追踪系统
分布式应⽤架构虽然满⾜了应⽤横向扩展的需求,但是运维和诊断的过程变得越来越复杂,例如会遇到接⼝诊断困难、应⽤性能诊断复杂、架构分析复杂等难题,传统的监控⼯具并⽆法满⾜,分布式链路系统由此诞⽣
- 核⼼
将⼀次请求分布式调⽤,使⽤GPS定位串起来,记录每个调⽤的耗时、性能等⽇志,并通过可视化⼯具展示出来
- 注意:AlibabaCloud全家桶还没对应的链路追踪系统,我们使⽤Sleuth和zipkin
2.SpringCloud的链路追踪组件Sleuth
-
什么是Sleuth
⼀个组件,专⻔⽤于记录链路数据的开源组件
⽂档:https://spring.io/projects/spring-cloud-sleuth
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
案例
第⼀个值 ,api-gateway,spring.application.name的值
第⼆个值,ba6baabd40836aee,sleuth⽣成的⼀个ID,叫Trace ID,⽤来标识⼀条请求链路,⼀条请求链路中包含⼀个Trace ID,多个Span ID
第三个值,ba6baabd40836aee、spanid 基本的⼯作单元,获取元数据,如发送⼀个http
第四个值:true,是否要将该信息输出到zipkin服务中来收集和展示
3.可视化链路追踪系统Zipkin
-
什么是zipkin
官网:https://zipkin.io/
⼤规模分布式系统的APM⼯具(ApplicationPerformance Management),基于Google Dapper的基础实现,和sleuth结合可以提供可视化web界⾯分析调⽤链路耗时情况
-
同类产品
鹰眼(EagleEye)
CAT
twitter开源zipkin,结合sleuth
Pinpoint,运⽤JavaAgent字节码增强技术
StackDriver Trace (Google)
-
启动服务
java -jar zipkin-server-*exec.jar
访问⼊⼝:http://127.0.0.1:9411/zipkin/
zipkin组成:Collector、Storage、Restful API、WebUI组成
4.链路追踪组件Zipkin+Sleuth整合
-
sleuth收集跟踪信息通过http请求发送给zipkin server
-
zipkin server进⾏跟踪信息的存储以及提供Rest API即可
-
Zipkin UI调⽤其API接⼝进⾏数据展示默认存储是内存,可也⽤mysql 或者elasticsearch等存储
-
微服务加⼊依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
-
配置地址和采样百分⽐配置
spring:
application:
name: api-gateway
zipkin:
base-url: http://192.168.3.104:9411/ #zipkin地址
discovery-client-enabled: false #不⽤开启服务发现
sleuth:
sampler:
probability: 1.0 #采样百分⽐
默认为0.1,即10%,这⾥配置1,是记录全部的sleuth信息,是为了收集到更多的数据(仅供测试⽤)在分布式系统中,过于频繁的采样会影响系统性能,所以这⾥配
置需要采⽤⼀个合适的值
5.链路追踪系统Zipkin持久化配置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)