ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringCloud 2.x之中整合Zipkin进行服务跟踪zipkin-server

2021-03-23 19:52:11  阅读:164  来源: 互联网

标签:zipkin SpringCloud Zipkin springframework server org cloud


随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药。于是就有了分布式系统调用跟踪的诞生。现今业界分布式服务跟踪的理论基础主要来自于Google 的一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,使用最为广泛的开源实现是 Twitter 的 Zipkin。

Zipkin是一个开放源代码分布式的跟踪系统,它提供了在分布式环境下发送、接收、存储和可视化跟踪的机制。这使我们能够对服务之间的活动进行关联,并更清楚地了解我们服务中发生的情况。Zipkin由Twitter公司开源,致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向zipkin报告计时数据,zipkin会根据调用关系通过Zipkin UI生成依赖关系图,显示了多少跟踪请求通过每个服务,该系统让开发者可通过一个 Web 前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。Zipkin提供了可插拔数据存储方式:In-Memory、MySql、Cassandra以及Elasticsearch。接下来的测试为方便直接采用In-Memory方式进行存储,生产推荐Elasticsearch。


 

今天先搭建Zipkin-server

1、        新建项目sc-zipkin-server,对应的pom.xml文件如下

 

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>


   <groupId>spring-cloud</groupId>

   <artifactId>sc-zipkin-server</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>jar</packaging>
   <name>sc-zipkin-server</name>

   <url>http://maven.apache.org</url>


   <parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>2.0.4.RELEASE</version>

   </parent>



   <dependencyManagement>

      <dependencies>

        <dependency>

           <groupId>org.springframework.cloud</groupId>

           <artifactId>spring-cloud-dependencies</artifactId>

           <version>Finchley.RELEASE</version>

           <type>pom</type>

           <scope>import</scope>

        </dependency>
  </dependencies>

   </dependencyManagement>



   <properties>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <maven.compiler.source>1.8</maven.compiler.source>

      <maven.compiler.target>1.8</maven.compiler.target>

   </properties>



   <dependencies>

      <dependency>

        <groupId>org.springframework.cloud</groupId>

         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

      </dependency>

      <dependency>

        <groupId>io.zipkin.java</groupId>

        <artifactId>zipkin-server</artifactId>

        <version>2.11.8</version>

      </dependency>



      <dependency>

        <groupId>io.zipkin.java</groupId>

        <artifactId>zipkin-autoconfigure-ui</artifactId>

        <version>2.11.8</version>

      </dependency>


   </dependencies>

</project>

2、        新建启动文件

 

package sc.zipkin.server;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;



import zipkin2.server.internal.EnableZipkinServer;



@SpringBootApplication
@EnableEurekaClient
@EnableZipkinServer
public class ZipkinApplication {

    public static void main(String[] args) {

        SpringApplication.run(ZipkinApplication.class, args);

    }

}

备注:存在zipkin.server.EnableZipkinServer和zipkin2.server.internal.EnableZipkinServer两个EnableZipkinServer注解,其中zipkin.server.EnableZipkinServer已经被标志为过期,我们这里使用zipkin2.server.internal.EnableZipkinServer

 

3、        新建配置文件application.yml

 

eureka:

  client:

    serviceUrl:

      defaultZone:http://localhost:5001/eureka/


server:

  port: 9000

spring:

  application:

    name: sc-zipkin-server

4、        分别先启动注册中心:《Spring Cloud 2.x系列之eureka注册中心单机》,再启动Zipkin-server;下图是Zipkin-server启动成功日志

图片

 

5、        验证Zipkin是否启动成功,访问:http://127.0.0.1:9000/zipkin/

图片

 

这篇先到这里,下篇讲解为微服务引入和配置Zipkin服务。

源码:

https://gitee.com/hjj520/spring-cloud-2.x/tree/master/sc-zipkin-server


标签:zipkin,SpringCloud,Zipkin,springframework,server,org,cloud
来源: https://blog.51cto.com/15127574/2669886

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有