Java 驱动连接池用于创建和管理连接。通过连接复用以减少创建连接的资源消耗、提升获取连接的效率。对于需要频繁创建连接的场景,建议使用连接池。
连接池的使用步骤主要如下:
详情可查看 Java API。完整的连接池使用示例请参考 SequoiaDB 安装目录下的 samples/Java/com/sequoiadb/samples/Datasource.java
指定 SequoiaDB 集群的 coord 地址、鉴权信息,以及设置连接池配置参数,之后创建连接池对象。
ArrayList<String> addrs = new ArrayList<String>(); addrs.add("sdbserver1:11810"); // SequoiaDB 集群的协调节点地址 addrs.add("sdbserver2:11810"); addrs.add("sdbserver3:11810"); String userName = "admin"; String password = "admin"; // 连接池参数配置 DatasourceOptions dsOpt = new DatasourceOptions(); dsOpt.setMaxCount( 500 ); dsOpt.setMaxIdleCount( 50 ); dsOpt.setMinIdleCount( 20 ); // 连接参数配置 ConfigOptions nwOpt = new ConfigOptions(); nwOpt.setConnectTimeout( 200 ); nwOpt.setMaxAutoConnectRetryTime( 0 ); SequoiadbDatasource ds = new SequoiadbDatasource(addrs, userName, password, nwOpt, dsOpt);
Note:
在执行上述程序的机器上,需要配置 Sequoiadb 集群协调节点的主机名/IP地址映射关系。否则上述代码执行时将无法识别 sdbserver1、sdbserver2、sdbserver3。
如果某一协调节点不可用,如 sdbserver3:11810 ,那么连接池将不会使用其创建新连接。
使用连接池获取、归还连接。
Sequoiadb db = null; try { // 获取连接 db = ds.getConnection(); // 使用连接 db... } catch (BaseException | InterruptedException e) { // 异常处理 } finally { // 归还连接 if ( db != null ) { ds.releaseConnection( db ); } }
ds.close();
连接池需要使用如下两种参数配置:
DatasourceOptions:连接池参数配置
ConfigOptions:连接参数配置
用于控制连接池的运行。常用配置如下:
设置连接池可管理的最大连接数量,默认值为 500。当连接数量达到上限时,连接池将不再创建新连接。
dsOpt.setMaxCount(500);
设置连接池中闲置连接(可直接使用的连接)数量。连接池将动态维持池中的闲置连接数量在 [MinIdleCount, MaxIdleCount] 范围中。
dsOpt.setMaxIdleCount(50); dsOpt.setMinIdleCount(20);
设置每次创建新连接的数量,默认值为 10。当连接池闲置连接数量小于 MinIdleCount 时,连接池就会触发连接创建任务,每次最多创建 DeltaIncCount 数量的新连接。
dsOpt.setDeltaIncCount(10);
设置连接池内闲置连接的最大闲置时间,默认值为 0(表示最大闲置时间为无穷大),单位:毫秒。连接池会定期检查池内的闲置连接,并销毁闲置时间超时的连接。
dsOpt.setKeepAliveTimeout(0);
设置闲置连接检查任务的执行周期,默认值为 60000(1 分钟),单位:毫秒。该任务会定期检查闲置连接的数量,以及它们的闲置时间是否超时。
dsOpt.setCheckInterval(60 * 1000);
连接池创建新连接时使用的网络参数,常用配置如下:
设置连接超时时间,单位:毫秒。
nwOpt.setConnectTimeout(200);
设置连接失败的重试时间,单位:毫秒。建议设置为 0,表示不重试。
nwOpt.setMaxAutoConnectRetryTime(0);
Note:
连接池参数配置、连接参数配置的其他配置项详情可查看 Java API。