Alibaba Druid 源码阅读(一) 数据库连接池初步
简介
本文将初步探索数据库连接池的应用场景,为后面的源码分析做些准备
数据库连接池的应用场景
在没有连接池之前,在使用中,需要访问数据库时,需要如下步骤:
1.创建一个连接
2.使用
3.关闭连接
上面基本上是一个连接的使用生命周期,如果访问不是很频繁,那还行,但如果在频繁访问下就会有下面的问题:
1.耗时:一个连接的创建是比较耗时的,频繁的创建连接产生不必要的耗时
2.资源:创建和销毁都需要对应的服务销毁资源,频繁的创建连接浪费系统资源
为了解决上面的问题,可以通过连接复用:通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以得到搞笑、安全的复用,避免数据库连接频繁建立、关闭的开销
对应设计模式:资源池。在日常的工作中,比如 HTTP 连接池、线程池等,也是应用资源池的思想
Druid 数据库连接池,在国内基本上占统治地位,其代码还是值得研究的,所以后面就来研究一下其连接池的源码,提升下自己的能力
Druid 概览
其主要源码目录如下图:
其中重要的部分如下:
filter:Druid 支持监控、代理等功能,便于开发人员分析数据库操作的一些性能指标,主要就是使用 filter 实现的
pool:连接池的主要实现
sql:SQL 语句解析
wall:防火墙
简单的示例运行
下面我们就使用源码中的示例运行一下:druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/DemoApplication.java
可以看到官方内置提供的快速体验的,基于内存数据 H2 的,我们访问下管理网页:http://127.0.0.1:8080/druid/sql.html
总结
由于之前这边研究不多,今天就简单热下身,为后面分析做些准备:
搜索相关的文章,了解了数据库连接池的应用场景
拉取 Druid 源码,运行示例
参考链接
版权声明: 本文为 InfoQ 作者【萧】的原创文章。
原文链接:【http://xie.infoq.cn/article/d26f624f14eb0ff31ace30fb9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论