Druid应用与简介(含源码)

Druid是一款由阿里巴巴开发的高性能数据库连接池,具备亚秒级OLAP查询分析及实时流数据分析展示功能,支持预聚合、列式存储、倒排索引等技术要点,可替代DBCP和C3P0,提供SQL执行性能监控和日志获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Druid

Druid首先是一个数据库连接池,在功能、性能、扩展性方面,都远超其他数据库连接池,Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!
Druid特性:
1.亚秒级的OLAP查询分析。
2.实时流数据分析展示。区别于传统分析型数据库采用的批量导入数据进行分析的方式,Druid提供了实时流数据分析,采用LSM(Long structure merge)-Tree结构使Druid拥有极高的实时写入性能;同时实现了实时数据在亚秒级内的可视化。
3.丰富的数据分析功能,但查询模式是交互式的,代表其并发能力有限。
4.高可用性与高可拓展性。Druid采用分布式、SN(share-nothing)架构,管理类节点可配置HA,工作节点功能单一,不相互依赖,这些特性都使得Druid集群在管理、容错、灾备、扩容等方面变得十分简单。
技术要点:

  • 预聚合
  • 列式存储
  • 倒排索引
  • 位图索引

预聚合可以有效减少数据的存储以及避免查询时不必要的计算。

作用:
1.充当数据库的连接池。(替换DBCP和C3P0)
2.可以监控数据库访问性能。(Druid内置了一个StatFilter插件,通过这个插件我们可以详细的统计SQL的执行性能,有助于我们能够线上分析数据库的访问性能)
3.获取SQL执行日志。Druid提供了不同的LogFilter,其中包含Common-Logging、Log4和JdkLog、你可以俺需要选择对应的LogFilter,监控你应用的数据库访问情况。
4.扩展JDBC,如果我们要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。
名词解释:
压秒级:转速单位。如:1GHz
OLAP:中文名联机分析处理,具有共享多维信息进行快速分析的特征。

通过Druid实现SQL监控。
1.工程引入druid-1.0.15.jar 或者Mave依赖

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>

2.数据源配置(Spring-config.xml)

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="30000"/>

<property name="validationQuery" value="SELECT 'x' from dual"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!--        <property name="removeAbandoned" value="true"/>
        &lt;!&ndash; 打开removeAbandoned功能 &ndash;&gt;
        <property name="removeAbandonedTimeout" value="1800"/>
        &lt;!&ndash; 1800秒,也就是30分钟 &ndash;&gt;
        <property name="logAbandoned" value="true"/>-->

<property name="poolPreparedStatements" value="false"/>
<property name="maxPoolPreparedStatementPerConnectionSize"
          value="${druid.maxPoolPreparedStatementPerConnectionSize}"/>
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="stat"/>

名称解释:
在这里插入图片描述
在这里插入图片描述
3.XML配置(Web.XML)

<servlet>
    <servlet-name>druidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>druidStatView</servlet-name>
    <url-pattern>/core/monitor/druid/*</url-pattern>
</servlet-mapping>

基本配置完成,可以查看内置监控页面了,路径是localhost/core/monitor/druid/index.html
如果还需要使用Web应用、URI监控、Session监控、Spring监控等则还需要继续增加配置。

4、Wen应用配置
WebStatFilter用于采集web-jdbc关联监控的数据
在Web.xml中增加配置,就可以使用Web应用、URI监控、Session监控等功能

<filter>
    <filter-name>druidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
        <param-name>exclusions</param-name>
        <param-value>/view/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
    <init-param>
        <param-name>sessionStatMaxCount</param-name>
        <param-value>5000</param-value>
    </init-param>
    <init-param>
        <param-name>principalSessionName</param-name>
        <param-value>eidpUser</param-value>
    </init-param>
    <init-param>
        <param-name>profileEnable</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>druidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

5、Spring监控配置,在Spring-config.xml配置文件中增加

<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
        </bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
       <property name="patterns">
           <list>
               <value>com.company.bussines.service.*</value>
               <value>com.company.bussines.dao.*</value>
           </list>
       </property>
</bean>

<aop:config proxy-target-class="true">
       <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config>

所有配置完成。
登入示例如下:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值