技术沙龙第七期

涛涛:

今天给大家分享的是一个分布式链路追踪工具SkyWalking

涛涛:

介绍这个工具是根据之前space项目优化tps 导致程序中需要频繁记录日志排查影响tps,所以了解了下链路是追踪工具(未投入使用)

涛涛:

提到分布式链路追踪工具大家第一点想到的是zipkin ,对比zipkin,SkyWalking 的优势接下来会逐一介绍

涛涛:

skywalking支持dubbo,SpringCloud,SpringBoot集成,代码无侵入,通信方式采用GRPC,性能较好,实现方式是java探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善

涛涛:

skywalking采用字节码增强的技术实现代码无侵入,zipKin代码侵入性比较高
skywalking功能比较丰富,报表统计,UI界面更加人性化
所以针对目前服务未使用过链路追踪工具,建议使用SkyWalking

涛涛:

上边的是SkyWalking的一个架构图

涛涛:

上面的Agent:负责收集日志数据,并且传递给中间的OAP服务器
中间的OAP:负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
左面的UI:负责提供web控制台,查看链路,查看各种指标,性能等等。
右面Storage:负责数据的存储,支持多种存储类型(根据系统使用量决定存储类型)。

涛涛:

skywalking在性能剖析方面真的是非常强大,提供到基于堆栈的分析结果,能够让运维人员一眼定位到问题。

涛涛:

我们在代码中故意休眠了2秒,看看如何在skywalking中定位这个问题。

涛涛:

在性能剖析模块->新建任务->选择服务、填写端点、监控时间,操作如下图:

涛涛:

上图中选择了最大采样数为5,则直接访问5次:http://localhost:8888/order/list,然后选择这个任务将会出现监控到的数据

涛涛:

可以看到{GET}/order/list这个接口上耗费了2秒以上,因此选择这个接口点击分析,可以看到详细的堆栈信息

涛涛:

直接可以定位到代码中睡眠2秒钟

涛涛:

skywalking 监控带有默认的规则 同时还适配了一些钩子(webhooks)。其实就是相当于一个回调,一旦触发了上述规则告警,skywalking则会调用配置的webhook,这样开发者就可以定制一些处理方法,比如发送邮件、微信、钉钉通知运维人员处理。

涛涛:

这就是国产软件的优势

涛涛:

对于代码入侵 skywalking 只是提供了agent 只要是普通的微服务即可,不需要引入什么依赖

涛涛:

只需要启动的时候增加启动命令即可

涛涛:

最后给大家提一个小建议 在我们选型中间件或者设计中间件的时候 尽量减少代码入侵行,可以大幅度的减少二次开发, 在满足其他中间件功能的同时 考虑新组件的兼容性、易用性