Zipkin是一个开源的分布式实时数据追踪系统(Distributed Tracking System),每个Service向Zipkin报告请求数据,Zipkin会根据调用关系通过Zipkin UI生成依赖关系图,让开发者通过一个Web前端轻松的收集和分析数据,如用户每次请求服务的处理事件等,可方便分析系统中存在的瓶颈。

前言

Zipkin是一个开源的分布式实时数据追踪系统(Distributed Tracking System),每个Service向Zipkin报告请求数据,Zipkin会根据调用关系通过Zipkin UI生成依赖关系图,让开发者通过一个Web前端轻松的收集和分析数据,如用户每次请求服务的处理事件等,可方便分析系统中存在的瓶颈。

随着业务越来越复杂,系统也随之需要进行拆分,特别是随着微服务架构和容器技术的兴起,看似简单的应用,后端可能需要多个Service的支持。当前端向后发送请求,后端可能需要进行多次Service调用才能完成,当请求变慢或者不可用时,单凭我们无法得知是哪个后端Service引起的,这时就需要快速定位故障点,Zipkin就可以很好的解决这样的问题。

这里我是在Spring Cloud的基础上搭建的Zipkin。

pom.xml

创建Zipkin微服务,并引入依赖,主要是两个zipkin-serverzipkin-autoconfigure-ui

<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>

需要注意的是:

  1. 这里的version如果不匹配会发生各种奇怪的异常导致程序跑不起来,所以如果你的程序报异常,建议你检查一下zipkin版本以及SpringBoot、SpringCloud的版本;
  2. zipkin-server中包含了log4j-slf4j-impl这个组件,这可能会与springboot中的logback重复产生异常如下,如果出现只需在zipkin-server的dependency中添加<exclusion>log4j-slf4j-impl排除即可。
[ERROR] [XXX Enforcer Rules] find DuplicateClassesFound in:
org.apache.logging.log4j:log4j-slf4j-impl:jar:2.6.2:compile
ch.qos.logback:logback-classic:jar:1.1.7:compile
Duplicate classes:
org/slf4j/impl/StaticMDCBinder.class
org/slf4j/impl/StaticMarkerBinder.class
org/slf4j/impl/StaticLoggerBinder.class

另外引入如下依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.0.4.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions>
</dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-actuator</artifactId>-->
<!--        </dependency>-->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.6.2</version><scope>test</scope>
</dependency>
</dependencies>

配置文件

修改配置文件:

# 将zipkin注册到erueka上
eureka:client:service-url:defaultZone: http://localhost:8761/eureka# 配置zipkin端口
server:port: 8769# 配置服务名字
spring:application:name: spring-cloud-zipkin2

上面就是我们给zipkin的配置,但是若是在启动过程中报出异常[java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys.],此时我们就需要在配置文件中添加:

management:metrics:web:server:auto-time-requests: false

Application

修改Application添加注解@EnableEurekaClient以及EnableZipkinServer

package com.giotto.demozipkin2;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 DemoZipkin2Application {public static void main(String[] args) {SpringApplication.run(DemoZipkin2Application.class, args);}}

Service端

当ZipkinServer端配置好后,我们同样需要在Service中配置Zipkin,这样才能将数据实时发送到ZipkinServer,首先给需要配置Zipkin的Service添加如下依赖:

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

在配置文件中,配置Zipkin:

spring:zipkin:base-url: http://localhost:portsleuth:sampler:probability: 1.0

运行

启动后,只需访问http://localhost:port/zipkin/即可。

