Apache ShardingSphere (Incubating)性能监控指南

作者

张永伦,京东数科高级软件工程师,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...

拓扑图展示

Apache ShardingSphere (Incubating)性能监控指南_第1张图片

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

追踪数据展示

Apache ShardingSphere (Incubating)性能监控指南_第2张图片

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

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

Apache ShardingSphere (Incubating)性能监控指南_第3张图片

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

Apache ShardingSphere (Incubating)性能监控指南_第4张图片

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

Apache ShardingSphere (Incubating)性能监控指南_第5张图片

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...

追踪数据展示

Apache ShardingSphere (Incubating)性能监控指南_第6张图片

/Sharding-Sphere/parseSQL/

Apache ShardingSphere (Incubating)性能监控指南_第7张图片

/Sharding-Sphere/executeSQL/

Apache ShardingSphere (Incubating)性能监控指南_第8张图片

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

小结

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

你可能感兴趣的:(数据库,分布式)