前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Aeraki Mesh 实现零代码侵入的 Dubbo 服务调用跟踪

使用 Aeraki Mesh 实现零代码侵入的 Dubbo 服务调用跟踪

作者头像
赵化冰
发布2022-10-04 21:20:58
4740
发布2022-10-04 21:20:58
举报

安装示例程序

如果你还没有安装示例程序,请参照 快速开始 安装 Aeraki,Istio 及示例程序。

执行完成后,在 meta-dubbo 这个 NS 中安装了基于 MetaProtocol 实现的 Dubbo 协议的示例程序。 我们将采用该 Dubbo 示例程序来进行测试。Dubbo Demo 程序的调用关系为:dubbo-sample-consumer –> dubbo-sample-provider –> dubbo-sample-second-provider 。

代码语言:javascript
复制
➜  ~ 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 的界面。

代码语言:javascript
复制
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 机制传递给下一个请求。


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装示例程序
  • 通过 Jaeger 查看 Tracing
  • 传递调用跟踪相关的 header
相关产品与服务
服务网格
服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档