spring cloud 2.0 入门系列一 (10)分布式链路追踪-Zipkin

服务说明

Zipkin是什么

Zipkin分布式跟踪系统;它可以帮助收集时间数据,解决在microservice架构下的延迟问题;它管理这些数据的收集和查找;Zipkin的设计是基于谷歌的Google Dapper论文。
每个应用程序向Zipkin报告定时数据,Zipkin UI呈现了一个依赖图表来展示多少跟踪请求经过了每个应用程序;如果想解决延迟问题,可以过滤或者排序所有的跟踪请求,并且可以查看每个跟踪请求占总跟踪时间的百分比。

为什么使用Zipkin

随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构和容器技术的兴起,看似简单的一个应用,后台可能有几十个甚至几百个服务在支撑;一个前端的请求可能需要多次的服务调用最后才能完成;当请求变慢或者不可用时,我们无法得知是哪个后台服务引起的,这时就需要解决如何快速定位服务故障点,Zipkin分布式跟踪系统就能很好的解决这样的问题。

服务搭建

服务端

从SpringCloud2.0 以后,官方已经不支持自定义服务,官方只提供编译好的jar包供用户使用。
这里我们采用docker方式部署zipkin服务,并采用elasticsearch作为zipkin的数据存储器。

下载镜像

docker pull openzipkin/zipkin
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.0

编写启动文件

新建文件夹,目录如下

dockerfile
    |- elasticsearch
    |    |- data
    |- docker-compose.yml

编写启动文件docker-compose.yml

version: "3"
services:

  elasticsearch:
    image:  elasticsearch:latest
    container_name: elasticsearch
    restart: always
    networks:
      - elk
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
       - ../elasticsearch/data:/usr/share/elasticsearch/data

  zipkin:
    image: zipkin:latest
    container_name: zipkin
    restart: always
    networks:
      - elk
    ports:
      - "9411:9411"
    environment:
      - STORAGE_TYPE=elasticsearch
      - ES_HOSTS=elasticsearch

networks:
    elk:

关于docker-compose.yml 文件格式及相关内容请自行百度了解。

启动服务

命令模式进入dockerfile目录,执行启动命令

docker-compose up -d

客户端搭建

修改pom文件

增加zipkin依赖

<!-- 分布式链路追踪 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

修改配置文件

增加zipkin相关配置

spring:
  zipkin:
    base-url: http://localhost:9411/
  sleuth:
    sampler:
      probability: 1 #样本采集量,默认为0.1,为了测试这里修改为1,正式环境一般使用默认值。

为了验证效果,必须有两个客户端,一个提供接口,一个调用接口,这里就不写第二个客户端搭建了,如果有不懂的可以参考之前的博文。

代码样例

客户端:

猜你喜欢

转载自blog.csdn.net/xiaoluo033/article/details/80961807