「这是我参与2022首次更文挑战的第34天,活动详情查看:2022首次更文挑战」
欢迎阅读本专题内的文章,专题地址:juejin.cn/column/7053…
本文项目代码gitee地址: gitee.com/wei_rong_xi…
前文当中,我们对整个微服务下单流程的性能进行了一些列的优化,最终实现
并发500的场景下,500订单全部下单成功,支付成功,且耗时从48秒提升到了6秒,效果是显而易见的。但是为了我们更好地分析系统的瓶颈,我们需要一套帮助我们分析和监控系统运行状态的组件,不能出现问题在解决,我们需要在问题出现前就发现并解决它。在本篇中将会集成SkyWalking(链路追踪组件)到我们的系统中,为我们保驾护航。
关于什么介绍的,我就不介绍了,直接说干货,教你怎么用。
一、服务端安装
下载地址:skywalking.apache.org/downloads/ ,选择Distribution
解压后内容如下所示:
修改配置文件application.yml,此处修改为mysql,因为我们使用mysql存储数据,不修改则默认使用h2,当然它还提供很多种数据库,以后可以根据实际情况选择:
修改MySQL的配置:
需要手动添加mysql的驱动包到aop-libs下,根据自己的mysql版本:
启动直接双击startup.bat,如下图所示:
访问http://localhost:8080/ ,默认是8080端口
它的sql都是自动生成的,所以不需要我们手动导入数据。
二、agent配置
下载agent,地址skywalking.apache.org/downloads/ ,选择Distribution
解压后如下所示:
修改config文件夹中的agent.config文件,其中有两个最重要:
-
你的服务名:
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName} -
向后台发送数据的接口,默认是
127.0.0.1:11800,如果不是同一台服务器,注意修改:collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
我们不采用在配置文件当中修改的方式,使用命令动态配置的方式,我以网关服务rob-necessities-gateway为例,在idea中的jvm参数配置添加如下:
-javaagent:E:\skywalking\skywalking-agent\skywalking-agent.jar=agent.service_name=rob-necessities-gateway,collector.backend_service=127.0.0.1:11800
启动网关服务看看页面的效果,注意在需要访问网关几次才能看到结果,我们访问网关的接口文档http://localhost:8000/doc.html。
访问skywalking的控制台页面http://localhost:8080/ :
如果看到自己的服务就表示集成成功了啊。
在linux的部署和集成步骤都是一样的,本文不作赘述了,相信有些基础的同学们都能够自己完成部署。
三、测试并监控我们的下单程序
首先将我们所有的程序,在启动时都配置上agent参数,注意修改服务名称。
当都配置成功后我们会看到如下:
当我们调用一次上一篇文章的并发500个订单接口,看看skywalking给我们自动绘制的链路追踪拓扑图:
能够发现我们的服务都在此拓扑图上,并且清晰的标注着相互间的调用关系,同时还有mysql数据库也在。
注意红色的服务,表示此服务是健康的,也就是说在服务调用中,可能存在失败的情况。
点击此节点,还能具体查看此节点的每个时刻的qps,请求成功率等数据:
skywalking同样提供接口请求追踪的功能,我们看订单服务的下订单接口:
如上如清晰地描述你的请求的全部过程,同时提供每一步消耗的时间,能够清晰地定位到你的接口瓶颈究竟在哪里。
关于skywalking的使用和功能我就简单介绍,需要的同学们自己去看相关文档详细学习。