Druid简介

Druid是一个拥有大数据实时查询和分析的高容错、高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析。尤其是当发生代码部署、机器故障以及其他产品系统遇到宕机等情况时,Druid仍然能够保持100%正常运行。创建Druid的最初意图主要是为了解决查询延时问题,当时试图使用hadoop来实现交互式查询分析,但是很难满足实时分析的需要。而Druid提供了以交互方式访问数据的能力,并权衡了查询的灵活性和性能二采取了特殊的存储格式。

使用场景

1、需要交互式聚合和快速探究大量数据时;

2、需要实时查询分析时;

3、具有大量数据时,如每天数亿事件的新增、每天数10T数据的增加;

4、对数据尤其是大数据进行实时分析时;

5、需要一个高可用、高容错、高性能数据库时。

/*** @author xsj* druid配置类*/
@Configuration
public class DruidConfiguration {private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);private static final String DB_PREFIX = "spring.datasource";@Beanpublic ServletRegistrationBean druidServlet() {logger.info("init Druid Servlet Configuration ");ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");// IP白名单servletRegistrationBean.addInitParameter("allow", "192.168.2.25,127.0.0.1");// IP黑名单(共同存在时,deny优先于allow)servletRegistrationBean.addInitParameter("deny", "192.168.1.100");//控制台管理用户servletRegistrationBean.addInitParameter("loginUsername", "admin");servletRegistrationBean.addInitParameter("loginPassword", "admin");//是否能够重置数据 禁用HTML页面上的“Reset All”功能servletRegistrationBean.addInitParameter("resetEnable", "false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean filterRegistrationBean() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());filterRegistrationBean.addUrlPatterns("/*");filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}//解决 spring.datasource.filters=stat,wall,log4j 无法正常注册进去@ConfigurationProperties(prefix = DB_PREFIX)class IDataSourceProperties {private String url;private String username;private String password;private String driverClassName;private int initialSize;private int minIdle;private int maxActive;private int maxWait;private int timeBetweenEvictionRunsMillis;private int minEvictableIdleTimeMillis;private String validationQuery;private boolean testWhileIdle;private boolean testOnBorrow;private boolean testOnReturn;private boolean poolPreparedStatements;private int maxPoolPreparedStatementPerConnectionSize;private String filters;private String connectionProperties;@Bean     //声明其为Bean实例@Primary  //在同样的DataSource中,首先使用被标注的DataSourcepublic DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(url);datasource.setUsername(username);datasource.setPassword(password);datasource.setDriverClassName(driverClassName);//configurationdatasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);try {datasource.setFilters(filters);} catch (SQLException e) {System.err.println("druid configuration initialization filter: " + e);}datasource.setConnectionProperties(connectionProperties);return datasource;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getDriverClassName() {return driverClassName;}public void setDriverClassName(String driverClassName) {this.driverClassName = driverClassName;}public int getInitialSize() {return initialSize;}public void setInitialSize(int initialSize) {this.initialSize = initialSize;}public int getMinIdle() {return minIdle;}public void setMinIdle(int minIdle) {this.minIdle = minIdle;}public int getMaxActive() {return maxActive;}public void setMaxActive(int maxActive) {this.maxActive = maxActive;}public int getMaxWait() {return maxWait;}public void setMaxWait(int maxWait) {this.maxWait = maxWait;}public int getTimeBetweenEvictionRunsMillis() {return timeBetweenEvictionRunsMillis;}public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;}public int getMinEvictableIdleTimeMillis() {return minEvictableIdleTimeMillis;}public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;}public String getValidationQuery() {return validationQuery;}public void setValidationQuery(String validationQuery) {this.validationQuery = validationQuery;}public boolean isTestWhileIdle() {return testWhileIdle;}public void setTestWhileIdle(boolean testWhileIdle) {this.testWhileIdle = testWhileIdle;}public boolean isTestOnBorrow() {return testOnBorrow;}public void setTestOnBorrow(boolean testOnBorrow) {this.testOnBorrow = testOnBorrow;}public boolean isTestOnReturn() {return testOnReturn;}public void setTestOnReturn(boolean testOnReturn) {this.testOnReturn = testOnReturn;}public boolean isPoolPreparedStatements() {return poolPreparedStatements;}public void setPoolPreparedStatements(boolean poolPreparedStatements) {this.poolPreparedStatements = poolPreparedStatements;}public int getMaxPoolPreparedStatementPerConnectionSize() {return maxPoolPreparedStatementPerConnectionSize;}public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;}public String getFilters() {return filters;}public void setFilters(String filters) {this.filters = filters;}public String getConnectionProperties() {return connectionProperties;}public void setConnectionProperties(String connectionProperties) {this.connectionProperties = connectionProperties;}}}
spring:datasource:url: jdbc:mysql://47.98.131.179:3306/bingfatest?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: rootdriverClassName: com.mysql.cj.jdbc.Driverplatform: mysqltype: com.alibaba.druid.pool.DruidDataSource# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大initialSize: 1minIdle: 3maxActive: 20# 配置获取连接等待超时的时间maxWait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 30000validationQuery: select 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: false# 打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 合并多个DruidDataSource的监控数据#useGlobalDataSourceStat: true

