GBase 8a 负载均衡策略及JDBC连接方式
GBase 8a JDBC 实现了负载均衡的功能,其实现原理为轮询,需要配置三个参数:
failoverEnable=true
hostList=192.168.1.57,192.168.1.58
gclusterId=gcl1
其中:
failoverEnable:为集群的故障转移配置,当连接不通时,集群会尝试寻找可用节点连接。要高可靠的话,必须配置该参数为 true。
hostList:高可用时,多个备用的主机IP列表,用逗号分割。
gclusterId:唯一标识此连接 URL 的字符串,可自定义。GBase8a的JDBC负载均衡连接是JDBC驱动来实现的,一个JVM内不同的 gclusterId 对应的连接会创建不同的列表,用于区分连接的集群。配置连接的 gclusterId 时必须以字母开头的可以包含字母和数字、最大长度为20的字符串。如果你在一个JVM里有多个用途的个URL,那么 gclusterId 必须要指定唯一值,否则 gclusterId 相同则这些 IP 会被当成1套集群使用,从而导致多个URL里的IP会在一个大的循环池(所有 gclusterId对应的所有IP)循环,可能导致访问了本该不属于本服务负责的集群。可以考虑由JVM应用保存连接时,自动生成 gclusterId 唯一值。
例如:
String URL = "jdbc:gbase://192.168.1.56/vcname.test?user=gbase&password=123456&failoverEnable=true&hostList=192.168.1.57,192.168.1.58&gclusterId=gcl1"
负载均衡方式进行JDBC连接 conn = DriverManager.getConnection(url) 时,多次连接拿到的连接的真实IP地址会在 192.168.1.56、192.168.1.57、192.168.1.58 这三个地址之间循环。
注意:
1)hostList 如果重复配置,例如:hostList=192.168.1.57,192.168.1.58,192.168.1.57,192.168.1.57,则会在5个IP之间循环,这样会导致192.168.1.57的命中概率上升。
2)如果一个JVM里面有多个URL,gclusterId 必须配置指定一个唯一值(可自定义),否则 gclusterId 相同会导致一个JVM内的多个URL的全部IP被当做1套集群使用了。
GBase 8a JDBC URL 连接方式示例:
以3节点集群 192.168.1.56、57、58 为例说明JDBC的几种连接方式:
1.普通方式访问test库(连接V8 或 V9的默认vc,无需指定vcname.dbname)
String URL = "jdbc:gbase://192.168.1.56/test?user=gbase&password=123456"
2.普通方式访问test库(V9的指定vc,必须指定vcname.dbname)
String URL = "jdbc:gbase://192.168.1.56/vcname.test?user=gbase&password=123456"
3.负载均衡方式访问test库(连接V8 或 V9的默认vc,无需指定vcname.dbname)
String URL = "jdbc:gbase://192.168.1.56/test?user=gbase&password=123456&failoverEnable=true&hostList=192.168.1.57,192.168.1.58&gclusterId=gcl1"
4.负载均衡方式访问test库(V9的指定vc,必须指定vcname.dbname)
String URL = "jdbc:gbase://192.168.1.56/vcname.test?user=gbase&password=123456&failoverEnable=true&hostList=192.168.1.57,192.168.1.58&gclusterId=gcl1"
除了JDBC外,ODBC等其他连接方式也支持负载均衡连接,连接方式有差别,详情可参考官方的产品手册描述。
关于 GBase 8a V9 新增的多 VC 功能(V8没有VC):
VC:Virtual Cluster,虚拟集群,是对 Data Cluster(集群的分布式数据存储计算集群)节点的划分, 每个 VC 拥有固定数量的 Data Cluster 节点。
整个集群是由若干个 VC 组成,所有的 VC 由同一套 GCluster Cluster(集群的分布式调度集群)和 GCware Cluster(集群的分布式管理集群,一致性)管理, 共享统一的入口。
可以将不同 Data Cluster 节点按不同业务特点进行物理隔离,配置形成各自独立运行的 VC。
可以在一个 GBase 8a MPP 集群中创建多个VC,VC具有一下特点:
1,所有的VC都可以通过任意 coordinate 节点进行访问;
2,只有为用户授予了对应VC的访问权限,该用户才可以访问该VC上的库、表等内容;
3,每个VC都包含自己的计算和存储节点(创建VC时配置指定 data node 列表),不同VC间资源隔离;
4,用户有多个VC的访问权限时,可以在多个VC间进行数据交换,甚至跨VC查询数据。