微服务调用链追踪中心搭建
2023-06-11 01:01:52发布 浏览540次 信息编号:58455
友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。
微服务调用链追踪中心搭建
一个完整的微服务系统包括多个微服务单元,各个微服务子系统之间相互调用,形成调用链。 我们需要了解和收集客户端请求有哪些组件,哪些微服务,总的请求时间,每个组件从发送到响应的时间等信息,帮助我们定位性能瓶颈,进行性能调优. 需要监控整个微服务架构的调用链。 本文将讲解如何使用和搭建微服务调用链跟踪中心。
概述
一个完整的微服务系统包括多个微服务单元,各个微服务子系统之间相互调用,形成调用链。 我们需要了解和收集客户端请求有哪些组件,哪些微服务,总的请求时间,每个组件从发送到响应的时间等信息,帮助我们定位性能瓶颈,进行性能调优. 需要监控整个微服务架构的调用链。 本文将讲解如何使用和搭建微服务调用链跟踪中心。
第一次接触
正如官网描述的那样,它是一个分布式跟踪系统,可以帮助我们采集时序数据,用来解决微服务架构中的延迟问题,更直白的说,它可以帮助我们跟踪调用的轨迹。
设计架构如下图所示:
要看懂这张图,需要先了解几个核心概念:
调用应用程序中安装的发送数据的组件,目的是跟踪数据收集
当一个组件在微服务中被调用时,从发出请求到被响应的过程会持续一段时间,这个跨度称为Span
从发送请求到完成请求处理,中间会有一个调用链,这整个过程称为轨迹(Trace)。 一个 Trace 可能包含多个 Span,而每个 Span 都有一个更高级的 Trace。
一种数据传输方式,比如最简单的HTTP方式,当然可以换成高并发的Kafka等消息队列
看完基本概念,再结合上面的架构图,你可以试着理解只有配备了组件的组件才能发送跟踪数据。 跟踪数据由收集器收集,然后保存在其中。 最终需要数据的一方可以通过UI接口调用API接口,从而最终拿到里面的数据。 可以看出整体流程并不复杂。
官网给出了多种常用语言的支持:
接下来,本文将构建一个微服务追踪的实验场景,使用Brave辅助构建微服务调用链追踪中心!
部署服务
通过以下方式部署服务再简单不过了:
完成后浏览器打开::9411可以看到可视化界面:
模拟微服务调用链
我们来构建一个如下图所示的调用链:
该图包含一个客户端+三个微服务:
为了模拟明显的延迟效果,准备用代码在每个接口的响应中加入3s的延迟。
为简单起见,我们使用三个微服务来实现。
控制器代码如下:
代码如下:
代码如下:
我们将三个微服务都启动起来,然后在浏览器中输入:8881/发送请求。 9s后,我们会拿到中提供的微服务接口返回的内容,如下图:
显然,调用链是可以正常工作的!
那么接下来我们就介绍一下这个调用链的追踪信息!
编写和交流工具组件
从官网可以了解到,借助库Brave,我们可以开发一个封装了Brave的公共组件,使其可以方便的嵌入到 的服务中,完成与 的通信。
为此,我们需要创建一个新的基于 Maven 的 Java 项目:
它包含 和 两个属性,我们最终需要将这两个参数提供给,,微服务作为里面的配置
使用之后,这个类非常简单!
[注:关于用法,可以看这里]
这堂课非常重要。 其中,我们在拦截器调用链中注册了Brave的拦截器,用于收集请求数据; 同时,我们还在调用链中注册了Brave的eptor拦截器,用于收集响应数据
让我们转到代码:
完成后,我们需要在. 三个项目中:
例如:
我们终于依次启动 、 、 三个微服务,开始实验收集链接跟踪数据!
## 实际实验
1.依赖分析
在浏览器打开的UI界面,可以查看依赖分析:
图中清晰的展示了 , 和 三种服务的调用关系! 注意图形可以缩放,每个元素都可以点击,比如点击这个微服务,可以看到它的调用链的上下游!
2.找到调用链
接下来,让我们看一下调用链。 点击服务名称可以看到所有被监控的服务:
同时可以查看Span。 例如,它的所有 REST 接口都在下拉列表中:
例如,单击“查找”可查看其所有跟踪信息:
点击具体的Trace,还可以看到各个Span的详细信息,如下图,可以看到A→B→C调用过程中各个REST接口的详细时间戳:
点击一个REST接口进入查看更详细的信息,比如查看/this REST接口,可以看到从发送请求到收到响应的所有详细步骤:
后记
作者关于容器化应用程序的其他文章:
更多作者原创文章:这里
提醒:请联系我时一定说明是从星空网上看到的!