Apache ShardingSphere (Incubating)性能监控指南
作者
张永伦,京东数科高级软件工程师,Apache ShardingSphere (Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网络IO、性能优化方面的技术挑战。目前专注于Sharding-Proxy的持续优化和APM的开发工作。
看过《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)自2016开源以来,不断精进、不断发展,被越来越多的企业和个人认可:Github上收获7000+的stars,70+公司企业的成功案例。此外,越来越多的企业和个人也加入到Apache ShardingSphere(Incubating)的开源项目中,为它的成长和发展贡献了巨大力量。
ShardingSphere目前长期开放招聘全职研发人员,欢迎开源社区优秀人才加入我们,共同打造出色的开源生态。
ShardingSphere在进入Apache基金会孵化器以来,受到了越来越多的关注,我们的目标是将其打造为分布式数据库中间件的标准。参与开源项目的开发和社区建设,不但能够为参与者和项目本身带来收益,还能够让参与者享受乐趣、带来成就感,一举多得。
该职位长期开放,欢迎大家参与ShardingSphere的开发和社区建设。我们优先考虑对ShardingSphere有深入了解并且深度参与社区建设的同学。我们等你来一起全职玩转开源!
项目地址:
https://github.com/apache/incubator-shardingsphere
更多信息请浏览官网:
https://shardingsphere.apache.org/
职位信息:
https://mp.weixin.qq.com/s/V4qfA5KjiCWvKNQM6cdnYw
招聘邮箱:
zhangliang@apache.org