我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

深度了解Zipkin分布式跟踪系统

来源:网络 更新时间:2024-04-08 04:31:54

1、什么是ZipKin

Zipkin 是根据 Google 发表的论文“ Dapper” 进行开源实现的分布式跟踪系统。Dapper是Google 公司内部的分布式追踪系统,用于生产环境中的系统分布式跟踪。Google在其论文中解释称,他们“构建了Dapper,以向Google开发人员提供有关复杂分布式系统行为的更多信息。”系统复杂且分布式时,从不同角度观察系统对于故障排除至关重要。Zipkin可准确确定对应用程序的请求花费了多少时间。无论是代码内部的调用,还是对另一服务的内部或外部API调用,都可以对系统进行检测以共享上下文。在系统太复杂的情况下,可以选择使用样本追踪来减少系统开销。

官网地址: https://zipkin.io/

Github地址: https://github.com/openzipkin/zipkin

2、安装Zipkin

在 SpringBoot 2.x 版本后不推荐自定义 zipkin server,推荐使用官网下载的 jar 包方式。老版本jar下载地址: https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec 最新版本的服务jar下载地址: https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec 下载快速启动脚本: https://zipkin.io/quickstart.sh 这里使用ZipKin老版本: zipkin-server-2.12.9-exec.jar

运行:

java -jar zipkin-server-2.12.9-exec.jar

# 或集成RabbitMQ

java -jar zipkin-server-2.12.9-exec.jar --zipkin.collector.rabbitmq.addresses=127.0.0.1

3、信息持久化启动

链路信息默认存在内存中,需信息持久化。推荐使用Elasticsearch进行持久化。首先创建一个zipkin数据库,然后下载数据库脚本: https://github.com/openzipkin/zipkin/blob/2.12.9/zipkin-storage/mysql-v1/src/main/resources/mysql.sql 或者执行以下sql语句在zipkin数据库中。

CREATE TABLE IF NOT EXISTS zipkin_spans (
  ...
  ...
  ...

启动命令

java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=1234qwer

启动成功访问服务: http://127.0.0.1:9411/zipkin/

4、微服务集成Zipkin

4.1、 引入Maven依赖
...
...
...
4.2、 配置ZipKin信息

用户模块配置:

...
...
...

订单模块配置:

...
...
...

配置成功后,启动gateway-module、user-module、order-module模块相关服务。启动成功访问后台服务接口,可以看到在zipkin中已经加载了相关请求信息。

然后我们可以在看看数据库,检查下zipkin在数据库中信息是否持久化成功。查看下图可以发现数据也已经持久化成功了,这样不管zipkin重启多少次都不影响数据的展示。

5、ZipKin集成Dubbo

由于项目使用的是dubbo做为各服务模块之间的通信调用,要想zipkin采集到各服务模块的调用信息,需集成。操作也很方便,zipkin为我们提供了集成dubbo相关依赖。首先在dubbo提供者和消费者模块中引入maven依赖:

...
...
...

配置成功后,重新启动项目服务接口可以看出zipkin实现了对dubbo的链路追踪。查看下图可以发现该接口调用了订单和用户两个服务模块。

点击user-service-model可以查看出采集信息详情。

在zipkin导航菜单中,点击依赖可以查看每个服务模块的依赖信息。