Druid连接池源码分析

1. 背景和目标

1.1 druid版本

  • 1.2.3

1.2 背景

  1. druid作为我们内部通用的数据库连接池,而mysql数据库又是最重要的数据源,我们必须对其充分了解
  2. 了解druid基本运行原理,对我们在使用他优化他的时候非常有帮助
  3. 了解druid可能存在的隐患(这可能是个长期的事情,尽量去做)
  4. 之前发生过shardingsphere和druid配合出问题的案例,现在重新做dal和sharding的starter,对这块要了解清楚

1.3 目标

  1. 了解真正发生链接时,具体流程
  2. 了解获取一个链接时,具体流程,如何做池管理
  3. 了解filter等附加特性的原理及如何定义
  4. 了解testOnxxx,removeAbandoned等配置的实际意义
  5. 对其监控的可行性及方案
  6. HA特性

2. 相对前端/上游说明

2.1 获取连接和使用连接

druid连接池的使用方式是创建一个druidDataSource,所以对于他的调用者都是持有这个DataSource并使用getConnection方法的类。

对于普通的mybatis应用来说,就是mybatis的sql executor 持有druidDataSource,利用他来获取connection。

对于接入mybatis和shardingsphere的应用来说,mybatis调用shardingDataSource的getConnection(shardingDataSource早已经持有druidDataSource),他会再调用druidDataSource。

2.2 回收连接

SQL执行完成之后,无论成功失败,上层代码都会进行 connection.close()

druid通过实现close方法,在其内部逻辑进行了连接的回收。

3. 主体流程分析

3.1 创建dataSource

创建DataSource主要就是创建一个druidDataSource,核心逻辑就是实例化,而执行的时机要看应用的实现。

实例化的时机可能在业务应用,也可能在spring的autoconfigure包,也可能在shardingsphere的shardingDataSource创建的时候。

这里注意一下和mybatis-spring的结合使用,因为他会去找唯一的DataSource,所以要保证DataSource的唯一性。

3.2 DataSource初始化

初始化主流程

init()

<< · Back Index ·>>

发表回复

相关推荐

“暴雨”诗三篇

​​第一篇:东边日出西边雨 溪上遇雨二首其二 唐 崔道融 坐看黑云衔猛雨, 喷洒前山此独晴。 忽惊云雨在头上, 却是山前晚照 ...

· 22秒前

人物篇|《奪命金》:劉青雲——一個時代緩緩落下的最後一塊幕佈

如果說黃秋生是東邪,離經叛道,劍走偏鋒,吳鎮宇是西毒,一雙眼睛像毒蛇一樣咬住你,任達華是南帝,樸實無華,渾然天成,那...

· 1分钟前

紅雙喜乒乓球拍推薦選擇攻略(熱銷爆款)

國貨之光紅雙喜球拍,是許多國內乒乓球愛好在接觸乒乓球時最先瞭解的品牌,也是很多人買的第一塊球拍,包括我在內第一塊球拍...

· 4分钟前

他连续强奸幼女40多人,是沈阳历史上头号色魔 | 血案系列0202

1 丁零零零零…电话铃声急促,李明杰拿起了话筒。洮昌公安派出所值班民警报告:“刚才,管区内一对夫妇来派出所报案,他们的1 ...

· 7分钟前

【西班牙高校攻略】以老国王之名——胡安·卡洛斯国王大学(已开放2022年硕士申请)

胡安·卡洛斯国王大学Logo 胡安·卡洛斯国王大学 (Universidad Rey Juan Carlos) ,简称胡卡( URJC),是一所以西班牙老国王 ...

· 7分钟前