ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从0到微服务-7 服务追踪

2022-05-21 23:01:19  阅读:172  来源: 互联网

标签:调用 服务 系统 RPC spanId 追踪


微服务架构常见的组成部件:

接下来,我们具体学习下微服务追踪内容:

简单理解下:其实不光微服务,之前的单体应用也有追踪系统,就是说服务提供者本身出现了问题或者服务之间调用失败,我们怎么样快速的定位到在哪个环节出现问题,这就是我们今天要学习的服务追踪系统。

 

服务追踪的作用

快速定位请求失败原因

优化系统瓶颈(系统首页很慢,能定位到具体什么原因导致)

优化链路调用(减少不必要的服务依赖)

生成网络拓扑(服务之间的依赖关系图)

透明传输数据(用户登录系统认证信息)。

 

服务追踪系统原理

核心理念就是调用链:通过一个全局唯一的 ID 将分布在各个服务节点上的同一次请求串联起来,从而还原原有的调用关系,可以追踪系统问题、分析调用数据并统计各种系统指标。

后续的各种服务追踪系统都是基于Dapper衍生出来的,比较有名的阿里的鹰眼、美团的MTrace(初学者来说理解起来相对容易一些)、Twitter的Zipkin

Dapper.NET——轻量ORM - Cooper_Liu - 博客园 (cnblogs.com)

(37条消息) 阿里巴巴鹰眼系统了解_yongshenghuang的博客-CSDN博客_鹰眼系统

(37条消息) 美团-分布式会话跟踪系统架构设计与实践_贾红平的博客-CSDN博客

 

 

要理解服务追踪的原理,首先必须搞懂一些基本概念: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 这些基本信息之外,添加一些自己感兴趣的信息。

美团技术团队 (meituan.com)

 

服务追踪系统实现

上面是服务追踪系统架构图,你可以看到一个服务追踪系统可以分为三层。

数据采集层,负责数据埋点并上报。

数据处理层,负责数据的存储与计算。

数据展示层,负责数据的图形化展示。

 

标签:调用,服务,系统,RPC,spanId,追踪
来源: https://www.cnblogs.com/chch213/p/16296313.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有