首页 > 其他分享 >微服务架构之分布式追踪(Zipkin)

微服务架构之分布式追踪(Zipkin)

时间:2022-08-26 19:25:07浏览次数:36  
标签:服务 调用 架构 请求 Zipkin RPC spanId 追踪 分布式

  在微服务架构中,由于服务之间做了拆分,一次请求往往要涉及多个服务的调用,不同的服务可能由不同的团队开发,使用不同的编程语言,还有可能部署在不同的机器上,分布在不同的数据中心。当请求出现异常问题时,我们需要知道本次请求调用了哪些服务,又是哪个服务引起的错误,如果靠人肉的方式,到每个服务去查找代码,查看日志,那么无疑是十分痛苦的,这时候分布式追踪系统应运而生。

服务追踪的作用

  除了能够快速定位请求失败的原因之外,服务追踪系统还需要记录调用经过的每一条链路上的耗时,这样在我们分析追踪数据时,就可以快速定位系统的瓶颈在哪里,针对耗时较长的链路,做出针对性的优化。通过追踪系统的链路可视化功能,可以更直观的看到请求的调用链路,及服务之间的依赖关系,我们可以凭此评估链路的调用是否合理,优化链路调用。同时链路追踪系统大多都集成了 生成系统调用关系网络拓扑的功能,它可以将整套系统间的服务调用关系完整的,直观的展示出来,通过网络拓扑可以更好的优化系统架构,找出系统层级间不合理的地方。

服务追踪的原理

  要理解服务追踪的原理,首先必须搞懂一些基本概念:traceId、spanId、annonation 等。

  

 

 

  • traceId:用于标识某一次具体的请求 ID。当用户的请求进入系统后,会在 RPC 调用网络的第一层生成一个全局唯一的 traceId,并且会随着每一层的 RPC 调用,不断往后传递,这样的话通过 traceId 就可以把一次用户请求在系统中调用的路径串联起来。    
  • spanId:用于标识一次 RPC 调用在分布式请求中的位置。当用户的请求进入系统后,处在 RPC 调用网络的第一层 A 时 spanId 初始值是 0,进入下一层 RPC 调用 B 的时候 spanId 是 0.1,继续进入下一层 RPC 调用 C 时 spanId 是 0.1.1,而与 B 处在同一层的 RPC 调用 E 的 spanId 是 0.2,这样的话通过 spanId 就可以定位某一次 RPC 请求在系统调用中所处的位置,以及它的上下游依赖分别是谁。
  • annotation:用于业务自定义埋点数据,可以是业务感兴趣的想上传到后端的数据,比如一次请求的用户 UID。

  简单的总结一下,traceId 是用于串联某一次请求在系统中经过的所有路径,spanId 是用于区分系统不同服务之间调用的先后关系,而 annotation 是用于业务自定义一些自己感兴趣的数据,在上传 traceId 和 spanId 这些基本信息之外,添加一些自己感兴趣的信息。

 

标签:服务,调用,架构,请求,Zipkin,RPC,spanId,追踪,分布式
From: https://www.cnblogs.com/jasonbourne3/p/16628910.html

相关文章

  • 招行架构师徐佳航:金融云原生与开源标准的共同生长
    简介: 云原生的技术价值喻示着它就是未来,加入到一个具有可延续性生命力的开源社区,可以帮助我们更快地到达那里。——徐佳航,KubeVelaMaintainer,来自招商银行基础设施研发中......
  • 微服务实践-快速搭建微服务架构
    微服务说起来高大尚,实际撸一遍来试试看,用现在比较常用的微服务框架,Consul和Ocelote做一个Demo,一起来试试吧!说在前面的话准备好环境,拉取源代码,按照每个章节中的【实践操......
  • 什么是 Serverless 架构?
    随着时间的推移,Serverless架构变得越来越火热,凭借着极致弹性、按量付费、低成本运维等特性,在很多领域发挥着越来越重要的作用;机器学习领域在近些年也非常火热,并在越来越......
  • win系统airtest+pytest-xdist服务器分布式运行。
    一.环境部署1.准备至少两台服务器,集群全部是局域网,(启动脚本的时候可以使用外网ip)。2.输出的报告地址,需要把文件夹设置成共享文件夹,(连接的时候使用内外ip)。importos,da......
  • 4、架构设计 - 软件技术系列文章
        架构设计主要是架构师要做的工作,其实技术经理也需要了解。对于架构,软件工程师如果想往上发展的必经之路。除了设计模式,就是架构设计的过程。这里需要熟悉设计模......
  • arm架构安装mysql5.7
    添加mysql用户组和mysql用户,用于隔离mysql进程groupadd-rmysql&&useradd-r-gmysql-s/sbin/nologin-Mmysql2.安装依赖库yuminstall-ylibaio*下载解压M......
  • MQ系列3:RocketMQ 架构分析
    MQ系列1:消息中间件执行原理MQ系列2:消息中间件的技术选型1背景我们前面两篇对主流消息队列的基本构成和技术选型做了详细的分析。从本篇开始,我们会专注当下主流MQ之一......
  • 前端架构-分层而治,铁打的MV流水的C
    大家好,我是Eluxjs的作者,Eluxjs是一套基于“微模块”和“模型驱动”的跨平台、跨框架『同构方案』,欢迎了解...文前声明,以下推断和结论纯属个人探索,鉴于本人知识水平所限,谬......
  • 分布式事务实战方案汇总
    1.最终一致性1.1本地事务表+轮询补偿交互流程  ①commitDB事务提交阶段本地客户端向DB进行事务提交,此时需要将业务数据和记录消息事务状态的信息表......
  • 常见的复制模型&分布式系统的挑战 事务,一致性与共识
    Replication(上):常见的复制模型&分布式系统的挑战https://mp.weixin.qq.com/s/LB5SR4ypQwDxzueI1ai2KgReplication(下):事务,一致性与共识https://mp.weixin.qq.com/s/O9Z5e_B......