基于Spring Cloud搭建Zpikin数据链路追踪系统相关推荐

  1. 基于Spring cloud搭建oauth2

    1,OAuth2.0简介 OAuth(开发授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容. OAut ...

  2. 构建基于Spring Cloud向Service Mesh框架迁移的解决方案及思路

    作为新一代微服务架构体系,Service Mesh 技术有效地解决了 Spring Cloud 微服务架构和服务治理过程中的痛点问题,一经推出便引起了很大的反响.近一年来,伴随着云原生的热火朝天,Se ...

  3. 3个基于 Spring Boot 的图片识别处理系统

    大家好,我是阿逛! 今天推荐一下昨晚找的几个还不错的基于 Java 的图片识别处理系统. 中药图片拍照识别系统 项目地址:https://gitee.com/xiaohaoo/chinese-medi ...

  4. 搭建基于Spring Cloud的微服务应用

    原文链接 在2017云栖大会-上海峰会上阿里云技术专家李斌做了题为<搭建基于spring Cloud的微服务应用>的分享.随着时代的发展,用户对于应用服务的要求越来越高,单体应用已经无法满 ...

  5. 基于Spring Cloud实现微服务前后端系统

    基于Spring Cloud实现微服务前后端系统 1.使用的技术栈 2.项目架构图 3.系统各模块介绍 4.占用的端口 5.如何运行该系统? 6.系统特性 7.系统体验 8.系统截图 (架构升级)新版 ...

  6. 2022最新基于 Spring Cloud 的微服务架构分析,java 技术经理岗位职责

    构建在开发团队之外的 API 网关必须具备负载均衡能力,可以配置多个 IP 地址.通过该 API 网关也最好具备和 Docker 容器扩展后的服务自动注册和地址加入扩展能力. Eureka 的竞品分析 ...

  7. 流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?

    作者 | 童子龙  掌门教育基础架构部架构师 **导读:**本文整理自作者于 2020 年云原生微服务大会上的分享<掌门教育云原生落地实践>,本文主要介绍了掌门教育云原生落地实践,主要围绕 ...

  8. 干货|基于 Spring Cloud 的微服务落地

    转载自 干货|基于 Spring Cloud 的微服务落地 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需 ...

  9. Spring Cloud(5)---基于 Spring Cloud 完整的微服务架构实战

    基于 Spring Cloud 完整的微服务架构实战 技术栈 Spring boot - 微服务的入门级微框架,用来简化 Spring 应用的初始搭建以及开发过程. Eureka - 云端服务发现,一 ...

  10. 利用Zipkin对Spring Cloud应用进行服务追踪分析

    设想这么一种情况,如果你的微服务数量逐渐增大,服务间的依赖关系越来越复杂,怎么分析它们之间的调用关系及相互的影响? 服务追踪分析 一个由微服务构成的应用系统通过服务来划分问题域,通过REST请求服务A ...

最新文章

  1. java.lang.NoClassDefFoundError: javax/transaction/Synchronization (jUnit测试报错)
  2. 重要社区链接(资源技术网站)
  3. python读取dat文件写入表格_python DDT读取excel测试数据
  4. Axure8.0 安装 汉化 简单使用
  5. 面试精选-solr篇
  6. 电力系统微型计算机继电保护试题,电力系统微型计算机继电保护 复习考试题及答案...
  7. mysql 跨库查询_mysql跨库联表查询
  8. python模拟实现QQ邮箱登录
  9. 微信摇一摇周边新功能上线
  10. EOS区块链常见错误编码代码汇总
  11. 手机拍照技巧(一:校园拍摄)
  12. 新媒体运营教程:短视频剧本创作技巧
  13. python方差齐性检验_方差分析中的方差齐性检验_方差齐性检验结果分析
  14. matlab黎曼问题roe格式,Godnov_HLLC 解1D黎曼问题的有限体积法,使用Roe格式做近似 Algorithm 数学计算 238万源代码下载- www.pudn.com...
  15. JavaScript基础知识梳理
  16. 计算机组成原理的英文,“计算机组成原理”课程,the course of principles of computer organization,在线英语词典,英文翻译,专业英语...
  17. 程序员初入职场,你应该遵守什么“潜规则”?
  18. 面试时如何回答职业规划的问题
  19. 菱形五角星html,长方形、正方形、圆形、三角形、菱形、五角星分别用英语怎么说?...
  20. win7更新_亲爹不管奶爸接盘win7更新补丁包发布9月更新7粉感动至泪奔!

热门文章

  1. Camera Shutter Sound can't restore to default
  2. GetPrivateProfileString的问题,获得的CString结构有问题,高手指点
  3. 「leetcode」栈与队列:总结篇!
  4. Illustrator 教程,在 Illustrator 中了解图层
  5. 如何在 Mac 上使用任务控制空间?
  6. Mac系统功能快速切换状态栏小工具One Switch for Mac
  7. 临时修改 macOS 应用的界面语言
  8. Profession
  9. JS 同步本地时间和服务器时间
  10. SQLServer之删除用户自定义数据库用户