Druid在项目中的应用
来源:互联网 发布:淘宝账号注销后支付宝 编辑:程序博客网 时间:2024/05/22 01:06
前言:
每天都在成长着,经历着。而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文档请查看:点击打开链接。
- Druid在项目中的应用
- druid 应用到项目中
- CMMI5在项目中的应用
- css 在项目中的应用
- ZedGraph在项目中的应用
- WMB在项目中的应用
- 缓存在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- Log4j在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- 缓存在项目中的应用
- JBPM在项目中的应用
- 代码在项目中的应用
- Memcached在项目中的应用
- LogBack在项目中的应用
- CPU 发热的几个可能原因
- c#的基础练习题
- win7系统 深度学习环境 anaconda+tensorflow+jupyter notebook轻松搭建
- 使用react-native启动安卓项目时JS SERVER 未启动报错(Starting JS server...)
- 中科院罗平演讲全文:自动撰写金融文档如何实现,用 AI 解救“金融民工” | CCF-GAIR 2017
- Druid在项目中的应用
- C语言指针专题——如何理解指针
- ListView 条目中含有checbox,imgbtn,button;如何处理选择时,上下滑动会乱掉
- bzoj 1758: [Wc2010]重建计划 长链剖分+线段树
- java中的反射机制
- 这里是android退出时的有用的代码
- [转]Altium Designer 从导入DXF文件,并转换成板框
- 在EC2上创建root用户,并使用root用户登录
- 为Python添加默认模块搜索路径