Archive | tracing RSS feed for this section

Istio 调用链埋点原理剖析—是否真的“零修改”?

发在Infoq上的一篇文章,答疑当前大家工作中碰到的Istio调用链的问题,最终澄清了观点,并推动社区修改了说法,避免误解。

前言

在 Istio 的实践中最近经常被问到一个问题,使用 Istio 做调用链用户的业务代码是不是完全 0 侵入,到底要不要修改业务代码?

看官方介绍:

Istio makes it easy to create a network of deployed services with load balancing, service-to-service authentication, monitoring, and more, without any changes in service code.

是不用修改任何代码即可做各种治理。实际使用中应用程序不做任何修改,使用 Istio 的调用链输出总是断开的,这到底是什么原因呢?

对以上问题关注的[......]

阅读全文

Tags: , , ,

Comments { 0 }

Istio调用链埋点原理剖析—是否真的“零修改”分享实录(下)

接上文Istio调用链埋点原理剖析—是否真的“零修改”分享实录(上)

Isito调用链

调用链原理和场景

istio-trace-21正如Service Mesh的诞生是为了解决大规模分布式服务访问的治理问题,调用链的出现也是为了对应于大规模的复杂的分布式系统运行中碰到的故障定位定界问题。大量的服务调用、跨进程、跨服务器,可能还会跨多个物理机房。无论是服务自身问题还是网络环境的问题导致调用上链路上出现问题都比较复杂,如何定位就比单进程的一个服务打印一个异常栈来找出某个方法要困难的多。需要有一个类似的调用链路的跟踪,经一次请求的逻辑规矩完整的表达出来,可以观察到每个阶段的调用关系,并能看到每个阶段的耗时和调用详细情况。Dapper, a Large-Scale Distributed Systems Tracing Infrastructure 描述了其中的原理和一般性的机制。模型中包含的术语也很多,理解最主[......]

阅读全文

Tags: , ,

Comments { 1 }

Istio调用链埋点原理剖析—是否真的“零修改”分享实录(上)

整理自在K8S技术社关于Istio调用链的分享。 

前言

istio-trace-01大家好,我是idouba,来自华为Cloud BU,当前在做Istio服务网格在华为云容器服务的产品化工作。今天跟大家分享的主题是Istio调用链相关内容。通过剖析Istio的架构机制与Istio中调用链的工作原理来解答一个大家经常问道的一个问题:Istio是否像其官方文档中宣传的一样,对业务代码完全的无侵入,无需用做任何修改就可以完成所有的治理能力,包括调用链的埋点? 

关于这个问题,可以提前透漏下,答案是让人有点沮丧的,得改点。在Isito中你不用在自己的代码里使用各种埋点的SDK来做埋点的逻辑,但是必须要有适当的配合的修改。

为什么本来无侵入的Service Mesh形态的技术却要求我们开发者修改些代码,到底要做哪些修改?Istio中调用链到底是怎么工作的?在下面的内容中将逐个回答这些问题。

本[......]

阅读全文

Tags: , ,

Comments { 1 }

Opentracing 调用链服务端埋点

1 前言

通过一个最简单的代码例子来看使用opentracing在服务端埋点的逻辑。因为调用链的抽象模型都是来自dapper这篇论文,所以其他的方式也是类似,只是接口方法上稍有不同。

2 关于服务端埋点

主要流程看上是:

  • 1) 收到请求
  • 2) 从通信协议(如常用的HTTP header)中解出客户端传递的trace;
  • 3) 构造span
  • 4) 保存span
  • 5) 服务端返回请求
  • 6) 关闭span,将span的数据结构上传到调用链的数据存储节点。

下面结合一个例子中的额使用看下2 3 4 6四个调用链埋点步骤具体做了哪些事情。

3 主要流程

以最典型的http服务端为例。如下面是个http服务端的里,一般的最简单的一个http服务端写出来可能是这样,从request中解到请求的参数,然后执行服务端处理的逻辑,然后结果写到response。
[c[......]

阅读全文

Tags: , ,

Comments { 0 }