Druid在项目中的应用

  前言:

   每天都在成长着,经历着。而csdn是我记录成长的地方。所以迫不及待将新知道的知识,记录下来。分享给大家。

  内容:

   正如题目所言,我们想要用一个东西,首先要知道这个东西是什么,然后再说怎么用。那么接下来小编就按照这个思路,来介绍一下Druid。

  一、什么是Druid

  Druid是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统。旨在快速处理大规模的数据,并能够实现快速查询和分析。尤其是当发生代码部署,机器过账以及其他产品系统遇到宕机等情况时,Druid仍能保持100%正常运行。Druid是一个JDBC组件,它包括三个部分:DruidDriver,代理Driver,能够提供基于Filter-Chiain模式的插件体系;DruidDdataSource高效可管理的数据库连接池;SQLParser。

  二、Druid可以做什么

  惊讶  可以监控数据库访问性能。Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能。对于线上分析数据库访问性能有帮助

  惊讶  替换DBCP和C3P0连接池。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

  惊讶  数据库加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDriuiver和DruidDataSource都支持PasswordCallback。

  惊讶  SQL执行日志。Druid提供了不同的LogFiter,能够支持Common-Logging,log4j和JdkLog,你可以按需要选择相应的logfiter,监控你应用的数据库访问情况。

  三、Druid在项目中的应用

  本次项目开发中用到的是struts2+spring+hibernate,在web.xml中配置了过滤器,所以在web文件中需要配置Druid的servlet和去除对druid的拦截。具体代码如下:

  

!-- 配置druid的servlet -->
 	<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>/druid/*</url-pattern> 
  	</servlet-mapping>  

<!-- 去除对druid的拦截 -->
		<init-param>    
			<param-name>excludedPages</param-name>    
			<param-value>/druid*</param-value>    
		</init-param>    
  </filter>
  在applicationContext.xml的配置文件中需要替换C3P0链接池,改用druid的连接池。

      

	
		<!-- 配置DRUID数据源 -->
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${jdbcUrl}"/>
        <property name="username" value="${jdbcUsername}"/>
        <property name="password" value="${jdbcPassword}"/>

        <!-- 初始化连接大小 -->
        <property name="initialSize" value="5"/>
        <!-- 连接池最大使用连接数量 -->
        <property name="maxActive" value="100"/>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="3"/>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="60000"/>

        <!-- <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->

        <property name="validationQuery" value="${validationQuery}"/>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="true"/>
        <property name="testWhileIdle" value="true"/>

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="25200000"/>

        <!-- 打开removeAbandoned功能 -->
        <property name="removeAbandoned" value="false"/>
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="1800"/>
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="true"/>

        <!-- 监控数据库 -->
        <!-- <property name="filters" value="mergeStat" /> -->
        <property name="filters" value="stat"/>
    </bean>
  加了Druid我们链接数据库的配置文件也要修改

         

  这样,访问druid/index.html就能看见你想监控的数据了。

  Druid的JavaDoc文档请查看:点击打开链接



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值