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"/>
<!– 打开removeAbandoned功能 –>
<property name="removeAbandonedTimeout" value="1800"/>
<!– 1800秒,也就是30分钟 –>
<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>
所有配置完成。
登入示例如下:


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

被折叠的 条评论
为什么被折叠?



