Spring Cloud Sleuth+Zipkin

二、SpringBoot 2.X整合Sleuth+Zipkin

在微服务系统中,各个服务之间的调用关系比较复杂。一个 HTTP 请求可能会调用多个不同的微服务来处理,在调用过程中可能因为某个服务异常(网络延迟过高或发送错误)导致请求失败,所有需要有服务追踪来监控,方便快速定位问题点。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案。
1、简介
Zipkin(是Twitter 的一个开源项目基于GoogleDapper实现) ,可以使用Zipkin来收集各个服务器请求链路的跟踪数据,并将收集的数据提供的REST API 接口来辅助查询,通过跟踪数据来实现分布式系统的监控,除了面向开发的 API 接口之外,它还提供了方便的 UI 组件来帮助我们直观地搜索跟踪信息和分析请求链路明细。Zipkin分为服务端 Server,客户端 Client,客户端是指各个微服务应用。
2、搭建Zipkin服务端    
    SpringBoot 2.0 版本之后,官方已不推荐自己搭建定制,而是直接提供了编译好的 jar包
    JAR方式:下载最新JAR直接部署,参考地址 https://github.com/openzipkin/zipkin
    Linux
    curl -sSL https://zipkin.io/quickstart.sh | bash -s
    java -jar zipkin.jar
    Windocs
    https://zipkin.io/pages/quickstart.html官网下载zipkin-server-2.12.0-exec.jar包
    java -jar zipkin-server-2.12.0-exec.jar
    Docker: 使用Docker部署,参考地址 https://github.com/openzipkin/docker-zipkin
    docker run -d -p 9411:9411 openzipkin/zipkin
通过java -jar zipkin-server-2.12.0-exec.jar启动,访问http://127.0.0.1:9411

3、搭建Zipkin客户端(微服务应用)
引入依赖pom.xml

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

配置文件application.yml

server:
  ###Base服务端口号
  port: 8201
    
spring: 
  application: 
  ###服务别名--服务注册到注册中心名称
    name: its-spb-base-servers
  ###zipkin服务追踪
  zipkin: 
    base-url: http://127.0.0.1:9411/
  ###采样比例默认的为 0.1可设置介于 0到 1之间,1则表示全部采集
  sleuth:
    sampler:
      probability: 1.0

验证依次启动its-spb-eureka(注册中心)/its-spb-base-servers(微服务应用)/its-spb-order-servers(微服务应用)/its-spb-zipkin(服务追踪)

第一个值:service1,它记录了应用的名称
第二个值:f2241d02f2308555,是 Spring Cloud Sleuth 生成的一个 ID,称为 Trace ID,它用来标识一条请求链路。一条请求链路中包含一个 Trace ID,多个 Span ID。
第三个值:f2241d02f2308555,是 Spring Cloud Sleuth 生成的另外一个 ID,称为 Span ID,它表示一个基本的工作单元,比如发送一个 HTTP 请求。
第四个值:true,它表示是否要将该信息输出到 Zipkin Server 中来收集和展示。
如果服务名下并没有看到我们的应用,这是因为 Spring CloudSleuth采用了抽样收集的方式来为跟踪信息打上收集标记,也就是上面看到的第四个值。为什么要使用抽样收集呢?理论上应该是收集的跟踪信息越多越好,
可以更好的反映出系统的实际运行情况,但是在高并发的分布式系统运行时,大量请求调用会产生海量的跟踪日志信息,如果过多的收集,会对系统性能造成一定的影响,所以 Spring Cloud Sleuth 采用了抽样收集的方式。
既然如此,那么我们就需要把上面第四个值改为 true,开发过程中,我们一般都是收集全部信息。
Sleuth默认采样算法的实现是Reservoir sampling(实现类是PercentageBasedSampler)默认的采样比例为: 0.1即10%
可以通过 spring.sleuth.sampler.probability 来设置,所设置的值介于0到1之间(1则表示全部采集)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值