前言

想实现一个简单的追踪系统似乎是容易的,需要必要的调用链id,时间戳等;想实现一款易用不侵入代码的追踪系统就很麻烦了,需要接触CLR和IL相关知识;即使你费劲心力做出了那些,如果性能不够好,也没有人使用的。
追踪系统主要可以分两部分实现,客户端和服务端。大软件厂商基于各自的需求已经开发了APM,从头迈入这个圈子的个人拿什么去竞争?最后的结果基本都是凉凉了。合作共赢才是最好的。

从我学习分布式调用链开始,就打算了解客户端和服务端的通信规范,我选择了zipkin入门,基本了解了一些zipkin的模型。我打算多接触几个其他调用链,看看其他的通信模型有什么区别,然后写一个能适应不同模型的第三方规范。这只是最开始的想法,生态繁杂,如果写的东西不能共用,那费力写的东西并没有意义。

当我进一步学习,看到了OpenTracing的介绍,我仿佛找到了道友,云开得见月明。

当我看到了支持opentracing的追踪系统包含SkyWalking时,更坚定了我的信心。

OpenTracing介绍[译]

为什么追踪?

当代分布式跟踪系统(例如,Zipkin,Dapper,HTrace,X-Trace等)旨在解决这些问题,但它们通过使用不兼容API的应用程序级检测来实现。开发人员对将其多语言系统与任何特定的分布式跟踪实现紧密耦合感到不安,但这些许多不同跟踪系统的应用程序级检测API具有非常相似的语义。

为什么选择OpenTracing?

进入OpenTracing:通过为流行的平台提供一致的,富有表现力的,供应商中立的API,OpenTracing使开发人员可以轻松地通过O(1)配置更改添加(或切换)跟踪实现。OpenTracing还为OSS检测和特定于平台的跟踪帮助程序库提供了通用语言。请参阅语义规范。

什么是追踪?

在最高级别,跟踪讲述了事务或工作流在通过(可能分布式)系统传播时的故事。在OpenTracing中,跟踪是“跨度”的有向非循环图(DAG):命名的定时操作,表示该跟踪中的连续工作段。

image

分布式跟踪中的每个组件都将贡献自己的跨度或跨度。例如,在简单的RPC的情况下,OpenTracing要求客户端和服务器将它们各自在工作流中的角色表示为至少一个跨度。

image

父跨度可以显式地以串行或并行方式启动其他跨度。在OpenTracing中,甚至可以用多个父模型建模子跨度(例如,缓冲区刷新可以从填充所述缓冲区的多个写入中下降)。

一个基本的痕迹

image

通过分布式系统跟踪工作流或事务通常看起来如上所述。虽然这种类型的可视化对于查看各种组件如何组合在一起是有用的,但是它不传达任何持续时间,不能很好地扩展,并且在涉及并行性时是麻烦的。另一个限制是无法轻易显示延迟或时序的其他方面。甚至基本跟踪可视化的更有用的方法通常如下所示:

image

这种类型的可视化添加了时间上下文,所涉及服务的层次结构以及进程/任务执行的串行或并行特性。此视图有助于突出显示系统的关键路径。通过关注关键路径,注意力可以集中在可以进行最有价值改进的代码区域。例如,您可能希望将API请求中的资源分配范围跟踪到底层阻塞调用。

内容来自官网,详情查看opentracing

OpenTracing语言支持

opentracing-csharp

适用于.NET的OpenTracing API

必读

为了理解.NET平台API,首先必须更熟悉 OpenTracing项目和 

F2F2F;font-family:'PingFang SC';font-size:18px;">
F2F2F;font-family:'PingFang SC';">
F2F2F;font-family:'PingFang SC';">
0

 

