ShardingSphere-JDBC SPI扩展点-Hook

钩子类扩展点介绍

包括以下四个Hook接口

  • org.apache.shardingsphere.underlying.common.hook.RootInvokeHook
  • org.apache.shardingsphere.sql.parser.hook.ParsingHook
  • org.apache.shardingsphere.underlying.route.hook.RoutingHook
  • org.apache.shardingsphere.underlying.executor.hook.SQLExecutionHook

钩子扩展点主要包括四个方法

  • start
  • finish(仅RootInvokeHook含有)
  • finishSuccess
  • finishFailure

钩子类扩展点的主要作用是收集SQL解析和执行阶段的核心相关数据,并上报给性能监控系统用于分布式系统的性能诊断,我们可以在路由、解析、执行等阶段获取SQL语句以及SQL转换状态信息。

执行流程

当ORM框架将具体逻辑SQL交由ShardingJDBC处理时,会依次经历以下流程(仅展示Hook流程)
在这里插入图片描述

以ParsingHook为例

  1. 在start阶段,可以获取在解析前的逻辑SQL语句;
  2. 在finishSuccess阶段,根据SQL类型可以获取逻辑SQL解析结果,包括逻辑表名,where条件,插入列值等
  3. 如果解析失败,则在finishFailure中获取解析异常信息。

加载及应用

加载

使用Java SPI机制,采用接口声明+策略模式+配置文件结合的方式,只需在META-INF/services目录下定义接口全限定名文件,并在文件中添加实现类即可。

应用

可在SQL执行的各个阶段对SQL状态进行监控,如:

  1. 同一线程执行多个SQL,检查第一个执行的SQL逻辑表是否符合业务配置(需配合线程变量ThreadLocal);
  2. 对执行SQL在各个阶段的状态进行上报。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值