博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud学习之sleuth&zipkin【二】
阅读量:6257 次
发布时间:2019-06-22

本文共 2974 字,大约阅读时间需要 9 分钟。

  这篇文章我们解决上篇的遗留问题

一、将追踪数据存放到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:9092server:  port: 9000zipkin:  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@SpringBootApplicationpublic 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: 8100logging:  level:    org.springframework.cloud.sleuth: DEBUGspring:  sleuth:    sampler:      percentage: 1.0
View Code

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

 

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

 

  

三、验证结果

数据库里的相关数据:

 

转载地址:http://azisa.baihongyu.com/

你可能感兴趣的文章
Python之模块(二)
查看>>
Python跳出循环语句continue与break的区别
查看>>
内存中堆,栈的区别
查看>>
JavaScript
查看>>
django 配置邮件发送 send_email
查看>>
程序员聊人生
查看>>
ScrollView中嵌套WebView SrcollView自动向下滚动
查看>>
Python尾递归-创始人为何不愿TRE以及我们如何模拟TRE
查看>>
PKUSC2016
查看>>
Java内存分配和内存管理
查看>>
CNCF 有哪些具体的项目内容?
查看>>
[转]Oracle 清除incident和trace -- ADRCI用法
查看>>
农产品期货普遍回调 短期压力仍较大
查看>>
数据之路 Day8 Matplotlib包
查看>>
Ye.云狐J2刷机笔记 | 完美切换内部存储卡和SD卡的改法.vold.fstab
查看>>
【转】WIFI基本知识整理
查看>>
普通GRE 隧道配置
查看>>
Vim编程常用命令
查看>>
【树莓派】RASPBIAN镜像初始化配置
查看>>
在按钮上添加倒计时激活功能(转自手册网)
查看>>