分布式系统中的分布式链路追踪与分布式调用链路

本文分享自天翼云开发者社区《分布式系统中的分布式链路追踪与分布式调用链路》,作者:c****w

在分布式系统中,由于服务间的调用关系复杂,需要实现分布式链路追踪来跟踪请求在各个服务中的调用路径和时间消耗。这对问题排查和性能监控都很重要。

常用的分布式链路追踪实现有基于日志的和基于分布式追踪系统的两种方式:

基于日志的实现方式是在每个服务中记录自己的请求id和上下文信息,并在日志中打印出来。这样可以通过聚合各个服务的日志来还原整个请求链路。

基于分布式追踪系统的实现方式是: 使用开源Tracing系统,比如Zipkin。每个服务都需要集成Tracing客户端库。 客户端在发起请求时,生成一个唯/一的TraceId并传递给下游服务。 每个服务接收到请求都需要记录Span数据,包括操作名、时间戳等。 所有Span数据通过消息队列发送给Tracing系统。 Tracing系统将收集的Span通过时间排序后重构成一条链路。

这里继续扩展分布式链路追踪的几点内容: 1.数据收集方式除了日志和Tracing系统外,还可以采用专用Agent向中心服务器报告追踪数据。 2.链路数据展示可以通过可视化追踪系统实现,支持过滤、聚合查询等功能寻找性能瓶颈。 3.链路数据可以进一步用于异常监控,比如追踪错误请求的整个调用链路排查问题。 4.链路数据也可以用于应用性能监控(APM),追踪每个服务的响应时间分布找出慢服务。 5.分布式追踪需要考虑大量分布式调用产生的高并发压力,选择性能优异的追踪系统实现。 6.链路数据可以通过机器学习算法进行分析,自动学习出正常调用模式,找出异常调用路径。 7.链路ID的传播需要考虑多种语言和协议的兼容,保证ID的上下文传递。 8.链路数据的存储和查询也是一个重要问题,需要考虑大规模分布式追踪数据的处理能力。 9.链路采样是一种常用优化手段,只对部分请求进行详细追踪,降低系统压力。

以上内容给出了分布式链路追踪在数据收集、展示、应用等方面的一些进一步思路,对系统设计和优化很有帮助。

点赞
收藏

评论区

加载中...

相关推荐

服务追踪工具 SkyWorking 搭建使用

服务追踪工具SkyWorking搭建使用是用于对微服务,CloudNative,容器等提供应用性能监控和分布式调用链追踪的工具截图环境SkyWalking5.0.0beat2MacOSElasticSearch5.6.

Dubbo日志链路追踪TraceId选型

!mark(https://oscimg.oschina.net/oscnet/updd1ad9729fb807ee6dc473bdc283b1a4481.png)一、目的开发排查系统问题用得最多的手段就是查看系统日志,但是在分布式环境下使用日志定位问题还是比较麻烦,需要借助全链路追踪ID把上下文串联起来,本文主要分享基于

Opentracing + Uber Jaeger 全链路灰度调用链,Nepxion Discovery

当网关和服务在实施全链路分布式灰度发布和路由时候,我们需要一款追踪系统来监控网关和服务走的是哪个灰度组,哪个灰度版本,哪个灰度区域,甚至监控从HttpHeader头部全程传递的灰度规则和路由策略。这个功能意义在于:不仅可以监控全链路中基本的调用信息,也可以监控额外的灰度信息,有助于我们判断灰度发布和路由是否执行准确,一旦有问题,也可以快速定位

Dubbo + Zipkin + Brave实现全链路追踪

DubboZipkinBrave实现全链路追踪最近写了一个链路追踪Demo分享下,实现了链路追踪过程中数据的记录,还有能扩展的地方,后期再继续补充。原理参考上面文章《Dubbo链路追踪——生成全局ID(traceId)》(https://my.oschina.net/Luc

APM监控

一,基础知识储备分布式跟踪的目标一个分布式系统由若干分布式服务构成,每一个请求会经过多个业务系统并留下足迹,但是这些分散的数据对于问题排查,或是流程优化都很有限,要能做到追踪每个请求的完整链路调用,收集链路调用上每个服务的性能数据,计算性能数据和比对性能指标(SLA),甚至能够再反馈到服务治理中,那么这就是分布式跟踪的目标。分布式跟踪的目的

SOFAStack 活动回顾整理集合(含视频回顾)

SOFAStack是蚂蚁金服完全自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,如微服务研发框架、RPC框架、服务注册中心、分布式定时任务、限流/熔断框架、动态配置推送、分布式链路追踪、Metrics监控度量、分布式高可用消息队列、分布式事务框架和分布式数据库代理层等。SOFAStack:https://gitee.com/