什么是数据库负载均衡?

什么是数据库负载均衡?,第1张

负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。

市面上存在两种数据库负载均衡的思路:

1、基于数据库连接的负载均衡:例如总共有100个数据库连接,50个连接登录到数据库机器A,另外50个连接登录到数据库机器B,这样每个连接中接下来的所有请求全都是发往同一台数据库机器的。这种数据库负载均衡的思路模拟了WEB上的负载均衡方法,但是由于WEB连接是短时间连接(连接建立后,获取需要的HTML等资源后,连接马上被关闭),而数据库连接是长时间连接( 连接建立后,可长时间保持,客户可不停向数据库发送SQL请求,数据库做出回答,如此不断循环直到连接被人为或因错而断开为止),因此这种数据库负载均衡思路存在着明显的缺点:有可能会发生绝大部分的请求压力都集中到某台数据库机器上去,从而使得负载均衡效果失效。

2、基于批处理请求的负载均衡:在建立数据库连接的时候,会同时与每台数据库服务器建立连接,之后针对客户端的每次请求,都会根据负载均衡算法,独立地选出某个数据库节点来执行这个请求。此种思路符合数据库长时间连接的特征,不存在上面所述的基于连接的负载均衡方法的缺点。

在使用JDBC实现连接GBase8aMPP数据库时,由于GBase8aMPP数据库是分布式数据库,那么在通过JDBC实现连接高可用的情况下,还希望能够实现连接级别的负载均衡,需要如何实现呢?这就需要使用到GBase8aMPP数据库JDBC驱动自带的负载均衡功能。

如果我们希望把数据库连接请求平均分布到各个节点的上话,我们可以使用JDBC 高可用负载均衡功能。

假设有如下场景,部署有一个GBase 集群,三个节点IP如下:

192.168.1.1;192.168.1.2;192.168.1.3;

String dbUrl =

“jdbc:gbase://192.168.1.1:5258/test?user=gbase&password=gbase20110531&failoverEnable=true&hostList=192.168.1.2,192.168.1.3&gclusterId=gcl1”

failoverEnable:是否开启高可用。

hostList:集群节点的IP列表,以逗号分隔,hostList中不需要包含url中的主IP。

gclusterId:不同的gclusterId会创建不同的列表,用于区分被连接的集群,要求必须以a-z任意字符开头的可以包含a-z、0-9所有字符长度为最大为20的字符串。

高可用负载均衡功能是将url中的IP和hostList中的IP放入一个列表中,当应用获取连接的时候,JDBC会从列表表中顺序获取IP创建连接,每个IP获取一个连接,从而实现连接的负载均衡,同时,当列表中的IP不可连接时,JDBC会顺序获取列表中的下一个IP,获取连接,如果无可用连接时,将抛出异常。也就是说高可用负载均衡功能既实现了连接负载均衡功能,也实现了高可用功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9949774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存