Apache-ShardingSphere-Incubating性能监控指南

10次阅读

共计 2265 个字符,预计需要花费 6 分钟才能阅读完成。

作者

张永伦,京东数科高级软件工程师,Apache ShardingSphere (Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网络 IO、性能优化方面的技术挑战。目前专注于 Sharding-Proxy 的持续优化和 APM 的开发工作。


看过《Apache ShardingSphere(Incubating) 对接京东白条实战》的同学应该都了解,对接白条过程中遇到的问题几乎全部是借助于 SGM 来定位并解决的,可见性能监控的重要性。相对于商业化的 SGM 产品,ShardingSphere 也提供了开源的解决方案。近期,ShardingSphere 的性能监控能力又得到了一次加强,为用户提供了多样化的选择,在此一并总结一下。

概念

APM(Application Performance Monitoring) 是应用性能监控的缩写。目前 APM 的主要功能着眼于分布式系统的性能诊断,其主要功能包括调用链展示,应用拓扑分析等。

ShardingSphere 并不负责如何采集、存储以及展示应用性能监控的相关数据,而是将 SQL 解析与 SQL 执行这两块数据分片的最核心的相关信息发送至应用性能监控系统,并交由其处理。换句话说,ShardingSphere 仅负责产生具有价值的数据,并通过标准协议递交至相关系统。ShardingSphere 可以通过两种方式对接应用性能监控系统,下面分别介绍。

SkyWalking 自动探针

ShardingSphere 团队与 SkyWalking 团队共同合作,在 SkyWalking 中实现了 ShardingSphere 自动探针,可以将相关的应用性能数据自动发送到 SkyWalking 中。目前支持的版本的有:Sharding-JDBC 1.5.x 和 ShardingSphere 3.0.0,随后 ShardingSphere 4.0.0-RC1 也会很快得到支持。未来 ShardingSphere 的每个版本都会保证 SkyWalking 的自动探针可用,可以在 SkyWalking 的支持列表里查到具体版本:

https://github.com/apache/sky…

SkyWalking 最近发生了两件大事,一个是从孵化器毕业,成为 Apache 顶级项目;另一个是完成了新 UI 的升级。那么到底会有什么惊喜?接下来就让我们一起动手体验。

使用自动探针的方式,不会对代码有任何侵入,只需要搭建 SkyWalking 的环境就可以了。没有使用过的小伙伴不要害怕,全程几乎只要执行一个脚本就完成了, 这一点非常人性化。详情见 https://github.com/apache/sky…。

<center> 拓扑图展示 </center>

ShardingSphere 连接两个真实数据库,每个数据库中有两个表。拓扑图中可以显示出服务间的调用类型,请求量,平响等信息。

<center> 追踪数据展示 </center>

从跟踪图中可以能够看到 SQL 解析和执行的情况。

/Sharding-Sphere/parseSQL/ : 表示本次逻辑 SQL 的解析性能。

/Sharding-Sphere/executeSQL/ : 表示具体执行的真实 SQL 的性能。

在追踪 /Sharding-Sphere/executeSQL/ 的同一线程中,JDBC 自动探针会展示真实 SQL 的详细信息。

OpenTracing 规范

这种方式是使用 OpenTracing API 发送性能追踪数据。面向 OpenTracing 协议的 APM 产品都可以和 ShardingSphere 自动对接,比如 SkyWalking,Zipkin 和 Jaeger。使用这种方式只需要在启动时配置 OpenTracing 协议的实现者即可。它的优点是可以兼容所有的与 OpenTracing 协议兼容的产品作为 APM 的展现系统,如果采用公司愿意实现自己的 APM 系统,也只需要实现 OpenTracing 协议,即可自动展示 ShardingSphere 的链路追踪信息。缺点是 OpenTracing 协议发展并不稳定,较新的版本实现者较少,且协议本身过于中立,对于个性化的相关产品的实现不如原生支持强大。

想使用 SkyWalking 的同学,由于有自动探针的存在,已经不需要用这种方式了。所以,接下来以 Zipkin 为例为大家展示另一种监控效果。

Zipkin 是 Twitter 基于 Google 的论文 Dapper 的开源实现,用于跟踪分布式服务之间的应用数据链路,分析处理延时,帮助我们改进系统的性能和定位故障。环境搭建请参考:

https://zipkin.apache.org/pag…。

<center> 追踪数据展示 </center>

/Sharding-Sphere/parseSQL/

/Sharding-Sphere/executeSQL/

可以看到,今天介绍的两种方式,界面不同,但展示的信息是一样的。需要强调的是,ShardingSphere 使用的 OpenTracing 版本是 0.30.0,并不支持 0.31.0 及以上版本。0.31.0 较之前变化较大,基础的类名都有变化,如 ActiveSpan 变为 Scope。所以,如果想使用 0.30.0 以上版本,用户需要定制开发。

小结

对于新用户,推荐第一种方式,不需要考虑版本兼容性问题,插件丰富,有非常高的易用性。而且刚从 Apache 毕业的 SkyWalking 社区活跃度很高,会不断的有新东西涌现出来。对于之前已选型非 SkyWalking 的用户,应该使用第二种方式,实现 OpenTracing 接口的监控系统都可以接入。

正文完
 0