使用 Aeraki Mesh 实现零代码侵入的 Dubbo 服务调用跟踪
安装示例程序
如果你还没有安装示例程序,请参照 快速开始 安装 Aeraki,Istio 及示例程序。
执行完成后,在 meta-dubbo 这个 NS 中安装了基于 MetaProtocol 实现的 Dubbo 协议的示例程序。 我们将采用该 Dubbo 示例程序来进行测试。Dubbo Demo 程序的调用关系为:dubbo-sample-consumer –> dubbo-sample-provider –> dubbo-sample-second-provider 。
➜ ~ kubectl -n meta-dubbo get pod
NAME READY STATUS RESTARTS AGE
dubbo-sample-consumer-5c8f9d457-bfnxc 2/2 Running 0 45s
dubbo-sample-provider-v1-69b986cb77-bm4kh 2/2 Running 0 45s
dubbo-sample-provider-v2-7479958d88-qktm4 2/2 Running 0 45s
dubbo-sample-second-provider-77cdfb955f-56chj 2/2 Running 0 45s
在 istio-system 这个 NS 中已经安装了 Jaeger,并且在安装 Demo 时设置了 Mesh 的采样率为 100%,因此 Demo 应用的所有请求都会生成 tracing 记录,并上报到 Jaeger。
备注:由于生成 tracing 数据对程序性能有一定影响,在生产环境中一般不会把 Mesh 的采样率设置为 100%。Aeraki 和 Istio 采用相同的 Tracing 配置,在未显示设置采样率时,缺省采样率为 1%。
通过 Jaeger 查看 Tracing
通过 istioctl dashboard jaeger
命令打开 Jaeger 的界面。
istioctl dashboard jaeger
查询 Dubbo 服务的 Trace:
查看一条 Trace 经过的所有服务的调用关系:
查看 Trace span 的 tag:
传递调用跟踪相关的 header
启用 tracing 后,MetaProtocol Proxy 会在请求的第一跳生成第一个 tracing span,并将 tracing 的上下文,包括 tracing id,当前的 span id 等加入到请求 header 中。但由于 MetaProtocol Proxy 并不能感知其入向请求和出向请求之间的业务关联关系,需要应用代码将入向请求中调用跟踪相关的 header 设置到对应的出向请求中。 应用代码需要传递下面这些 tracing 相关的 header:
- x-request-id
- x-b3-traceid
- x-b3-spanid
- x-b3-parentspanid
- x-b3-sampled
- x-b3-flags
- b3
- x-ot-span-context
备注:Dubbo 应用无需修改代码即可实现调用跟踪,因为 Dubbo 缺省会将自定义 header(attachment)通过 ThreadLocal 机制传递给下一个请求。
相关文章
- SSM(十三) 将dubbo暴露出HTTP服务
- dubbo之9种rpc协议
- spring cloud和dubbo的主要区别[通俗易懂]
- Dubbo集成ZooKeeper实现服务注册
- 面试:第八章:SpringMVC、Springboot、Mybatis、Dubbo、Zookeeper、Redis、Elasticsearch、Nginx 、Fastdfs、ActiveMQ
- dubbo源码解析
- SpringBoot整合Dubbo学习总结【概述,快速入门,高级特性,案例所敲代码】
- SpringCloudAlibaba入门系列(4) - 服务调用Feign和Dubbo
- 阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
- Dubbo:服务路由的实现
- 5分钟内将 Dubbo 服务接入 Istio 服务网格
- Dubbo泛化代码示例
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)详解架构师
- 阿里dubbo服务注册原理解析详解架构师
- 如何使用Dubbo服务和集成Spring详解架构师
- Dubbo项目一段时间后提供者消失详解编程语言
- dubbo布尔值序列化后没有is问题详解编程语言
- dubbo请求报文实例详解编程语言
- 使用Dubbo与Redis实现分布式计算(dubboredis)
- 如何动态获取Dubbo服务提供方地址列表
- Dubbo剖析-搭建一个简单的分布式系统(2)