SpringCloud分布式微服务链路追踪方案:Skywalking

一、引言

随着微服务架构的广泛应用,系统的复杂性也随之增加。在这种复杂的系统中,应用通常由多个相互独立的服务组成,每个服务可能分布在不同的主机上。微服务架构虽然提高了系统的灵活性和可扩展性,但也带来了新的挑战,尤其是在故障排查和性能优化方面。这时,链路追踪(Tracing)成为了一个非常重要的工具。

在这里插入图片描述
注:图片来自网络

如图,在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢?

  • 日志: 通过分析调用链路上的每个服务日志得到结果,这种方式耗时高效率低
  • zipkin:Zipkin是Twitter开源的分布式跟踪系统,是开箱即用的产品,主要用来收集系统的时许数据,从而追踪系统的调用问题,使用zipkin的web UI可以一眼看出延迟高的服务。
  • Skywalking,中国人吴晟(华为)开源的一款分布式追踪,分析,告警的工具,现在是Apache旗下开源项目,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

Zipkin使用方式请参考:SpringCloud分布式微服务链路追踪方案:Zipkin

本文只介绍Skywalking的使用方式。

二、skywalking介绍

skywalking官网:SkyWalking

考虑到部分读者的英语水平可能和博主差不多😂,这里推荐一个中文文档:https://github.com/SkyAPM/document-cn-translation-of-skywalking/blob/master/docs/README.md

架构设计
在这里插入图片描述

整个架构,分成上、下、左、右四部分:

考虑到让描述更简单,我们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

在这里插入图片描述

三、安装skywalking

1. 环境要求

在安装和使用 Skywalking 之前,需要确保以下环境要求:

  • JDK 8 或以上版本
  • 支持 Docker(可选)
  • 操作系统:Windows、Mac OS 或 Linux
  • 数据库(如 Elasticsearch、MySQL,用于存储数据)

2. 安装skywalking

下载 SkyWalking

Apache SkyWalking 官方网站 下载最新版本的 SkyWalking。下载完成后,解压文件。

下载地址:skywalking安装包

我们这里下载apache-skywalking-apm-es7-8.0.0.tar.gz版本,使用es7作为数据存储。

wget https://archive.apache.org/dist/skywalking/8.0.0/apache-skywalking-apm-es7-8.0.0.tar.gz
tar -xzf apache-skywalking-apm-es7-8.0.0.tar.gz
cd apache-skywalking-apm-bin-es7

配置 SkyWalking

配置文件位于 config 目录下,你可以根据需要修改 application.yml 文件。例如,配置存储为 Elasticsearch7:

vi application.yml

storage:
  # 配置使用的存储器,默认使用h2
  selector: ${SW_STORAGE:h2}
  elasticsearch:
    nameSpace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
    trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
    trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
    user: ${SW_ES_USER:""}
    password: ${SW_ES_PASSWORD:""}
    secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值