SkyWalking最全详解(作用原理及使用流程)

SkyWalking最全详解(作用原理及使用流程)-mikechen

SkyWalking定义

SkyWalking是一个优秀的国产开源框架,提供分布式链路追踪、服务网格(Service Mesh)遥测分析、度量(Metric)聚合和可视化一体化解决方案。

 

SkyWalking作用

微服务虽然作为当前系统架构的主流选型,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,如下图所示:

SkyWalking最全详解(作用原理及使用流程)-mikechen

如果当请求发生故障时,需要分析链路性能,追踪调用链路,排查和解决链路故障。

以SkyWalking为代表的链路追踪的出现,正是为了解决这种问题,它可以在复杂的服务调用中定位问题。

 

为什么选择SkyWalking

链路追踪的框架有很多,比如:谷歌的Dapper(链路追踪领域的始祖),以及Spring Cloud Sleuth,韩国的Pinpoint,Twitter的Zipkin,还有就是今天重点谈到的中国的SkyWalking。

Skywalking相比于Zipkin等这些链路追踪框架,有自己的优势,主要体现在3点:

1.代码无侵入

Skywalking采用字节码增强的技术实现,代码无侵入,Zipkin代码侵入性比较高。

2.功能丰富

首先,链路追踪、拓扑分析的能力强,采用先进的流式拓扑分析设计。

其次,Skywalking功能比较丰富,插件丰富,报表统计,UI界面更加人性化。

3.产品完善度高

Java生态功能丰富,社区活跃,迭代迅速。

如果是新的架构,个人建议优先选择Skywalking。

 

SkyWalking架构原理

SkyWalking和Zipkin一样,也分为服务端和客户端,服务端负责收集日志数据并且展示。

SkyWalking架构如下图所示:

SkyWalking最全详解(作用原理及使用流程)-mikechen

上面架构图中,主要包含四个组件:

1.Agent探针

Agent负责收集日志数据:Agent以探针的方式,进行请求链路的数据采集,并向OAP服务器上报。

2.OAP后端

OAP负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析Analysis Core,存储到外部存储器 Storage ,最终提供查询Query 功能。

3.UI展现

UI负责提供web控制台,查看链路,查看各种指标,性能等。

SkyWalking最全详解(作用原理及使用流程)-mikechen

4.Storage存储

数据的存储层,支持ElasticSearch、Mysql、H2多种方式。

 

SkyWalking工作流程

SkyWalking工作流程,大致分为如下4步:

SkyWalking最全详解(作用原理及使用流程)-mikechen

第一步:服务通过探针的方式接入数据采集的功能。

第二步:请求链路的相关处理行为会上报到OAP服务中。

第三步:进行数据的聚合管理和分析,并存储在持久层。

第四步:通过UI界面进行可视化呈现收集的数据。

 

SkyWalking安装使用

接下来,我们在CentOS中搭建Skywalking的可观测性分析平台OAP环境,Skywalking默认使用H2内存中进行数据的存储,可以替换存储源为ElasticSearch保证其查询的高效。

第一步:SkyWalking下载

https://www.apache.org/dyn/closer.cgi/skywalking/9.2.0/apache-skywalking-apm-9.2.0.tar.gz

第二步:安装后端服务

#修改配置文件
vim config/application.yml
storage:
  selector: ${SW_STORAGE:h2}
把存储由h2改为elasticsearch:
storage:
  selector: ${SW_STORAGE:elasticsearch}
  
#注意把自己的ES地址配置上
SW_STORAGE_ES_CLUSTER_NODES
#有用户名密码,也要配置上
user: ${SW_ES_USER:"elastic"}
password: ${SW_ES_PASSWORD:"123456"}

第三步:初始化数据

bin/oapServiceInit.sh 
SkyWalking OAP started successfully!

SkyWalking最全详解(作用原理及使用流程)-mikechen

第四步:安装UI服务

#修改UI配置
server:
  port: 8081  # 端口
    discovery:
      client:
        simple:
          instances:
            oap-service:
              - uri: http://127.0.0.1:12800 #Skywalking的后台地址

 

第五步:启动Skywalking服务端

bin/startup.sh 
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!

#查看SkyWalking是否已经启动
#jps
52129 skywalking-webapp.jar
58738 Jps
72919 OAPServerStartUp
#已经启动成功

进入SkyWalking的UI界面

SkyWalking最全详解(作用原理及使用流程)-mikechen

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法