暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

架构系列——微服务调用链路追踪之Zipkin

荣叔与架构 2022-03-03
997

相关文章:

《架构系列--传统架构和微服务架构下如何实现全链路跟踪?》

《架构系列——微服务调用链路追踪之Sleuth》

《架构系列——微服务调用链路追踪之ELK》

一、Zipkin介绍

Zipkin 是一个分布式链路追踪系统。功能包括链路数据收集、存储、查找、展示。它可以帮助开发人员或系统运维人员及时了解应用程序及其底层服务的执行情况,以识别和解决性能问题或者是发现错误的根本原因。可以在请求通过应用系统时提供端到端的视图,并显示应用程序底层组件相关调用关系,从而帮助开发人员分析和调试生产环境下的分布式应用程序。

二、Zipkin 整体架构

分成三个部分,简要说明如下:

1、Zipkin Tracer :负责从应用中,收集分布式场景下的调用链路数据,发送给 Zipkin Server 服务;

2、Transport :链路数据的传输方式,目前有 HTTP、MQ 等方式;

3、Zipkin Server :负责接收 Tracer 发送的 Tracing 数据信息,将其聚合处理并进行存储,后提供查询功能。之后,用户可通过 Web UI 方便获得服务延迟、调用链路、系统依赖等等。

三、准备Zipkin Server

1、搭建

搭建 Zipkin 有两种方式,一种是直接下载 Jar 包,这是官方推荐的标准集成方式;另一种是通过引入 Zipkin 依赖项的方式,在本地搭建一个 Spring Boot 版的 Zipkin 服务器。如果你需要对 Zipkin 做定制化开发,那么可以采取后一种方式。

在 Spring Boot 2.0 之后,Zipkin 的官方社区就不再推荐我们通过自定义的方式搭建 Zipkin Server 端了。除非有很特殊的定制需求,否则还是推荐使用 zipkin 的可执行 jar 包,并通过标准的启动参数来搭建 Zipkin 服务器。

2、启动Zipkin

使用java -jar命令启动jar包,当然在启动时可以设置链路数据的传输方式,通常情况下会选择MQ的方式,比如RabbitMQ,让各个应用服务器将服务调用链信息传递给 RabbitMQ,而 Zipkin 服务器则通过监听 RabbitMQ 的队列来获取调用链数据。相比于让微服务通过http接口直连 Zipkin,使用消息队列可以大幅提高信息的送达率和传递效率。启动命令行中设置zipkin.collector.rabbitmq.addresses 参数。

Zipkin 已经内置了 RabbitMQ 的默认连接属性,如果没有特殊指定,那么 Zipkin 会使用 guest 默认用户登录 RabbitMQ。如果你想要切换用户、指定默认监听队列或者设置连接参数,那么可以在命令行中添加相关参数。

可以使用上述配置的RabbitMQ的账号密码登录后台,查看对应队列信息。

三、微服务配置

用MQ的方式来传输链路数据,那么各个微服务相当于MQ的发布者,将日志数据发布到指定的队列中。

1、添加依赖

在每个微服务模块的 pom.xml 中添加 Zipkin 适配插件和 Stream 的依赖。其中,Stream 是 Spring Cloud 中专门用来对接消息中间件的组件;

2、配置application.yml

将 Zipkin 的配置信息添加到每个微服务模块的 application.yml 文件中。

配置zipkin.sender.type 属性,指定传输类型为 RabbitMQ,除了 RabbitMQ 以外,Zipkin 适配器还支持 ActiveMQ、Kafka 和http直连的方式;

配置spring.zipkin.rabbitmq 属性,用来声明消息组件的连接地址和消息投递的队列名称。

四、查看链路追踪信息

经过以上步骤基本完成Zipkin的部署,使用Zipkin的后台即可查看链路数据了。可以通过一些接口调试工具发起跨服务的调用,随后使用Zipkin可视化查看链路数据。具体怎么使用就不说了。

五、Zipkin的存储功能

Zipkin 在默认情况下将链路数据保存在内存中,默认最多保存 50000 个 Span 数据,这种方式是不能应用在生产环境中的。

Zipkin 支持通过 Cassandra、ElasticSearch 和 MySQL 这三种方式保存数据,如果你想要将内存方式切换为其它数据源,则需要在启动命令中添加数据源的连接信息,相关启动参数可以在Zipkin Server的配置文件中找到。可以在 zipkin.storage 节点下找到每个数据源的参数列表,通过 zipkin.storage.type 字段你可以指定 Zipkin 的数据源。


文章转载自荣叔与架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论