其他功能与优化
读写分离&负载均衡
Vastbase G100数据库使用流复制可搭建主从架构,即主机可读可写,从机只读。
假设应用端可支持读写分离,即为读写操作分别构建不同的连接或连接池。假设使用连接池,则可以创建一个读写连接池,一个只读连接池,当写操作时使用读写连接池,读操作时使用只读连接池。
Vastbase G100数据库JDBC驱动内置了一个简单的负载均衡功能,JDBC驱动在连接到数据库服务端后,会对测试数据库是否符合targetServerType要求,如符合要求则会进行sql请求。
当正在执行sql语句的数据库节点发生当宕机,使用JDBC驱动的客户端会接收到错误”FATAL:terminating connection due to administrator command”,JDBC驱动不会对sql命令进行二次分发。
参数说明
参考连接数据库章节中targetServerType和loadBalanceHosts的参数设置说明。
样例
写操作
写操作连接或连接池的JDBC连接字符串。
jdbc:postgresql://node1,node2,node3/accounting?targetServerType=master
读操作
读操连接或连接池的JDBC连接字符串。
jdbc:postgresql://node1,node2,node3/accounting?targetServerType=preferSlave&loadBalanceHosts=true
Socket相关
Unix Domain Socket是进程间通讯的一种方式,适用于同一台服务器内不同进程的通讯。Vastbase G100支持使用Unix Domain Socket访问数据库,Java应用希望以Unix Domain Socket访问Vastbase G100数据库,需要添加新的类库支持。
参数说明
参考连接数据库章节中socketFactory和socketFactoryArg的参数设置说明。
样例
使用maven添加相关类库支持
<dependency>
<groupId>no.fiken.oss.junixsocket</groupId>
<artifactId>junixsocket-common</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>no.fiken.oss.junixsocket</groupId>
<artifactId>junixsocket-native-common</artifactId>
<version>1.0.2</version>
</dependency>
JDBC连接字符串添加参数:
jdbc:postgresql://host:port/database?socketFactory=org.newsclub.net.unix.socketfactory.PostgresqlAFUNIXSocketFactory&socketFactoryArg=[path-to-the-unix-socket]