如果我们需要将连接请求分摊到集群的每个节点上时,可以使用集群负载均衡功能(该功能需要 GBASE南大通用 ADO.NET 8.3.81.53 及以上版本)。集群负载均衡
功能与集群高可用功能都属于客户端负载均衡解决方案。使用GBASE南大通用此功能时,需同时设置连接串的 Failover、IpList、GClusterID 参数。
GBASE南大通用集群负载均衡支持多集群的情况,即在一个应用中可以指定多个集群共同分担负载。但在每个连接串中只能指明一个 GClusterID 和此集群的 IpList。
假设存在如下场景:
现有集群 G1 中存在三个节点,18 个连接请求。节点 1:192.168.0.2 节点 2:192.168.0.3 节点 3:192.168.0.4。
连接串中设置 server、iplist 和 GClusterID 参数。
String _ConnString =
‚server=192.168.0.2;failover=true;iplist=192.168.0.3;192.168.0.
4;gclusterid=g1" ;
接口会将 18 个连接请求分摊在节点 1、节点 2 和节点 3 上,分摊后每
个节点上会有 6 个请求线程。
注:当某个连接请求访问集群节点 1 时,接口发现节点 1 故障后,在后续的连接请求到来时接口将不再给节点 1 分配请求,而会将请求分配给节点 2(若节点 2 故障时会分配给节点 3)。
下面例子介绍如何开启集群负载均衡。例子中会创建 18 个连接对象,使用192.168.0.2、192.168.0.3、192.168.0.4 做为负载均摊节点。
C# 示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Data;
using GBase.Data.GBaseClient;
namespace UsingAdoNet
{
class Program
{
static void Main(string[] args)
{
String _ConnStr = "server=192.168.0.2;user
id=root;password=1;database=test;port=5258;pooling=false;failover=tr
ue;iplist=192.168.0.3, 192.168.0.4;gclusterid=g1";
GBaseConnection[] _Conn = new GBaseConnection[18];
try
{
for (int i = 0; i < _Conn.Length; i++)
{
_Conn[i] = new GBaseConnection(_ConnStr);
_Conn[i].Open();
Thread.Sleep(2000);
}
}
catch (System.Exception ex)
{
Assert.Fail(ex.Message);
}
finally
{
for (int i = 0; i < _Conn.Length; i++)
{
if (_Conn[i] != null)
{
if (_Conn[i].State ==
System.Data.ConnectionState.Open )
_Conn[i].Close();
}
}
}
}
}
}