SkyWalking定义
SkyWalking是一个优秀的国产开源框架,提供分布式链路追踪、服务网格(Service Mesh)遥测分析、度量(Metric)聚合和可视化一体化解决方案。
SkyWalking作用
微服务虽然作为当前系统架构的主流选型,但是随着业务扩展,微服务架构本身的复杂度也会膨胀,如下图所示:
如果当请求发生故障时,需要分析链路性能,追踪调用链路,排查和解决链路故障。
以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架构如下图所示:
上面架构图中,主要包含四个组件:
1.Agent探针
Agent负责收集日志数据:Agent以探针的方式,进行请求链路的数据采集,并向OAP服务器上报。
2.OAP后端
OAP负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析Analysis Core,存储到外部存储器 Storage ,最终提供查询Query 功能。
3.UI展现
UI负责提供web控制台,查看链路,查看各种指标,性能等。
4.Storage存储
数据的存储层,支持ElasticSearch、Mysql、H2多种方式。
SkyWalking工作流程
SkyWalking工作流程,大致分为如下4步:
第一步:服务通过探针的方式接入数据采集的功能。
第二步:请求链路的相关处理行为会上报到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!
第四步:安装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界面
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》