写点什么

druid 源码阅读(一)整体概览

  • 2022 年 5 月 10 日
  • 本文字数:562 字

    阅读完需:约 2 分钟

druid 版本:1.2.9

一、主要概念

DruidDataSource:核心类,控制线程池的创建,测试,保持,销毁等线程池核心操作。

filter:过滤器,druid 实现监控等重要功能的方式,常用的有 stat(配置监控),log4j(配置日志)。

ExceptionSorter:剔除“不可用连接”的机制。在数据库服务器重启、网络抖动、连接被服务器关闭等异常情况下,连接发生了不可恢复异常,将连接从连接池中移除,保证连接池在异常发生时情况下正常工作。是保持连接池稳定的关键。

SQL Parser:Druid 内置使用 SQL Parser 来实现防御 SQL 注入(WallFilter)、合并统计没有参数化的 SQL(StatFilter 的 mergeSql)、SQL 格式化、分库分表。

二、核心流程

1、连接池初始化:

主要初始化连接信息及三个核心参数:lock,notEmpty,empty

lock = new ReentrantLock(lockFair);notEmpty = lock.newCondition();empty = lock.newCondition();
复制代码


2、启动守护线程

有两个守护线程:一个补充连接,一个对闲置的连接进行活性检查,并根据条件回收长时间未关闭的连接。

createAndStartCreatorThread();createAndStartDestroyThread();
复制代码


3、获取连接

从线程池中获取连接并测试可用性,返回可用的连接。


三、总结

druid 通过复杂的设计,保证连接池中连接的可用,有效监控连接池并保持连接池稳定。目前只看了大概流程,接下来要详细学习下 druid 对线程池中的连接的具体控制,包括创建,保持和销毁。


发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2021.05.30 加入

还未添加个人简介

评论

发布
暂无评论
druid源码阅读(一)整体概览_5月月更_🍋榴莲班戟_InfoQ写作社区