看过《Apache ShardingSphere(Incubating)对接京东白条实战》的同学应该都了解,对接白条过程中遇到的问题几乎全部是借助于 SGM 来定位并解决的,可见性能监控的重要性。相对于商业化的 SGM 产品,ShardingSphere 也提供了开源的解决方案。近期,ShardingSphere 的性能监控能力又得到了一次加强,为用户提供了多样化的选择,在此一并总结一下。
概念
APM (Application Performance Monitoring)
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 的支持列表里查到具体版本:
SkyWalking 最近发生了两件大事,一个是从孵化器毕业,成为 Apache 顶级项目;另一个是完成了新 UI 的升级。那么到底会有什么惊喜?接下来就让我们一起动手体验。
使用自动探针的方式,不会对代码有任何侵入,只需要搭建 SkyWalking 的环境就可以了。没有使用过的小伙伴不要害怕,全程几乎只要执行一个脚本就完成了,这一点非常人性化。详情见https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/README.md。
拓扑图展示
ShardingSphere 连接两个真实数据库,每个数据库中有两个表。拓扑图中可以显示出服务间的调用类型,请求量,平响等信息。
追踪数据展示
从跟踪图中可以能够看到 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/pages/quickstart.html。
追踪数据展示
/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 接口的监控系统都可以接入。
作者
张永伦,京东数科高级软件工程师,Apache ShardingSphere (Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网络 IO、性能优化方面的技术挑战。目前专注于 Sharding-Proxy 的持续优化和 APM 的开发工作。
本文转载自公众号 ShardingSphere 官微(ID:Sharding-Sphere)。
原文链接:
https://mp.weixin.qq.com/s/LJlq7_RlB7vzbwkJzve5ig
评论