zoukankan      html  css  js  c++  java
  • [学习记录]Jaeger的第一步

    jaeger是基于opentracing的一个追踪器,兼容opentracing标准。这项技术可以帮助开发者掌握分布式系统内的函数调用情况,分析函数性能、网络状况等等。

    先列出相关参考文献:

    https://github.com/yurishkuro/opentracing-tutorial opentracing语言教学

    https://opentracing.io/docs/translations/ opentracing官方文档

    https://github.com/aliyun/aliyun-log-jaeger/blob/master/README_CN.md?spm=a2c63.p38356.879954.12.32bf3defjg1BKu&file=README_CN.md 阿里云相关文档

    jaeger有以下五个核心组件

    jaeger-client:嵌入代码中的采集器,接收各个函数返回的追踪信息

    jaeger-agent:接收client的数据并传给collector收集器

    jaeger-collector:从agent或直接从client中获取追踪信息

    storage:存储追踪信息

    jaeger-query:查询组件,也是UI的提供者

    对于jaeger或者说opentracing系工具来说,都只是创造了一个用来通信的通道,该通道专门用来收集trace信息,而trace信息则是由开发者在每个函数或者是关键步骤上自定义的,开发者只需要按照opentracing的标准整理并发送信息,jaeger就会自动获取并整理成便于阅读的形式。

    jaeger的部署非常简单,既可以通过docker部署(参考https://github.com/yurishkuro/opentracing-tutorial),也可以在kubernetes上分布式部署(https://github.com/jaegertracing/jaeger-operator),但是需要注意,jaeger-operator是一个整合后的工具,同时提供了collector、storage、query、agent的功能,但client仍然需要程序员自己实现。

    本文的重点主要介绍client的部分,所选语言为python

    jaeger的语言api主要提供了以下功能,具体内容还是详见第一份参考资料,一步步教学非常详细

    1.提供了span的实现用来传递trace信息,自动计算时间并允许提供name、tag、log用来记录更多信息

    2.可以通过span中child_of属性指定父子关系,也可以通过tracer.start_active_span自动处理

    3.rpc远程调用就是本地调用远端函数,可以说是serverless的原型中的原型了。(题外话)

    4.在远端通过tracer.inject和extract的方式将远程调用时产生的trace传递过去,从而方便区分本地运行的时间与远程调用的时间(可能一共响应的10ms中,9ms来自网络,只有1ms用于远程函数的计算)

    5.jaeger还提供了baggage的方式用来传递信息,和之前的inject-extract有点像,但这个更偏向于程序员传递特定信息,建议大小不要太大,因为所有包都要附加这个baggage中的内容。

  • 相关阅读:
    一款非常推荐的用户界面插件----EasyUI
    使用chart和echarts制作图表
    JS模拟实现封装的三种方法
    JavaScript面向对象(OOP)
    移动HTML5前端框架—MUI
    一款优秀的前端JS框架—AngularJS
    less和scss
    JS中的正则表达式
    JS中的数组
    js匿名函数
  • 原文地址:https://www.cnblogs.com/trickofjoker/p/13307818.html
Copyright © 2011-2022 走看看