感觉⽩活了!⾃从⽤了SkyWalking分布式链路追踪,睡得越来越
⾹了
本篇⽂章介绍链路追踪的另外⼀种解决⽅案Skywalking,⽂章⽬录如下:
什么是Skywalking?
Spring Cloud Sleuth+ZipKin,这种⽅案⽬前也是有很多企业在⽤,但是作为程序员要的追上⼀篇⽂章介绍了分布式链路追踪的⼀种⽅式:Spring Cloud Sleuth+ZipKin
逐⼀些新奇的技术,Skywalking作为后起之秀也是值得⼤家去学习的。
2017年加⼊Apache孵化器。短短两年就被Apache收⼊
2015年由个⼈吴晟(华为开发者)开源 , 2017
国产开源框架,2015
skywalking是⼀个优秀的国产开源框架
麾下,实⼒可见⼀斑。
skywalking⽀持dubbo,SpringCloud,SpringBoot集成,代码⽆侵⼊,通信⽅式采⽤GRPC,性能较好,实现⽅式是java探针,⽀持告
代码⽆侵⼊,通信⽅式采⽤GRPC,性能较好,实现⽅式是java探针,⽀持告警,⽀持JVM监控,⽀
持全局调⽤统计等等,功能较完善。
警,⽀持JVM监控,⽀持全局调⽤统计
Skywalking和Spring Cloud Sleuth+ZipKin如何选型?
Skywalking相⽐于zipkin还是有很⼤的优势的,如下:
skywalking采⽤字节码增强的技术实现代码⽆侵⼊,zipKin代码侵⼊性⽐较⾼
skywalking功能⽐较丰富,报表统计,UI界⾯更加⼈性化
个⼈建议:如果是新的架构,建议优先选择skywalking。
个⼈建议
Skywalking架构是怎样的?
skywalking和zipkin⼀样,也分为服务端和客户端,服务端负责收集⽇志数据并且展⽰,架构如下:
上述架构图中主要分为四个部分,如下:
上⾯的Agent:负责收集⽇志数据,并且传递给中间的OAP服务器
中间的OAP:负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进⾏分析(Analysis Core) ,存储到外部存储器( Storage ),最终中间的OAP
提供查询( Query )功能。
左⾯的UI:负责提供web控制台,查看链路,查看各种指标,性能等等。
右⾯Storage:负责数据的存储,⽀持多种存储类型。
右⾯Storage
看了架构图之后,思路很清晰了,Agent负责收集⽇志传输数据,通过GRPC的⽅式传递给OAP进⾏分析并且存储到数据库中,最终通过UI界⾯将分析的统计报表、服务依赖、拓扑关系图展⽰出来。
服务端如何搭建?
skywalking同样是通过jar包⽅式启动,需要下载jar包,地址:
1、下载安装包
V8.7.0这个版本,如下图:
选择V8.7.0
以上只是陈某的选择,可以按照⾃⼰的需要选择其他版本
解压之后完整⽬录如下图:
重要的⽬录结构分析如下:
agent:客户端需要指定的⽬录,其中有⼀个jar,就是负责和客户端整合收集⽇志bin:服务端启动的脚本
config
config:⼀些配置⽂件的⽬录
logs:oap服务的⽇志⽬录
oap-libs:oap所需的依赖⽬录
webapp
webapp:UI服务的⽬录
2、配置修改
启动之前需要对配置⽂件做⼀些修改,修改如下:
1、/l
这个是oap服务的配置⽂件,需要修改注册中⼼为nacos,如下图:
配置②
配置②:修改nacos的相关配置,由于陈某是本地的,则不⽤改动,根据⾃⼰情况修改。
2、l
8888,避免端⼝冲突,如下图:
8080,陈某将其改成8888
server.port配置,是UI服务的端⼝,默认8080
这个是UI服务的配置⽂件,其中有⼀个server.port
3、启动服务
启动命令在/bin⽬录下,这⾥需要启动两个服务,如下:
oap服务:对应的启动脚本oapService.bat,Linux下对应的后缀是sh
oap服务
UI服务
UI服务:对应的启动脚本webappService.bat,Linux下对应的后缀是sh
startup.bat启动⽂件,可以直接启动上述两个服务,我们可以直接使⽤这个脚本,直接双击,将会弹出两个窗⼝则表⽰启动成当然还有⼀个startup.bat
功,如下图:
客户端如何搭建?
客户端也就是单个微服务,由于Skywalking采⽤字节码增强技术,因此对于微服务⽆代码侵⼊,只要是普通的微服务即可,不需要引⼊什么依
还是上⼀篇Spring Cloud Sleuth的三个服务,如下:
skywalking-product1001:商品微服务
skywalking-product1001
skywalking-order1002:订单微服务
skywalking-order1002
skywalking-gateway1003:⽹关微服务
skywalking-gateway1003
案例源码结构⽬录如下图:
想要传输数据必须借助skywalking提供的agent,只需要在启动参数指定即可,命令如下:
mysql下载jar包-javaagent:E:\springcloud\apache-skywalking-apm-es7-8.7.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar-Dskywalking.agent.service_llector.backend_service=127.0.0.1:11800
上述命令解析如下:
-javaagent:指定skywalking中的agent中的skywalking-agent.jar的路径
-Dskywalking.agent.service_name:指定在skywalking中的服务名称,⼀般是微服务的spring.application.name
-Dskywalking.agent.service_name
-llector.backend_service
-llector.backend_service:指定oap服务绑定的地址,由于陈某这⾥是本地,并且oap服务默认的端⼝是11800,因此只需要配置为127.0.0.1:11800
上述参数可以在命令⾏通过java -jar xxx指定,在IDEA中操作如下图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论