您的位置:

阿里Druid详解

一、阿里Druid用途

阿里Druid是一个JDBC的数据库连接池和监控平台。它可以为你管理连接,监控连接使用情况,以及提供一些统计信息。

可以用Druid来代替DBCP、C3P0、BoneCP、Proxool等连接池。

除此之外,Druid还提供了一个强大的监控平台,可以实时监控数据库连接池和SQL查询情况,并对SQL进行防御。

二、阿里Druid bug

在使用阿里Druid时,我们都可能会遇到一些bug,这些bug可能会影响到我们的应用程序的正常运行。

比如阿里Druid在1.0.3版本中的bug,会导致多线程访问时出现"java.lang.NullPointerException",同时也会造成数据错误等问题。

鉴于遇到bug时一般是需要修改代码,或者是更新版本,所以在使用Druid的过程中,我们必须要注意版本的选择,以免影响应用程序的正常运行。

三、阿里Druid官方文档

在学习使用阿里Druid时,我们可以去官方网站寻找官方文档,来了解Druid的详细用法与参数说明。

Druid的官方文档中详细介绍了Druid配置参数、使用方法、监控与统计、防御SQL注入、内置功能以及针对不同场景的最佳实践等等。

同时也提供了Spring Boot和Mybatis等框架下应用Druid的简单示例。

四、阿里Druid连接池

Druid作为一个JDBC的数据库连接池,当然也有与连接池相关的一些参数和配置。

Druid连接池的各个参数,例如initialSize、maxActive、minIdle等,可以根据开发需求进行不同的配置。

同时,Druid连接池也可以通过配置参数来进行连接的监控和管理,以保证连接的正常使用。

@Bean
public DataSource dataSource() throws SQLException {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/test");
    dataSource.setUsername("test");
    dataSource.setPassword("test");
    dataSource.setFilters("stat,wall");
    dataSource.setMaxActive(20);
    dataSource.setInitialSize(1);
    dataSource.setMaxWait(60000);
    dataSource.setMinIdle(1);
    dataSource.setTimeBetweenEvictionRunsMillis(60000);
    dataSource.setMinEvictableIdleTimeMillis(300000);
    dataSource.setValidationQuery("SELECT 1");
    dataSource.setTestWhileIdle(true);
    dataSource.setTestOnBorrow(false);
    dataSource.setTestOnReturn(false);
    dataSource.setPoolPreparedStatements(true);
    dataSource.setMaxOpenPreparedStatements(20);
    dataSource.setConnectionProperties("druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000");
    return dataSource;
}

五、阿里Druid 数据库

Druid支持的数据库类型,一直是我们非常关心的问题之一。

Druid目前支持的数据库类型有:Oracle、DB2、MySQL、Sybase、Derby、PostgreSQL、Microsoft SQL Server、H2等。

这些数据库类型对应的连接方式以及其他相关问题,都在Druid的官方文档中有详细介绍。

六、阿里Druid介绍

阿里Druid是阿里巴巴公司旗下的一个开源项目。

Druid目前是国内较为流行的数据库连接池之一,由于其强大的SQL监控和防御功能,在企业级应用中被广泛使用。

同时,Druid还提供了其他一些实用的功能,例如SQL防火墙、批量更新等等。

七、阿里连接池 Druid

Druid除了是一个JDBC的数据库连接池之外,还具有监控和防御SQL注入等功能,因此也被称为阿里连接池Druid。

连接池Druid是一种面向企业级应用的连接池,可以大大提高应用程序的性能和稳定性,并有效防御SQL注入攻击。

同时,在使用连接池Druid时,我们可以从中获取更多的统计信息和诊断信息,从而对数据库的使用情况有更准确的了解。

八、阿里为什么弃用Druid

虽然Druid被广泛应用于企业级应用中,但阿里巴巴公司也在不断探索更加优秀的数据库连接池。

据悉,阿里巴巴已经出了一个更加强大的连接池,名为Titan。

Titan不仅能够监控数据库连接池和SQL执行情况,还可以分析应用程序的查询方式和代码逻辑,对SQL语句进行高效的优化。

九、Druid被阿里放弃原因

阿里巴巴之所以放弃Druid,一方面是因为Druid在运行大规模分布式应用时的性能和扩展性不够好;另一方面是因为Druid的开发者红蔺对此已经不再投入太多精力,而更关注新技术的开发。

因此,阿里巴巴选择了放弃Druid,而转向Titan等更加先进的技术。

十、Druid数据库选取

Druid可以与多个数据库进行配合使用,使得Druid的应用场景更加广泛。

例如Druid可以和MySQL、Redis、Hbase等数据库进行配合使用,以达到更好的效果。

假设我们需要配合MySQL使用Druid,我们可以这样配置:

  
    
   com.alibaba
   
    
   mysql-connector-java
   
    
   ${mysql.version}
   

  

    
   com.alibaba
   
    
   druid-spring-boot-starter
   
    
   ${druid.version}
   

  
druid:
    datasource:
      url: jdbc:mysql://localhost:3306/test
      username: test
      password: test
      driver-class-name: com.mysql.jdbc.Driver