编程语言
利用 ASP.NET Core 中的标头传播实现分布式链路追踪
作者介绍了一种新的 ASP.NET Core 集成方案,通过安装 `Microsoft.AspNetCore.HeaderPropagation` 包,使用 `HeaderPropagation` 中间件,避免了以往在不同微服务或子系统中显式传递 HTTP 请求头的问题。在 `Startup` 配置中添加请求头,通过 `AddHttpClient` 配置 `HttpClient` ,并在请求管道中加入 `UseHeaderPropagation` 中间件,以自动传播请求头。这种方案不仅适用于分布式链路追踪,如 Envoy 和 Jaegers,还适用于认证等其他场景,提高了代码的整洁与可维护性。
Envoy
Tracing
Jeager
2022-04-07
编程语言
Envoy 集成 Jaeger 实现分布式链路追踪
当将应用架构从单体系统迁移到微服务时,业务逻辑被拆分到不同服务中,导致微服务实际上是不同服务间的互相请求和调用。随着容器/虚拟化技术的发展,传统物理服务器被云服务器或虚拟资源取代,使得分布式环境中的运维和诊断变得复杂。主要的分布式追踪方向有 Logging、Metrics 和 Tracing,其中 Tracing 涉及 Envoy、Jaeger 和 .NET Core 的实现。分布式追踪系统基于 Dapper 论文,如 Zipkin、Jeager、Skywalking、LightStep 等系统,采用代码埋点、数据存储和查询展示三个步骤。OpenTracing 规范定义了 Trace 由多个 Span 组成,而每个 Span 包含多个 Tag。Envoy 通过 Zipkin 或 Jeager 支持外部追踪服务,实现分布式追踪。通过 Envoy 的 Gateway 模式实现请求追踪,结合 ASP.NETCore 和 Jeager 实现示例,展示服务调用链的追踪和分析。
Envoy
Jaeger
Tracing
2022-01-14