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

news/2024/7/10 2:41:24 标签: 负载均衡, 数据库

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


http://www.niftyadmin.cn/n/5099091.html

相关文章

React 路由学习总结 react-router-dom6+react-router-dom5

开题 单页面应用和多页面应用 SPA:单页面应用程序,整个应用中只有一个页面(index.html) MPA:多页面应用程序,整个应用中有很多页面(*.html) react路由 现在的前端应用大多都是SPA单页面应用程序,也就是一个HTML页面的…

安卓14通过“冻结”缓存应用程序腾出CPU,提高性能和内存效率

本月早些时候,我们听说更新到安卓14似乎提高了谷歌Pixel 7和Pixel 6的效率——提高了电池寿命,并在这个过程中减少了热量的产生。现在看来,安卓14的增效功能细节已经公布。 安卓侦探Mishaal Rahman在X(前身为Twitter)…

集合根据属性分组思路

先创建结果结构&#xff0c;然后直接getOrDefault&#xff0c;最后put。 private Map<String, Map<String, ResourceBean>> covertResourceToMap(List<ResourceDto> resourceList) {// hotlineId,serviceCodeMap<String, Map<String, ResourceBean>…

微信小程序多个按钮点击互不影响禁用实现

这段代码主要实现的是当有多个按钮时,需要改变按钮的内容,比如点击第一个按钮,按钮禁用并内容改为五秒后可点击,但此时不影响第二个按钮点击,每个按钮都是可以禁用5秒后再点击,就是互不影响 Page({data: {buttonStates: {}, // 用于存储按钮的状态},onButtonClick: function (e…

实现日期间的运算——C++

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…

vue2 解密图片地址(url)-使用blob文件-打开png格式图片

一、背景 开发中需要对加密文件进行解码&#xff0c;如图片等静态资源。 根据后端给到的url地址&#xff0c;返回的是图片文件&#xff0c;但是乱码的&#xff0c;需要解码成png图片进行展示 二、请求接口 将后端返回的文件转为文件流&#xff0c;创建Blob对象来存储二进制…

课时4作业3

Description 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张&#xff0c;且每种票子至少一张。问&#xff1a;有几种换法&#xff1f; Input 无输入 Output 一个数&#xff0c;表示共有多少种换法 Sample Input 1 无 Sample O…

Qt基础 QPieSeries饼状图

目录 1.简单例子 2. 稍微复杂点 QPieSeries Class&#xff1a;饼状图数据 QChart 管理图表系列、图例和轴的图形表示 QChartView 可以显示图表的独立小部件 QPieSeries 在饼图中显示数据 QPieSlice 表示饼图系列中的单个切片&#xff08;其实就是标签&#xff09; 1…