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

您所在的位置:网站首页 jdbc连接两个数据库 GBase 8a 负载均衡策略及JDBC连接方式

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

2024-07-16 00:09| 来源: 网络整理| 查看: 265

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3