Druid以及监控界面的使用相关推荐

  1. Druid Monitor监控Java Web和Java SE项目

    Druid Monitor 对于数据源,大家已经接触了不少了.比如c3p0.dhcp.proxool等,之后又发现使用tomcat-jdbc可以大大的提高性能.但是针对于我们的高并发的系统来说,总希望 ...

  2. Druid关闭监控页面关闭不了

    项目里连接数据库使用了阿里开源的druid,结果被发现有安全漏洞,可以直接访问到druid的监控界面.但是奇怪的是,明明在yml文件里配置了关闭,同时allow的访问IP是127.0.0.1,还设置了 ...

  3. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面

    一.Druid连接池 1.druid简介 Druid连接池是阿里巴巴开源的数据库连接池项目.Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能.功能强大,能防SQL注入,内置Login ...

  4. 【Druid】Druid连接池(二)——配置监控界面

    一.前言 在阿里的数据库连接池中,Druid是一个很好的选择.她可以实现程序员的一些特殊的需求,比如像密钥服务请求凭证,统计sql信息,sql性能收集,sql注入检测,sql翻译等. Druid在阿里 ...

  5. Druid配置好之后sql监控界面不显示sql语句的可能原因

    完全按照druid的github上面的文档配置好druid之后,sql监控界面不显示sql语句,监控sql语句的filter也是配置了的 # 配置StatFilter,监控sql语句需要这一项 spr ...

  6. 阿里巴巴 Druid 数据库连接池监控界面配置的参数解读

    阿里巴巴 Druid 数据库连接池监控界面配置的参数解读 1.可选的配置项 Property Name Default Value Remarks name 存在多个数据源的时候用于识别数据源 jdb ...

  7. 阿里开源mysql监控_Alibaba-技术专区-开源项目之Druid数据库监控平台

    一. 介绍: DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对 ...

  8. 数据库连接池 ( 五 ) Druid 数据监控

    4.Druid 数据监控 4.0.Druid 监控参数 参数 值 含义 ActiveCount 0 当前连接池中活跃连接数 ActivePeak 1 连接池中活跃连接数峰值 ActivePeakTim ...

  9. 配置Druid数据源监控

    Druid 数据源具有监控的功能,并提供了一个 web 界面方便用户查看. 所以第一步需要设置 Druid 的后台管理页面,比如 登录账号.密码 等:配置后台管理: //配置 Druid 监控管理后台 ...

最新文章

  1. treeselect 如何选中多个_word使用技巧之-如何让你工作效率翻倍提升
  2. Matlab编程序设计数字滤波器
  3. Spring Cloud系列:不重启eureka,清除down掉的服务
  4. python怎么把数据写入txt-如何将python中文件写入TXT
  5. 初学Java的5个阶段,你在哪个阶段?
  6. IntelliJ IDEA中日志分类显示设置
  7. [Swift通天遁地]七、数据与安全-(12)使用Instruments Leaks工具检测内存泄露
  8. 关于hexo与github使用过程中的问题与笔记
  9. 支撑1300+矿井监控,华为云数据库助力打造智能矿山
  10. 使用python实现GBK转unicode码查询表
  11. web service 学习 2 -- 什么时候应该使用web service
  12. stm32用tft-lcd 显示自定义大小的字体
  13. 舞蹈课(dancingLessons)
  14. Tcp四次挥手谁需要等待,为什么等待时间为2MSL
  15. 批处理学习(一)——MS-DOS命令
  16. Nagios:用门户邮箱+mailx+139邮箱实现实时短信报警
  17. java符号三角形问题_实验四 回溯算法和分支限界法 符号三角形问题
  18. android xlog崩溃日志,Android第三方log库:xlog使用记录
  19. terminus 和 windows terminal_Windows命令行终端神器Cmder配置及美化指南
  20. 使用java的方式配置Spring---JavaConfig

热门文章

  1. Elastic开源社区:开发者招募
  2. 聊聊Windows的销售渠道和授权版本
  3. leetcode 滑动窗口
  4. 【数学思维】最大值与上确界
  5. 通俗易懂讲清502、503、504是什么
  6. OpenSSL/GmSSL 动态引擎
  7. windows10安装cuda10.2
  8. 【强烈收藏】统计学中18种以上的数据分析方法汇总!
  9. LaTex环境下在TexStudio中使用minted插入高亮代码
  10. (附Matlab程序)(二)基于DCT编码的图像压缩:对分解后的每个数据小方块进行DCT及IDCT变换