10.SpringCloudSleuth

一.简介

微服务之间通过网络通信,服务之间的调用形成调用链路。在服务调用链上如何快速定位服务业务处理速度变慢、服务变为环形调用等。

SpringCloud提供了Sleuth 可以实现微服务的调用跟踪,形成调用线路。Sleuth 采集调用链路上的信息以Span描述,一个Span包含4个部分:

-CS(Client Sent 客户端发送):客户端发起请求,表示请求开始;
-SR(Server Received 服务器接收):服务器获取客户端请求,SR-CS 表示网络延迟;
-SS(Server Sent 服务端发送):服务端处理完成响应客户端,SS-SR 表示服务端处理时间;
-CR(Client Received 客户端接收):span 接收标志,表示客户端收到服务端响应。

Zipkin 是Twitter开源的分布式跟踪系统,Zipkin提供了可视化分析工具。

二.实现

1.新建zipkin-srever Server模块:增加如下依赖

<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-server</artifactId>
    <version>2.12.3</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
        </exclusion>
    </exclusions>
</dependency>


<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-ui</artifactId>
    <version>2.12.3</version>
</dependency>

2.配置zipkin-server

server:
  port: 8080
management:
  metrics:
    web:
      server:
        auto-time-requests: false    # 否则可能会失败

3.@EnableZipkinServer 开启zipkin Server

package com.vincent.zipkin;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin.server.EnableZipkinServer;

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

4.启动zipkin-server 并访问 http://localhost:8080
在这里插入图片描述
5.需要跟踪的服务中添加依赖:

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

service-user / consumer-user添加spring-cloud-starter-zipkin,并在配置文件中配置如下:

spring:
  zipkin:
    # 配置zipkin 收集地址
    base-url: http://localhost:8080
  sleuth:
    sampler:
      # 指定请求采用百分比(0-1),1表示所有请求都采样
      percentage: 1.0 

5.启动各微服务实例,并访问 http://localhost:8030/getUserById?id=1产生数据,zipkin web 控制台点击跟踪数据(find traces)。

在这里插入图片描述
点击每个trace 查看详细信息,可以清楚指定服务调用链路等信息:
在这里插入图片描述

三.Zipkin 注册到Eureka

1.添加Eureka client 注册到Eureka;

2.需要跟踪的微服务中修改spring.zipkin.base-url http://ip:port 为 http://<服务名>。

spring:
  zipkin:
    base-url: http://svc-zipkin
    sender:
      type: web
    discovery-client-enabled: true
  sleuth:
    sampler:
      probability: 0.1
四.Zipkin Server持久化数据到ES

zipkin 默认数据保存在内存中,不适用于生产环境,zipkin server增加依赖:

<dependency>
   <groupId>io.zipkin.java</groupId>
   <artifactId>zipkin-autoconfigure-storage-elasticsearch</artifactId>
   <version>2.12.9</version>
</dependency>

application.yaml 增加ES配置:

zipkin:
  storage:
    type: elasticsearch
    elasticsearch:
      hosts: http://ip:port
      index: zipkin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值