GBase 8a 负载均衡策略及JDBC连接方式

本文详细介绍了GBase8a的JDBC连接方式,包括负载均衡策略(轮询),配置参数failoverEnable、hostList和gclusterId的作用,以及在不同访问场景下的使用示例,特别强调了gclusterId唯一性的关键。
摘要由CSDN通过智能技术生成

GBase 8a 负载均衡策略及JDBC连接方式

GBase 8a JDBC 实现了负载均衡的功能,其实现原理为轮询,需要配置三个参数:

failoverEnable=true 
hostList=192.168.1.57,192.168.1.58
gclusterId=gcl1

参数说明:
failoverEnable:GBase 8a 集群使用,创建连接时,如果集群当前集群节点不可用,是否自动路由到下一个可用的节点。默认为 false。
hostList:      GBase 8a 集群使用,当 failoverEnable=true 的情况下生效。记录集群中节点的 IP(非主) 以逗号分隔。
gclusterId:    必须以 a-z 任意字符开头的字符串, gclusterId 组成可以包含 a-z、 0-9 所有字符长度为最大为20。在同一应用程序中, gclusterId 可有程序开发人员自行决定,全工程(JVM内)唯一即可。注意:当设置 gclusteId 时,自动路由功能自动转换为高可用负载均衡。
gclusterId 不是数据库服务端的配置,而是JDBC客户端的配置参数,可由应用自定义。GBase8a的JDBC负载均衡连接是JDBC驱动来实现的,一个JVM内不同的 gclusterId 对应的连接会创建不同的列表,用于区分连接的集群。如果你在一个JVM里有多个用途的个URL,那么 gclusterId 必须要指定唯一值,否则 gclusterId 相同则这些 IP 会被当成1套集群使用,从而导致多个URL里的IP会在一个大的循环池(所有 gclusterId对应的所有IP)循环,可能导致访问了本该不属于本服务负责的集群。这一点,找官方技术人员达到说法有点差异,如果 gclusterId 应用内部唯一的话,官方技术支持人员解答效果可能是负载均衡功能失效、高可用功能仍然有效,这处决于JDBC驱动的内部实现。因此,可以考虑由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 连接方式示例:

GBase 8a 的几种访问方式:

单节点环境或访问集群的固定节点(普通方式):
无需指定 failoverEnable、hostList、gclusterId 参数:
String url = "jdbc:gbase://192.168.1.56:5258/test?user=root&password=root"
String url = "jdbc:gbase://192.168.1.56:5258/vc1.test?user=root&password=root"

高可用方式访问:
需要指定 failoverEnable 和 hostList 两个参数:
String url = "jdbc:gbase://192.168.1.56:5258/test?user=root&password=root&failoverEnable=true&hostList=192.168.1.57,192.168.1.58"
String url = "jdbc:gbase://192.168.1.56:5258/vc1.test?user=root&password=root&failoverEnable=true&hostList=192.168.1.57,192.168.1.58"

负载均衡方式访问:
需要指定 failoverEnable 和 hostList 和 gclusterId 三个参数:
String URL = "jdbc:gbase://192.168.1.56:5258/test?user=gbase&password=gbase20110531&failoverEnable=true&hostList=192.168.1.57,192.168.1.58&gclusterId=gcl1"
String URL = "jdbc:gbase://192.168.1.56:5258/vc1.test?user=gbase&password=gbase20110531&failoverEnable=true&hostList=192.168.1.57,192.168.1.58&gclusterId=gcl1"
注意:如果负载均衡方式指定的 gclusterId 应用(JVM)内不唯一,则可能导致实际负载均衡功能失效、只有高可用功能,最终效果处决于JDBC的内部实现;

关于有/无VC的访问:
如果多VC环境(V9)访问指定的VC的数据库:需要指定 vcname.dbname,例如:vc1.test 。
例如:String url = "jdbc:gbase://192.168.1.56:5258/vc1.test?user=root&password=root"

如果多VC环境(V9)访问数据库配置的默认VC的数据库:连接时可以不用指定VC,直接使用 dbname 的方式访问,能兼容原有应用的原来访问方式。
例如:String url = "jdbc:gbase://192.168.1.56:5258/test?user=root&password=root"

如果非VC环境(V8)访问数据库:直接使用 dbname 的方式访问。
例如:String url = "jdbc:gbase://192.168.1.56:5258/test?user=root&password=root"
 


关于 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查询数据。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunny05296

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值