开发者社区> 聂晨> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SpringCloud学习之sleuth&zipkin【二】

简介:   这篇文章我们解决上篇链路跟踪的遗留问题 一、将追踪数据存放到MySQL数据库中   默认情况下zipkin将收集到的数据存放在内存中(In-Memeroy),但是不可避免带来了几个问题: 在服务重新启动后,历史数据丢失。
+关注继续查看

  这篇文章我们解决上篇链路跟踪的遗留问题

一、将追踪数据存放到MySQL数据库中

  默认情况下zipkin将收集到的数据存放在内存中(In-Memeroy),但是不可避免带来了几个问题:

    • 在服务重新启动后,历史数据丢失。
    • 在数据量过大的时候容易造成OOM错误

  通常做法是与mysql或者ElasticSearch结合使用,那么我们先把收集到的数据先存到Mysql数据库中

  1、改造zipkin-server的依赖

    gradle配置:

dependencies {
    compile('org.springframework.cloud:spring-cloud-starter-eureka')
    compile('org.springframework.cloud:spring-cloud-starter-config')
  //  compile('io.zipkin.java:zipkin-server')

    compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
    compile('io.zipkin.java:zipkin-autoconfigure-ui')
    runtime('mysql:mysql-connector-java')
    compile('org.springframework.boot:spring-boot-starter-jdbc')
    compile('org.springframework.cloud:spring-cloud-sleuth-zipkin-stream')
    compile('org.springframework.cloud:spring-cloud-stream')
    compile('org.springframework.cloud:spring-cloud-stream-binder-kafka')
}
View Code

    这里将原先的 io.zipkin.java:zipkin-server  替换为  spring-cloud-sleuth-zipkin-stream 该依赖项包含了对mysql存储的支持,同时添加spring-boot-starter-jdbc与mysql的依赖,顺便把kafka的支持也加进来

    

    注意:此处脚本最好在数据库中执行一下,当然我们也可以在下面的配置文件中做初始化的相关配置

  2、YAML中的关键配置项:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/myschool?characterEncoding=utf-8&useSSL=false
    initialize: true
    continue-on-error: true
  kafka:
    bootstrap-servers: localhost:9092
server:
  port: 9000
zipkin:
  storage:
    type: mysql
View Code

  注意zipkin.storage.type 指定为mysql

  3、更改启动类

package com.hzgj.lyrk.zipkin.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.sleuth.zipkin.stream.EnableZipkinStreamServer;

@EnableZipkinStreamServer
@SpringBootApplication
public class ZipkinServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZipkinServerApplication.class, args);
    }
}
View Code

  这里注意将@EnableZipkinServer改成@EnableZipkinStreamServer

 

 

二、将收集信息改成异步发送

  这步改造主要用以提高性能与稳定性,服务将收集到的span无脑的往消息中间件上丢就可以了,不用管zipkin的地址在哪里。

  1、改造Order-Server依赖:

    gradle:

    compile('org.springframework.cloud:spring-cloud-starter-eureka-server')
   // compile('org.springframework.cloud:spring-cloud-sleuth-zipkin')
    compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
    compile 'org.springframework.cloud:spring-cloud-sleuth-stream'
    compile('org.springframework.cloud:spring-cloud-starter-config')
    compile('org.springframework.cloud:spring-cloud-stream')
    compile('org.springframework.cloud:spring-cloud-stream-binder-kafka')
    compile('org.springframework.kafka:spring-kafka')
    compile('org.springframework.cloud:spring-cloud-starter-bus-kafka')
View Code

    这里把原先的spring-cloud-sleuth-zipkin改成spring-cloud-sleuth-stream,不用猜里面一定是基于spring-cloud-stream实现的

 

  2、YAML关键属性配置:

server:
  port: 8100
logging:
  level:
    org.springframework.cloud.sleuth: DEBUG
spring:
  sleuth:
    sampler:
      percentage: 1.0
View Code

  注意:这里设置低采样率会导致span的丢弃。我们同时设置sleuth的日志输出为debug

 

  3、同理改造其他的微服务

 

  

三、验证结果

数据库里的相关数据:

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Cloud Alibaba到底坑不坑?
之前我发过一篇《说说我为什么看好Spring Cloud Alibaba》,然后这两天有网友给我转了这篇文章《坑爹项目spring-cloud-alibaba,我们也来一个》,问我的看法是怎么样的,聊天时候简单说了一下。
1837 0
sentinel怎样实现熔断降级? | 带你读《Spring Cloud Alibaba(2019)》之十六
本节介绍了sentinel实现熔断降级执行的策略:1.平均响应时间 (DEGRADE_GRADE_RT),2.异常比例(DEGRADE_GRADE_EXCEPTION_RATIO),3.异常数(DEGRADE_GRADE_EXCEPTION_COUNT)
0 0
《Spring Cloud Alibaba(2019)》从入门到精通
该课程主要讲解Spring Cloud Alibaba核心组件 Nacos(服务注册与发现和分布式配置中心)、Sentinel(服务保护框架)、Seata(分布式事务解决框架)、阿里云OSS、Alibaba Cloud SchedulerX等。
0 0
Spring Cloud Alibaba系列(四)gateway网关
在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。
0 0
如何成为 Spring Cloud Alibaba 城市社区负责人?
经过短短两年时间的发展,Spring Cloud Alibaba 快速发展,根据 X-lab 最新的报告显示,Spring Cloud Alibaba 已经成为活跃度最高的 Spring Cloud 实现。
0 0
1 月 30 日 Spring Cloud Alibaba Meetup #3 广州站,不见不散!
1 月 9 日因为疫情我们非常遗憾地没能在上海举办线下活动,但是!1 月 30 日,Spring Cloud Alibaba 社区邀请到 Apache Dubbo PMC Member、Apache Dubbo-go 核心维护者邹毅贤,逸仙电商(完美日记母公司)高级 Java 开发工程师、Seata Committer 张嘉伟,虎牙直播中间件负责人、Nacos Committer 张波,Apache RocketMQ PMC Member,Apache RocketMQ Spring 维护者金融通来到 meetup 现场,分享企业级开源项目实践及项目最新动态。
0 0
Spring Cloud Alibaba到底坑不坑?
Spring Cloud Alibaba到底坑不坑?
0 0
说说我为什么看好Spring Cloud Alibaba
说说我为什么看好Spring Cloud Alibaba
0 0
Spring Cloud Alibaba定时任务
Spring Cloud Alibaba定时任务是阿里巴巴开发的一款低延时、高可用、可视化的任务调度产品(定时、任务依赖编排、分布式跑批),支持日志服务、监控大盘、报警监控。
0 0
+关注
聂晨
专注于java后端技术,热衷于开源框架的源码阅读,曾经的老码农,现着力于高端IT人才的发现与培养
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Spring Cloud Alibaba 从入门到实战
立即下载
Spring Boot 2.5开发实战
立即下载
搭建基于Spring Cloud 的微服务应用
立即下载