druid 源码阅读(一)整体概览
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
复制代码
2、启动守护线程
有两个守护线程:一个补充连接,一个对闲置的连接进行活性检查,并根据条件回收长时间未关闭的连接。
复制代码
3、获取连接
从线程池中获取连接并测试可用性,返回可用的连接。
三、总结
druid 通过复杂的设计,保证连接池中连接的可用,有效监控连接池并保持连接池稳定。目前只看了大概流程,接下来要详细学习下 druid 对线程池中的连接的具体控制,包括创建,保持和销毁。
版权声明: 本文为 InfoQ 作者【🍋榴莲班戟】的原创文章。
原文链接:【http://xie.infoq.cn/article/e9dc5b16ec9f62e1a1598c59e】。文章转载请联系作者。
评论