SkyWorking分布式追踪Shardingsphere改写后真实执行sql
背景
系统因为业务发展需要,海量数据,使用了Shardingsphere进行分库分表,为了对分库分表的sql在分布式环境下进行监控,所以集成了SkyWorking,因为Shardingsphere对所有兼容OpenTracking协议的APM工具都兼容,而SkyWorking满足了这一要求,而且是apache孵化的顶级开源项目,主要进行分布式的链路调用分析和扩展拓扑分析,所以选择了这一主流的APM框架。
搭建环境
- 事先安装好SkyWorking
SkyWorking 官网地址:http://skywalking.apache.org/
2.Shardingsphere官网地址:http://shardingsphere.apache.org/index_zh.html
3.已经搭建好的项目 sharding(Springboot+mybatis plus+Shardingsphere4.0.1)
步骤
-
配置
在项目的pom.xml 添加如下 opentracking 依赖
<!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/sharding-opentracing -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-opentracing</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-opentracing</artifactId>
<version>8.1.0</version>
</dependency>
2.官网说明
按照shardingsphere 4.0 官网的说明文档,有两种方式将Shardingsphere分库分表后的数据库调用链执行sql进行自动探针
本文使用的是第二种方式
- 代码
ShardingTracer.init(new SkywalkingTracer());
添加后的启动类如下:
package com.example.sharding;
import org.apache.shardingsphere.opentracing.ShardingTracer;
import org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ShardingApplication {
public static void main(String[] args) {
ShardingTracer.init(new SkywalkingTracer());
SpringApplication.run(ShardingApplication.class, args);
}
}
4. 查看成果
可以看到改写后的sql
至此,成功!
源码地址:
https://github.com/lqstyle/sharding
总结
只要思想不滑坡,方法总比困难多!