Spring Boot 2.0默認(rèn)連接池為HikariCP绸罗,一款號(hào)稱高性能的連接池愉老。如沒特殊要求使用默認(rèn)連接池就可以嚷节,那么我們?yōu)槭裁匆褂肈ruid呢。
- Druid也是高性能的, 業(yè)界有很多實(shí)踐
- Druid提供很多強(qiáng)大的功能扩所,比如監(jiān)控围详,黑白名單,密碼加密等
注 HikariCP 基于spring boot 的metric功能祖屏,結(jié)合prometheus + grafana也可以實(shí)現(xiàn)監(jiān)控
下面記錄下工作中用到的監(jiān)控和密碼加密功能:
使用版本:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
-
密碼加密
第一步使用druid jar包提供的加密功能進(jìn)行密碼加密
#進(jìn)入到druid jar包目錄助赞,執(zhí)行如下命令: root為要加密的密碼
java -cp druid-1.0.29.jar com.alibaba.druid.filter.config.ConfigTools root
#執(zhí)行結(jié)果
privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEApi859CGNz0R5LBUkiRSepo5c4YBZZS/PNGPCUSIA0pd9Tjb7IHMdJavhpRscdFdYdS5RhwtkCuVjooUj0UaCewIDAQABAkArcds3vHHjRqZa5OgZQh+7sSoM9c3pCxejPZU2Oqp2YyDo63nIooTU8/Pc+uxhbBpDelDugP8mH0tgPGVGtkwRAiEA8mpCLpzsGiFZsaeHVplwujGT0MhvQdcfXAQya6bXqSkCIQCvf1i0fEp9caeCM7cLnR+r0pqhmsPqCKUAK2DYyEkvAwIhAOIP7YACnrsPdtGRZUiA9vrr2OjOwdIohvoMf+icQmlhAiBC+mMsXtM/FQVNF9egQxM3TGVfj+V9iFcQvX10vtvPaQIgQIWoMuOp0pnX9bozIq7ERoXg3PNVYkJpIoKNY9RPjag=
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKYvOfQhjc9EeSwVJIkUnqaOXOGAWWUvzzRjwlEiANKXfU42+yBzHSWr4aUbHHRXWHUuUYcLZArlY6KFI9FGgnsCAwEAAQ==
password:ZWIqZ8YP+e6LKDIR2pkrH3ucyAsLk00s4r3AcnJOeEGB4agUMZkegUK7w4Y76PBNYQxXx0nEGe7PMn75Q5Q/qQ==
第二步進(jìn)行yaml文件配置
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
username: root
# 第一步生成的密碼
password: ZWIqZ8YP+e6LKDIR2pkrH3ucyAsLk00s4r3AcnJOeEGB4agUMZkegUK7w4Y76PBNYQxXx0nEGe7PMn75Q5Q/qQ==
# 第一步生成的publicKey
public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKYvOfQhjc9EeSwVJIkUnqaOXOGAWWUvzzRjwlEiANKXfU42+yBzHSWr4aUbHHRXWHUuUYcLZArlY6KFI9FGgnsCAwEAAQ==
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 開啟config的filter
filters: config
# 設(shè)置啟用秘密,以及密鑰key
connection-properties:config.decrypt=true;config.decrypt.key=${spring.datasource.public-key}
第三步啟動(dòng)項(xiàng)目測試是否成功
-
開啟監(jiān)控日志
配置文件:
datasource:
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 擴(kuò)展插件:stat監(jiān)控統(tǒng)計(jì)赐劣,wall防SQL注入等
filters: stat,wall
web-stat-filter:
# 是否啟用統(tǒng)計(jì)監(jiān)控嫉拐,可進(jìn)行添加配置進(jìn)行詳細(xì)控制
enabled: true
stat-view-servlet:
# 開啟監(jiān)控頁面
enabled: true
# 頁面登錄賬號(hào)密碼
login-username: test
login-password: test
# 運(yùn)行訪問的白名單,不設(shè)置任何可訪問魁兼,必須配置婉徘。如不配置只可單機(jī)訪問
allow:
# 黑名單
deny:
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
use-global-data-source-stat: true
啟動(dòng)項(xiàng)目后訪問:http://localhost:8080/druid/login.html
image.png
輸入配置文件設(shè)置的賬號(hào)密碼,即可進(jìn)入查看各種監(jiān)控?cái)?shù)據(jù)
image.png