写点什么

Alibaba Druid 源码阅读(一) 数据库连接池初步

作者:
  • 2021 年 11 月 12 日
  • 本文字数:972 字

    阅读完需:约 3 分钟

简介

本文将初步探索数据库连接池的应用场景,为后面的源码分析做些准备

数据库连接池的应用场景

在没有连接池之前,在使用中,需要访问数据库时,需要如下步骤:


  • 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


/** * @author lihengming<89921218@qq.com> * * <p>一个简单的使用演示</p> * <p>1.按需配置application.properties,配置项请参考config-template.properties</p> * <p>2.run DemoApplication</p> * <p>3.访问http://127.0.0.1:8080/druid</p> * <p>4.访问/user/${id}接口,查看SQL、Web、AOP监控效果,如:http://127.0.0.1:8080/user/1</p> * */@SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}
复制代码


可以看到官方内置提供的快速体验的,基于内存数据 H2 的,我们访问下管理网页:http://127.0.0.1:8080/druid/sql.html

总结

由于之前这边研究不多,今天就简单热下身,为后面分析做些准备:


  • 搜索相关的文章,了解了数据库连接池的应用场景

  • 拉取 Druid 源码,运行示例

参考链接

发布于: 2 小时前阅读数: 4
用户头像

关注

还未添加个人签名 2018.09.09 加入

代码是门手艺活,也是门艺术活

评论

发布
暂无评论
Alibaba Druid 源码阅读(一) 数据库连接池初步