main
黄海 2 years ago
parent 4c3effbf1c
commit 0925314263

@ -0,0 +1,90 @@
package UnitTest;
import com.alibaba.druid.filter.stat.StatFilter;
import com.dsideal.FengHuang.Plugin.SlaveDrudPlugin;
import com.google.common.collect.Lists;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import org.apache.shardingsphere.api.config.masterslave.LoadBalanceStrategyConfiguration;
import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestReadWriteSplit {
public static DruidPlugin createDruidPlugin(String url, String username, String password, String driverClass) {
DruidPlugin druidPlugin = new DruidPlugin(url, username, password, driverClass);
//最大连接池数量
druidPlugin.setMaxActive(20);
//最小连接池数量
druidPlugin.setMinIdle(1);
//初始化时建立物理连接的个数默认为0
druidPlugin.setInitialSize(1);
//获取连接时最大等待时间单位毫秒。配置了maxWait之后缺省启用公平锁并发效率会有所下降如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
druidPlugin.setMaxWait(60000);
//如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
druidPlugin.setTimeBetweenEvictionRunsMillis(60000);
//连接保持空闲而不被驱逐的最小时间
druidPlugin.setMinEvictableIdleTimeMillis(300000);
//建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。
druidPlugin.setTestWhileIdle(true);
//申请连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。默认为true
druidPlugin.setTestOnBorrow(false);
//归还连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。默认为true
druidPlugin.setTestOnReturn(false);
//数据监控
druidPlugin.addFilter(new StatFilter());
return druidPlugin;
}
public static void main(String[] args) {
String MasterUrl = "jdbc:postgresql://10.10.14.61:15400/test_db";
String SlaveUrl = "jdbc:postgresql://10.10.14.62:15400/test_db";
String driverClass = "org.postgresql.Driver";
String userName = "postgres";
String passWord = "DsideaL147258369";
DruidPlugin dpMaster = createDruidPlugin(MasterUrl, userName, passWord, driverClass);
DruidPlugin dpSlave = createDruidPlugin(SlaveUrl, userName, passWord, driverClass);
Map<String, DruidPlugin> drudMap = new HashMap<>();
drudMap.put("ds_master", dpMaster);
drudMap.put("ds_slave", dpSlave);
//负载均衡算法
LoadBalanceStrategyConfiguration loadBalanceStrategyConfiguration = new LoadBalanceStrategyConfiguration("round_robin");
MasterSlaveRuleConfiguration masterSlaveRuleConfig =
new MasterSlaveRuleConfiguration(
"device_read_write",
"ds_master",
Lists.newArrayList("ds_slave"),
loadBalanceStrategyConfiguration);
SlaveDrudPlugin drudPlugin = new SlaveDrudPlugin(masterSlaveRuleConfig, drudMap);
drudPlugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin("aGroup", drudPlugin);
arp.setDevMode(false);
//配置数据库方言
arp.setDialect(new PostgreSqlDialect());
//启动
arp.start();
String sql = "truncate table test";
Db.update(sql);
for (int i = 1; i <= 100; i++) {
sql = "insert into test(id,txt) values(?,?)";
Db.update(sql, i, "黄海——" + i);
}
for (int i = 1; i <= 100; i++) {
sql = "select * from test where id=?";
List<Record> list = Db.find(sql, i);
System.out.println(list);
}
}
}

@ -0,0 +1,73 @@
package UnitTest;
import com.alibaba.druid.filter.stat.StatFilter;
import com.dsideal.FengHuang.Plugin.SlaveDrudPlugin;
import com.google.common.collect.Lists;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import org.apache.shardingsphere.api.config.masterslave.LoadBalanceStrategyConfiguration;
import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestReadWriteSplit2 {
public static DruidPlugin createDruidPlugin(String url, String username, String password, String driverClass) {
DruidPlugin druidPlugin = new DruidPlugin(url, username, password, driverClass);
//最大连接池数量
druidPlugin.setMaxActive(20);
//最小连接池数量
druidPlugin.setMinIdle(1);
//初始化时建立物理连接的个数默认为0
druidPlugin.setInitialSize(1);
//获取连接时最大等待时间单位毫秒。配置了maxWait之后缺省启用公平锁并发效率会有所下降如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
druidPlugin.setMaxWait(60000);
//如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
druidPlugin.setTimeBetweenEvictionRunsMillis(60000);
//连接保持空闲而不被驱逐的最小时间
druidPlugin.setMinEvictableIdleTimeMillis(300000);
//建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。
druidPlugin.setTestWhileIdle(true);
//申请连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。默认为true
druidPlugin.setTestOnBorrow(false);
//归还连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。默认为true
druidPlugin.setTestOnReturn(false);
//数据监控
druidPlugin.addFilter(new StatFilter());
return druidPlugin;
}
public static void main(String[] args) {
String url = "jdbc:postgresql://10.10.14.61:15400,10.10.14.62:15400/test_db?autoBalance=roundrobin&targetServerType=master";
String driverClass = "org.postgresql.Driver";
String userName = "postgres";
String passWord = "DsideaL147258369";
DruidPlugin druidPlugin = createDruidPlugin(url, userName, passWord, driverClass);
druidPlugin.start();
ActiveRecordPlugin arp = new ActiveRecordPlugin("aGroup", druidPlugin);
arp.setDevMode(false);
//配置数据库方言
arp.setDialect(new PostgreSqlDialect());
arp.start();
String sql = "truncate table test";
Db.update(sql);
for (int i = 1; i <= 100; i++) {
sql = "insert into test(id,txt) values(?,?)";
Db.update(sql, i, "黄海——" + i);
}
for (int i = 1; i <= 100; i++) {
sql = "select * from test where id=?";
List<Record> list = Db.find(sql, i);
System.out.println(list);
}
}
}

@ -132,12 +132,12 @@ public class Start extends JFinalConfig {
*/
@Override
public void configPlugin(Plugins me) {
DruidPlugin dp1 = createDruidPlugin(PropKit.get("master_jdbcUrl"), PropKit.get("master_user"), PropKit.get("master_password").trim(), PropKit.get("master_driverClassName"));
DruidPlugin dp2 = createDruidPlugin(PropKit.get("slave_jdbcUrl"), PropKit.get("slave_user"), PropKit.get("slave_password").trim(), PropKit.get("slave_driverClassName"));
DruidPlugin dpMaster = createDruidPlugin(PropKit.get("master_jdbcUrl"), PropKit.get("master_user"), PropKit.get("master_password").trim(), PropKit.get("master_driverClassName"));
DruidPlugin dpSlave = createDruidPlugin(PropKit.get("slave_jdbcUrl"), PropKit.get("slave_user"), PropKit.get("slave_password").trim(), PropKit.get("slave_driverClassName"));
Map<String, DruidPlugin> drudMap = new HashMap<>();
drudMap.put("ds_master", dp1);
drudMap.put("ds_slave", dp2);
drudMap.put("ds_master", dpMaster);
drudMap.put("ds_slave", dpSlave);
//负载均衡算法
LoadBalanceStrategyConfiguration loadBalanceStrategyConfiguration = new LoadBalanceStrategyConfiguration("round_robin");
@ -152,7 +152,7 @@ public class Start extends JFinalConfig {
me.add(drudPlugin);
ActiveRecordPlugin arp = new ActiveRecordPlugin("aGroup", drudPlugin);
arp.setDevMode(PropKit.getBoolean("devMode", false));
arp.setDevMode(false);
//配置数据库方言
arp.setDialect(new PostgreSqlDialect());

Loading…
Cancel
Save