druid解决高并发的数据库
处理高并发的时候可以解决我们java一个核心问题
java核心问题就是并发问题
解决并发一个是redis
一个是线程池的方式
现在出来是个druid
好像现在解决高并发的方式
进行更换数据库的方式
操作场景
插入频繁
但是更新比较少的方式
我们进行订单秒杀的方式
也是在插入的数量比较多
我们一会测试一下
分组查询的方式
更加适合分组查询的方式
高延时
使用指南
https://dlcdn.apache.org/druid/33.0.0/apache-druid-33.0.0-bin.tar.gz
下载地址
解压文件
配置jdk
必须使用jdk17
if [ -f jdk-17.0.1_linux-x64_bin.tar.gz ];then
echo "file exist"
tar -zxvf jdk-17.0.1_linux-x64_bin.tar.gz
name="jdk-17.0.1"
# -f 是否存在文件
# -d 是否为目录的方式
if [ -d "$name" ];then
echo "flie exist"
mv jdk-17.0.1 jdk
mv jdk-17.0.1 /usr/bin/
echo "file success"
export JAVA_HOME=/usr/bin/jdk
export CLASSPATH=.:$JAVA_HOME/lib/
export PATH=.:$JAVA_HOME/bin:$PATH
source /etc/profile
echo "config success"
java -version
else
echo "file not exist"
fi
else
echo "file not exist"
echo "delete success"
fi
cd /data/apache-druid-33.0.0/
./bin/start-druid -m 16g
启动项目
conf/druid/auto
./bin/start-druid -m 16g
必须加这个-m
才能启动
启动成功了
使用jdbc操作的方式
public static void main(String[] args) {
String url = "jdbc:avatica:remote:url=http://192.168.36.128:8888/druid/v2/sql/avatica/;transparent_reconnection=true";
// String query = "SELECT COLUMN_NAME,* FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'wikipedia' and TABLE_SCHEMA='druid'";
String query = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS";
Properties connectionProperties = new Properties();
try (Connection connection = DriverManager.getConnection(url, connectionProperties)) {
try (
final Statement statement = connection.createStatement();
final ResultSet rs = statement.executeQuery(query)
) {
while (rs.next()) {
String columnName = rs.getString("COLUMN_NAME");
String ordinal_position = rs.getString("ORDINAL_POSITION");
System.out.println(ordinal_position);
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
数据出现了
问题
一共89条数据信息查询40多秒
经常出现超时问题
容易经常失败
安装需要关闭防火墙
总结
功能比较全
数据分片
数据聚合
json数据导入
推荐大项目使用小项目不推荐使用
因为延时比较高