Spring Cloud+ Sleuth + Zipkin链路追踪

Spring Cloud+ Sleuth + Zipkin链路追踪

01、Spring Cloud Zipkin链路追踪

image-20220312000153531

01、Zipkin的来源和背景

2010年谷歌发表了其内部使用的分布式跟踪系统Dapper的论文(http://static.googleusercontent.com/media/research.google.com/zh-CN/archive/papers/dapper-2010-1.pdf,译文地址:http://bigbully.github.io/Dapper-translation/),讲述了Dapper在谷歌内部两年的演变和设计、运维经验,Twitter也根据该论文开发了自己的分布式跟踪系统Zipkin,并将其开源,但不知为啥没有贡献给Apache。其实还有很多的分布式跟踪系统,比如naver的Pinpoint、Apache的HTrace,阿里的鹰眼Tracing、京东的Hydra、新浪的Watchman等。

谷歌的团队于2010年开发了一个产品叫zipkin,专门用于分布式项目服务链路追踪系统。

02、大型互联网公司为什么需要分布式跟踪系统?

  • 1.为了支撑日益增长的庞大业务量
  • 2.动态展示服务的链路
  • 3.分析服务链路的瓶颈并对其进行调优
  • 4.快速进行服务链路的故障发现

这就是服务跟踪系统存在的目的和意义。

我们目前开发程序,及时作为分布式系统的开发者,也很难清楚的说出某个服务的调用链路,况且服务调用链路还是动态变化的,这时候只能咬紧牙关翻代码了。接下来,可以使用zipkin是完成这样事情?

设计初衷

现代的大型应用系统一般是复杂的分布式系统,他们由许多的软件模块构成,这些软件模块可能由不同的团队用不同的编程语言编写而成,因此那些传统的用于理解系统行为,分析性能问题的工具,在这种复杂环境下变得失效。

设计理念

主要有三个设计目标:

  • 低负载(low overhead)

  • 应用级透明(application-level transparency)

  • 大范围部署(ubiquitous deployment)

03、什么是Zipkin?

在spring cloud分布式架构中,系统被拆分成了许多个服务单元,业务复杂性提高。如果出现了异常情况,很难定位到错误位置,所以需要实现分布式链路追踪,跟进每一个请求有哪些服务参与,参与的顺序如何,从拿来到哪里去需要有一个明确的方向,虽然前面sleuth日志分布式链路追踪,但是分析不方便,所有使用zipkin弥补这块展示和收集和持久化的问题。

Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),其主要功能是聚集来自各个异构系统对的实时数据监控。

什么是Zipkin的核心要素:

  • 数据收集 (kafka/rabbitmq/基于内存web)
  • 数据存储(es/mysql)
  • 数据展示 (webui)

Zipkin 是一个开放源代码分布式的跟踪系统,由Twitter公司开源,主要用于数据的存储、查找和展示。 zipkin 提供了可拔插数据存储方式,生产环境中推荐使用 Elasticsearch,还能结合 kibana 使用。

Zipkin 和 Config 结构类似,分为服务端 Server,客户端Client,客户端就是各个微服务应用。

04、Zipkin的默认搭建方式

官网:https://github.com/openzipkin/zipkin/

github源码地址:https://github.com/openzipkin/zipkin/

模式:sleuth + zipkin +内存

05、传统日志收集的选型

ELK /EFK + kafka

06、微服务的链路追踪 -架构模型

  • sleuth + zipkin +内存

  • sleuth + logstash+es+kibana

  • sleuth +logstash +kafka +es+kibana

  • sleuth +zipkin +kafka/rabbitmq +es/mysql+kibana

  • sleuth +zipkin +kafka/ribbitmq +es/mysql+kibana

07、Zipkin搭建服务端-自搭建(不推荐)

1、创建一个springboot【2.1.13.RELEASE】的项目【ksd-sleuth-zipkin-server】

2、依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
        <relativePath/>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ksd-sleuth-zipkin-server</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-server</artifactId>
            <version>2.12.9</version>
        </dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-autoconfigure-ui</artifactId>
            <version>2.12.9</version>
        </dependency>
    </dependencies>
</project>

3、配置application.properties

spring.application.name=zipkin-server
server.port=9411

#zipkin启动或访问报错无法访问的解决方法
management.metrics.web.server.auto-time-requests=false

4、启动运行

package com.ksd.pug.cloud;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import zipkin2.server.internal.EnableZipkinServer;
import zipkin2.server.internal.RegisterZipkinHealthIndicators;


@SpringBootApplication
@EnableZipkinServer
public class SleuthZipkinServerApplication {
   
    public static void main(String[] args) {
   
        new SpringApplicationBuilder(SleuthZipkinServerApplication.class).listeners(new RegisterZipkinHealthIndicators())
                .properties("spring.config.name=zipkin-server")
                .run(args);
    }

}

5、访问 http://localhost:9411/zipkin/

image-20220312002830318

小结:

  • 默认端口是:9411
  • 新版本不推荐使用自己搭建服务。

02、SpringCloud ZipkinServer 搭建过程

01、Zipkin Server的默认搭建方式

  • 官网:https://github.com/openzipkin/zipkin/

  • github源码地址:https://github.com/openzipkin/zipkin/

02、Zipkin Server服务的下载 - 基于jar的方式

下载最新版:https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec

下载指定版本:下载最新版:https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=2.17.2&c=exec

03、启动zipkinserver服务

java -jar zipkin-server-2.17.2-exec.jar

备注:必须环境为java8及其以上。

04、启动zipkinserver服务

访问 http://localhost:9411/zipkin/

image-20220312003651152

05、如果你想用docker如下:

https://github.com/openzipkin/zipkin

docker run -d -p 9411:9411 openzipkin/zipkin

03、SpringCloud Zipkin Client搭建过程 - http模型

图形结构如下:

image-20220312011820994

具体操作:

  • 模式:sleuth + zipkin +http+web+内存

  • Zipkin 可以基于Sleuth进行日志的收集和展示,所有需要完成如下步骤:

1:在所有的需要监控的服务中,进行依赖配置,比如:

  • kuangstudy-order-service
  • kuangstudy-product-service
  • kuangstudy-user-service

2:依赖

  • 仅仅使用Spring Cloud Sleuth,不包含Zipkin
<dependency> 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值