共计 1462 个字符,预计需要花费 4 分钟才能阅读完成。
背景
APM
是利用性能监控的缩写。目前 APM
的次要性能着眼于分布式系统的性能诊断,其次要性能包含调用链展现,利用拓扑剖析等。
ShardingSphere 并不负责如何采集、存储以及展现利用性能监控的相干数据,而是将 SQL 解析与 SQL 执行这两块数据分片的最外围的相干信息发送至利用性能监控零碎,并交由其解决。
换句话说,ShardingSphere 仅负责产生具备价值的数据,并通过标准协议递交至相干零碎。ShardingSphere 能够通过两种形式对接利用性能监控零碎。
第一种形式是应用 OpenTracing API 发送性能追踪数据。面向 OpenTracing 协定的 APM 产品都能够和 ShardingSphere 主动对接,比方 SkyWalking,Zipkin 和 Jaeger。应用这种形式只须要在启动时配置 OpenTracing 协定的实现者即可。
它的长处是能够兼容所有的与 OpenTracing 协定兼容的产品作为 APM 的展示零碎,如果采纳公司违心实现本人的 APM 零碎,也只须要实现 OpenTracing 协定,即可主动展现 ShardingSphere 的链路追踪信息。
毛病是 OpenTracing 协定倒退并不稳固,较新的版本实现者较少,且协定自身过于中立,对于个性化的相干产品的实现不如原生反对弱小。
第二种形式是应用 SkyWalking 的主动探针。
ShardingSphere 团队与 SkyWalking 团队独特单干,在 SkyWalking
中实现了 ShardingSphere
主动探针,能够将相干的利用性能数据主动发送到 SkyWalking
中。
应用办法
应用 OpenTracing 协定
- 办法 1:通过读取零碎参数注入 APM 零碎提供的 Tracer 实现类
启动时增加参数
-Dorg.apache.shardingsphere.opentracing.tracer.class=org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer
调用初始化办法
ShardingTracer.init();
- 办法 2:通过参数注入 APM 零碎提供的 Tracer 实现类
ShardingTracer.init(new SkywalkingTracer());
留神: 应用 SkyWalking 的 OpenTracing 探针时,应将原 ShardingSphere 探针插件禁用,以避免两种插件互相冲突
应用 SkyWalking 主动探针
请参考 SkyWalking 部署手册。
成果展现
无论应用哪种形式,都能够不便的将 APM 信息展现在对接的零碎中,以下以 SkyWalking 为例。
利用架构
应用 Sharding-Proxy
拜访两个数据库 192.168.0.1:3306
和192.168.0.2:3306
,且每个数据库中有两个分表。
拓扑图展现
从图中看,用户拜访 18 次 Sharding-Proxy 利用,每次每个数据库拜访了两次。这是因为每次拜访波及到每个库中的两个分表,所以每次拜访了四张表。
跟踪数据展现
从跟踪图中能够可能看到 SQL 解析和执行的状况。
/Sharding-Sphere/parseSQL/
: 示意本次 SQL 的解析性能。
/Sharding-Sphere/executeSQL/
: 示意具体执行的理论 SQL 的性能。
异常情况展现
从跟踪图中能够可能看到产生异样的节点。
/Sharding-Sphere/executeSQL/
: 示意执行 SQL 异样的后果。
/Sharding-Sphere/executeSQL/
: 示意执行 SQL 异样的日志。