简介

官方地址:https://github.com/openzipkin/zipkinopen in new window

TIP

链路追踪Tracing Analysis为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率。

Zipkin运行架构

zipkin_xtrace_dg_workflow.png

产品架构(链路追踪)

xtrace_dg_workflow.png

链路追踪的主要工作流程如下

  1. 客户侧的应用程序通过集成链路追踪的多语言客户端SDK上报服务调用数据。链路追踪支持多种开源社区的SDK,且支持OpenTracing标准。
  2. 数据上报至链路追踪控制台后,链路追踪组件进行实时聚合计算和持久化,形成链路明细、性能总览、实时拓扑等监控数据。您可以据此进行问题排查与诊断。
  3. 调用链数据可对接下游阿里云产品,例如LogSearch、CloudMonitor、MaxCompute等,用于离线分析、报警等场景。

业务场景

随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构和容器技术的兴起,看似简单的一个应用,后台可能有几十个甚至几百个服务在支撑;一个前端的请求可能需要多次的服务调用最后才能完成;当请求变慢或者不可用时,我们无法得知是哪个后台服务引起的,这时就需要解决如何快速定位服务故障点,zipkin分布式跟踪系统就能很好的解决这样的问题。

zipkin_scenes.png

请求&响应

微服务架构下,一次请求后端会经历多个服务调用(所有请求链有相同的traceId和不同的spanId),都会沿着traceText带到每一个服务中。

数据是如何上报的?

直接上报数据

zipkin_data.png

不通过Agent而直接上报数据的原理(传统框架。PHP-FPM + Nginx模式)

  • ThinkPHP6.0
  • Laravel
  • Yii2.0

通过Agent上报数据

zipkin_data_agent.png

通过Agent上报数据的原理(现代化框架。命令行模式)

  • webman

[Unit] Description=Gogs After=syslog.target After=network.target After=mariadb.service mysql.service mysqld.service postgresql.service memcached.service redis.service

[Service]

Modify these two values and uncomment them if you have

repos with lots of files and get an HTTP error 500 because

of that

#LimitMEMLOCK=infinity #LimitNOFILE=65535 Type=simple User=www Group=www WorkingDirectory=/home/www/build/gogs ExecStart=/home/www/build/gogs web Restart=always Environment=USER=www HOME=/home/www

Some distributions may not support these hardening directives. If you cannot start the service due

to an unknown option, comment out the ones not supported by your version of systemd.

ProtectSystem=full PrivateDevices=yes PrivateTmp=yes NoNewPrivileges=true

[Install] WantedBy=multi-user.target

Last Updated:
贡献者: Tinywan