• spring cloud 分布式链路跟踪(集成zipkin)


    篇写了分布式链路追踪  spring cloud 分布式链路追踪

    这样的链路追踪虽然可以解决问题 但日志太过于分散 如果微服务过多 就会变的相当复杂

    zipkin就可以帮我们把链路调用的过程全部收集起来

    它就像注册中心一样 分为客户端和服务端 想要使用 首先建一个模块 当作他的服务端

    首先添加如下依赖

    compile 'io.zipkin.java:zipkin-server'
    compile 'io.zipkin.java:zipkin-autoconfigure-ui'

    在配置文件中配置它的端口号以及项目名

    server:
      port: 9999
    spring:
      application:
        name: zikpin-server

    然后在他的启动类加上@EnableZipkinServer

    @EnableZipkinServer
    @SpringBootApplication
    public class ZikpinServerProvider {
    
        public static void main(String[] args) {
            SpringApplication.run(ZikpinServerProvider.class,args);
        }
    }

    它就表示这个是Zipkin的服务端

    之后需要在客户端也加入依赖

        compile group: 'org.springframework.cloud', name: 'spring-cloud-sleuth-zipkin'

    在客户端进行配置

    spring: 
        zipkin:
            base-url: http://localhost:9999 #代表zipkin服务端的地址
        sleuth:
            sampler:
               percentage: 1.0  #代表提交链路到zipkin的频率 下面细讲

    运行localhost:9999 

     可以看到这个页面 这个就是zipkin的主页面 他就可以非常具体形象的体现出微服务之间的链路及他们的调用 还有耗费的时间、性能等

    我们运行一个方法 用微服务调用另一个微服务试一下 如果对这个不会 可以查看我之前的一篇 spring cloud eureka 微服务之间的调用

    然后选择时间 进行查询 可以看到

    已经看到我们这次请求调用了两个微服务 

    我们也可以在右上角 根据id查找调用链 来根据请求的id来查找 需要引入sleuth 

    具体可以参考我的一篇博客 spring cloud 分布式链路追踪

    然后来讲一讲上面的

     sleuth:
            sampler:
               percentage: 1.0

    后面的值可以输入0.1-1.0之间 代表百分之多少

    它的意思就是 有百分之多少的请求会上传到zipkin 就比如我们百分之五十 那就上传了一次 第二次就不上传 只通过日志的形式显示

    为什么要用这个东西呢 

    我们微服务之间进行调用 本来就有耗费的资源以及限制 因为要调用另外一个微服务 现在还需要上传到zipkin 那就非常影响性能

    如果上传到zipkin需要三十秒 那么微服务就什么都不能做 必须等这三十秒之后才能做别的事情 所以如果上传量特别大的话 可以仅上传一些作为采样

    也可以把链路信息上传到消息队列中 这样就可以解耦合 对效率不会有影响 然后zipkin再从消息队列进行下载 可以用kafka之类的 这个我以后会另外再写一篇博客细讲

    以上就是集成了zipkin的分布式链路跟踪

  • 相关阅读:
    第三讲:增长全局观
    搭建安卓环境
    ~~
    天气阴
    天气晴
    Spark性能优化指南——高级篇
    Ceph Jewel 10.2.3 环境部署
    《你只是看起来很努力》--读书笔记
    博客园基础环境配置
    Spark 1.3.0 单机安装
  • 原文地址:https://www.cnblogs.com/wangkee/p/9306408.html
Copyright © 2020-2023  润新知