OpenTracing:开放式分布式追踪规范的更多相关文章

  1. [业界方案] 用SOFATracer学习分布式追踪系统Opentracing

    [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 目录 [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 0x00 摘要 0x01 缘由 &am ...

  2. [业界方案]用Jaeger来学习分布式追踪系统Opentracing

    [业界方案]用Jaeger来学习分布式追踪系统Opentracing 目录 [业界方案]用Jaeger来学习分布式追踪系统Opentracing 0x00 摘要 0x01 缘由 & 问题 1. ...

  3. .NET Core微服务之基于Ocelot+Butterfly实现分布式追踪

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.什么是Tracing? 微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错 ...

  4. Uber分布式追踪系统Jaeger使用介绍和案例

    原文:Uber分布式追踪系统Jaeger使用介绍和案例[PHP Hprose Go] 前言   随着公司的发展,业务不断增加,模块不断拆分,系统间业务调用变得越复杂,对定位线上故障带来很大困难.整个调 ...

  5. 开源分布式追踪系统 — Jaeger介绍

    目录 一.Jaeger是什么 二.Jaeger架构 1. 术语 2. 架构图 三.关于采样率 四.部署与实践 一.Jaeger是什么 Uber开发的一个受Dapper和Zipkin启发的分布式跟踪系统 ...

  6. ASP.NET Core使用Jaeger实现分布式追踪

    前言 最近我们公司的部分.NET Core的项目接入了Jaeger,也算是稍微完善了一下.NET团队的技术栈. 至于为什么选择Jaeger而不是Skywalking,这个问题我只能回答,大佬们说了算. ...

  7. 【学习笔记】分布式追踪Tracing

    在软件工程中,Tracing指使用特定的日志记录程序的执行信息,与之相近的还有两个概念,它们分别是Logging和Metrics. Logging:用于记录离散的事件,包含程序执行到某一点或某一阶段的 ...

  8. 让你的Nginx支持分布式追踪

    Background NGINX 是一个通用且流行的应用程序.也是最流行的 Web 服务器,它可用于提供静态文件内容,但也通常与其他服务一起用作分布式系统中的组件,在其中它用作反向代理.负载均衡 或 ...

  9. 分布式追踪系统dapper

    http://www.cnblogs.com/LBSer/p/3390852.html 最近单位需要做自己的分布式监控系统,因此看了一些资料,其中就有google的分布式追踪系统dapper的论文:h ...

随机推荐

  1. asp.net学习——Response对象

    (2011-03-29 07:33:03) 转载▼ 标签: 杂谈 分类: asp.net学习 响应的缓冲输出:为了提高服务器的性能,asp.net向浏览器Write的时候默认并不会每Write一次都会 ...

  2. sass @function,@for,@mixin 的应用

    项目前提: 不同的汽车显示不同的图片,一共9种汽车:每种汽车显示不同状态的图片,一共6种状态,所以一共会有54张图片 后台接口返回汽车种类分别为:1-9,汽车状态分别为:0-5 项目需求: 根据后台返 ...

  3. python第五十七天------补上笔记

    direct_client:广播接收 #!/usr/bin/env python #_*_coding:utf-8_*_ import pika,time,sys connection = pika. ...

  4. 简单易懂的程序语言入门小册子(1):基于文本替换的解释器,lambda演算

    最近比较闲,打算整理一下之前学习的关于程序语言的知识.主要的内容其实就是一边设计程序语言一边写解释器实现它.这些知识基本上来自Programming Languages and Lambda Calc ...

  5. Linux的命名空间详解--Linux进程的管理与调度(二)【转】

    Linux Namespaces机制提供一种资源隔离方案. PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace.每个Namespace里面的资源对其他Namesp ...

  6. 用Python做股市数据分析(二)

    本文由 伯乐在线 - 小米云豆粥 翻译.未经许可,禁止转载!英文出处:Curtis Miller.欢迎加入翻译组. 这篇博文是用Python分析股市数据系列两部中的第二部,内容基于我在犹他大学 数学3 ...

  7. Django电商项目---完成商品主页显示day2

    利用DjangoAdmin初始化数据库 创建项目 python manage.py startapp df_goods 添加配置 manas/urls.py manas/settings.py 新创建 ...

  8. if语句(初学者)

    用if语句可以构成分支结构.它根据给定的条件进行判断,以决定执行某个分支程序段.C语言的if语句有三种基本形式. 1.基本形式:if(表达式)语句 其语义是:如果表达式的值为真,则执行其后的语句,否则 ...

  9. react redux学习之路

    React 自学 chapter one React新的前端思维方式 React的首要思想是通过组件(Component)来开发应用.所谓组件,简单说,指的是能够完成某个特定功能的独立的.可重用的代码 ...

  10. Ubuntu18.04安装Tensorflow+cuda+cuDNN

    本文写的比较简单,期间遇到的一些小麻烦,自己不认为成为阻碍,所以没有详细写. 如有疑问可以联系QQ:2922530320 Pycharm Pycharm使用Anaconda Pycharm 在新建项目 ...