druid简介及springboot中使用druid

Druid连接池由阿里巴巴开源,具备强大的监控与SQL防注入功能,适用于多种数据库环境。其特性包括详细的监控、ExceptionSorter、内置加密配置及丰富的扩展点,支持SpringBoot配置,并提供慢SQL日志记录。

“Druid连接池是阿⾥里里巴巴开源的数据库连接池项⽬目。Druid连接池为监控⽽而⽣生,内置强⼤大的监控功能,监控特性不不影响性能。功能强⼤大,能防SQL注⼊入,内置Logging能诊断Hack应⽤用⾏行行为。”    –Alibaba Druid 官⽅方介绍

Druid

经过阿⾥里里巴巴各⼤大系统的考验,值得信赖  官网地址:https://github.com/alibaba/druid/

实⽤的功能

   •详细的监控(真的是全⾯)  web的static界面,实时看到数据源的一些状态

   •ExceptionSorter,针对主流数据库的返回码都有支持 和JBoss数据源像

   •SQL 防注入

   •内置加密配置

   •众多扩展点,方便进行定制 数据库操作的各个环节都留有扩展点,方便自己定制;例如取得连接后操作,执行一条sql语句statement执行之前,之后操作,获得resultset之后操作

springboot2.x中的pom.xml中排除掉HikariCP

数据源配置

直接配置 DruidDataSource

通过 druid-spring-boot-starter

    •spring.datasource.druid.*

Filter 配置

     •spring.datasource.druid.filters=stat,config,wall,log4j (全部使⽤用默认值)密码加密

     •spring.datasource.password=<加密密码>

     •spring.datasource.druid.filter.config.enabled=true

     •spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=<public-key>

SQL 防注入

     •spring.datasource.druid.filter.wall.enabled=true

     •spring.datasource.druid.filter.wall.db-type=h2

     •spring.datasource.druid.filter.wall.config.delete-allow=false

     •spring.datasource.druid.filter.wall.config.drop-table-allow=false

慢 SQL ⽇日志
系统属性配置
• druid.stat.logSlowSql=true
• druid.stat.slowSqlMillis=3000
Spring Boot
• spring.datasource.druid.filter.stat.enabled=true    默认开启统计
• spring.datasource.druid.filter.stat.log-slow-sql=true
• spring.datasource.druid.filter.stat.slow-sql-millis=3000  默认值

一些注意事项
• 没特殊情况,不要在⽣产环境打开监控的 Servlet
• 没有连接泄露可能的情况下,不要开启 removeAbandoned  黑客和SLB切换A,B机器看到的信息不一定准确,线上以日志输出为主
• testXxx 的使用需要注意  test-while-idle可以使用,但每次取borrow和放return开销挺大的,特殊场景下使用
• 务必配置合理的超时时间  建立连接配置超时,connection timeout避免长时间卡死

DruidDataSource#  removeAbandoned  Thread.getCurrentThread.trace()性能开销大,使用orm框架后很难遇到连接泄露的情况

Druid Filter在DruidDataSource# 责任链设计模式,一步一步判断,每个filter做自己的增强,最后执行获取连接的动作;druid中扩展通过责任链实现的;

Druid Filter

    •⽤用于定制连接池操作的各种环节

    •可以继承 FilterEventAdapter 以便便⽅方便便地实现 Filter

    •修改 META-INF/druid-filter.properties 增加 Filter 配置

可靠性和性能最重要

业务操作做了哪些sql语句,服务追踪,traceId,spId,能否也在sql中加上traceId和spId?在数据库连接池在每条sql执行前加入一条注释,把traceId加进去;对sql做一些拦截或一些预处理。数据库中间件不知道业务线用的hibernate还是mybatis,使用最底层数据库连接池来做更通用些。

社区是否还活跃,是否还有更新。

 

Druid是一个强大的数据库连接池管理工具,在Spring Boot项目中配置 Druid 的 URI 监控,主要是为了监视数据库连接的使用情况。以下是基本的步骤: 1. 添加依赖:首先在你的 `pom.xml` 或者 `build.gradle` 文件中添加 DruidSpring Boot Starter 配置。 ```xml <!-- Maven --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>...your-druid-version...</version> </dependency> <!-- Gradle --> implementation 'com.alibaba:druid-spring-boot-starter:...your-druid-version...' ``` 2. 配置数据源:在 `application.properties` 或 `application.yml` 中添加 Druid 相关的配置,包括数据库URL、用户名、密码等,并启用统计功能以便收集URI信息。 ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false spring.datasource.username=your_username spring.datasource.password=your_password druid.stat-view-servlet.enabled=true druid.stat-view-servlet路径=/<your-custom-path>/druid ``` 3. 启动StatViewServlet:Druid 自带了一个可视化界面 StatViewServlet,用于展示数据库连接的相关统计信息,这里配置了路径 `<your-custom-path>/druid`。 4. 安全设置(可选):如果需要对StatViewServlet设置访问权限,可以在 `security` 部分添加相关配置,例如使用Basic Auth或CORS。 注意:在生产环境中,为了安全考虑,建议将 `/druid` 路径修改为不易猜到的值,并限制只允许特定IP访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值