分布式追踪:服务网格、跨度构建与性能考量
在分布式系统中,对应用进行有效监控和性能分析是至关重要的。本文将深入探讨服务网格的应用、服务图的构建、跨度(Span)的创建以及相关的性能和安全考虑。
服务网格与框架的结合
在进行应用监控时,集中请求的组件是一个很好的切入点。例如,一个直接调用多个服务的客户端,而非通过代理层调用。这时,可以将客户端作为集中点,并在此处添加初始的监控代码。
当谈到框架监控的权衡时,一个常见的问题是“如果无法修改代码怎么办”。在大型组织中,监控应用的人员与开发应用的人员可能因地理位置、时区等因素分离,导致无法修改要监控的服务代码。对于这种情况,可以从能够触及的代码部分入手进行监控。
服务网格是一个可配置的基础设施层,旨在支持服务间的进程间通信。通常通过边车代理(Sidecar Proxy)实现,边车代理与每个服务实例并行运行,处理其关联服务的所有进程间通信。除了服务通信,服务网格及其边车还可以处理监控、安全、服务发现、负载均衡、加密等功能,实现了开发和运维关注点的分离,使团队能够专注于编写高性能、安全和可靠的软件。
服务网格监控的工作方式是,由于所有进程间通信都流经边车代理,因此可以在代理本身添加跟踪功能。在许多现代服务网格项目(如Istio)中,此功能开箱即用。对于传入请求,从请求头中提取跨度上下文,使用该上下文创建新的跨度,并添加描述操作的标签,在请求解决时结束跨度。
这种监控方式的最大优势是可以全面了解应用。通过在服务网格层面进行监控,所有由服务网格管理的服务都将成为跟踪的一部分,从而更深入地了解整个应用。此外,服务网格监控与每个服务的传输层无关,只要流量通过边车,就会被跟踪。
<
超级会员免费看
订阅专栏 解锁全文
46

被折叠的 条评论
为什么被折叠?



