Sharding-JDBC的架构以及源码的示例分析

  介绍

Sharding-JDBC的架构以及源码的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Sharding-JDBC架构

 Sharding-JDBC的架构以及源码的示例分析

Sharding-JDBC系统架构分成5个部分:

<李>

SQL解析

<李>

SQL路由

<李>

SQL改写

<李>

SQL执行

<李>

结果集归并

下面从上面五个部分来分析Sharding-JDBC

功能模块

SQL解析

SQL路由

SQL路由序列图

 Sharding-JDBC的架构以及源码的示例分析

调用链

ShardingPreparedStatement.execute

执行方法

 org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement.execute () 

方法源码

 @Override
  ,,,public  boolean 执行(),throws  SQLException  {
  ,,,,,,,try  {//本地缓存清空
  ,,,,,,,,,,,clearPrevious ();/* *
  ,*路由
  ,*
  ,*/,,,,,,,,,,,碎片();//,初始化,preparedStatement
  ,,,,,,,,,,,initPreparedStatementExecutor ();//,执行sql
  ,,,,,,,,,,,return  preparedStatementExecutor.execute ();
  ,,,,,,,},{finally 
  ,,,,,,,,,,,clearBatch ();
  ,,,,,,,}
  ,,,}
BaseShardingEngine.shard
 org.apache.shardingsphere.core.BaseShardingEngine.shard(字符串,List)  <>之前,public  SQLRouteResult 碎片(final  String  sql, final  List,参数),{
  ,,,,,,,List, clonedParameters =, cloneParameters(参数);//,根据SQL去路由
  ,,,,,,,SQLRouteResult  result =, executeRoute (sql, clonedParameters);//,改写sql
  ,,,,,,,result.getRouteUnits () .addAll (HintManager.isDatabaseShardingOnly(), ?,转换(sql, clonedParameters,,结果),:,rewriteAndConvert (sql, clonedParameters,,结果));//,打印路由后的sql
  ,,,,,,,if  (shardingProperties.getValue (ShardingPropertiesConstant.SQL_SHOW)), {
  ,,,,,,,,,,,boolean  showSimple =, shardingProperties.getValue (ShardingPropertiesConstant.SQL_SIMPLE);
  ,,,,,,,,,,,SQLLogger.logSQL (sql, showSimple,, result.getShardingStatement (),, result.getRouteUnits ());
  ,,,,,,,}
  ,,,,,,,return 结果;
  ,,,} 
BaseShardingEngine.executeRoute

一些路由相关的钩在这里执行。

 org.apache.shardingsphere.core.BaseShardingEngine.executeRoute(字符串,List)  <>之前,private  SQLRouteResult  executeRoute (final  String  sql, final  List, clonedParameters), {
  ,,,,,,,routingHook.start (sql);
  ,,,,,,,try  {
  ,,,,,,,,,,,SQLRouteResult  result =,路线(sql, clonedParameters);
  ,,,,,,,,,,,routingHook.finishSuccess(因此,metaData.getTables ());
  ,,,,,,,,,,,return 结果;
  ,,,,,,,,,,,//,CHECKSTYLE:
  ,,,,,,,},catch  (final  Exception 前),{
  ,,,,,,,,,,,//CHECKSTYLE:
  ,,,,,,,,,,,routingHook.finishFailure (ex);
  ,,,,,,,,,,,throw 交货;
  ,,,,,,,}
  ,,,} 
PreparedStatementRoutingEngine.route
 org.apache.shardingsphere.core.route.PreparedStatementRoutingEngine.route (List <>之前,,,,public  SQLRouteResult 路线(final  List< Object>,参数),{
  ,,,,,,,if  (null ==, sqlStatement), {//,解析SQL
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Sharding-JDBC的架构以及源码的示例分析

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5