【数媒在线课堂】基于 Opentracing+Jaeger 全链路灰度调用链

2025-03-05ASPCMS社区 - fjmyhfvclm

当网关和服务在实施全链路分布式灰度发布和路由时候,我们需要一款追踪系统来监控网关和服务走的是哪个灰度组,哪个灰度版本,哪个灰度区域,甚至监控从 Http Header 头部全程传递的灰度规则和路由策略。这个功能意义在于:

  • 不仅可以监控全链路中基本的调用信息,也可以监控额外的灰度信息,有助于我们判断灰度发布和路由是否执行准确,一旦有问题,也可以快速定位
  • 可以监控流量何时切换到新版本,或者新的区域,或者新的机器上
  • 可以监控灰度规则和路由策略是否配置准确
  • 可以监控网关和服务灰度上下级树状关系
  • 可以监控全链路流量拓扑图

笔者尝试调研了一系列分布式追踪系统和中间件,包括 Opentracing、Uber Jaeger、Twitter Zipkin、Apache Skywalking、Pinpoint、CAT 等,最后决定采用 Opentracing + Uber Jaeger 方式来实现,重要原因除了易用性和可扩展性外,Opentracing 支持 WebMvc 和 WebFlux 两种方式,业界的追踪系统能支持 WebFlux 相对较少

[️OpenTracing] OpenTracing 已进入 CNCF,正在为全球的分布式追踪系统提供统一的概念、规范、架构和数据标准。它通过提供平台无关、厂商无关的 API,使得开发人员能够方便的添加(或更换)追踪系统的实现。对于存在多样化的技术栈共存的调用链中,Opentracing 适配 Java、C、Go 和.Net 等技术栈,实现全链路分布式追踪功能。迄今为止,Uber Jaeger、Twitter Zipkin 和 Apache Skywalking 已经适配了 Opentracing 规范

全部评论