
在处理用户业务的并发接入时,连接的处理任务分配管理服务可能随着并发量的加大而逐步达到性能瓶颈,而任务的均衡分配处理可以协助任务分配管理服务更好地分配调度待执行任务,均衡分配业务处理,充分调动分布式数据库并发处理能力,从而实现并发业务处理响应。
不同于传统解决方案,在 ArgoDB 中,您只需简单修改配置文件,即可在 Quark Gateway 的 Session 层面,将客户端的连接分担给多个可用的 Quark Server ,从而平衡业务流量以应对高并发场景。

使用 Quark Gateway 实现负载均衡时,至少需部署 2 个及以上的 Quark Server。 |
配置规则
-
通过 Transwarp Manager 部署 Quark Gateway,部署流程可参考安装服务,如已部署可跳过本步骤。
图 4.1.2:安装 Quark Gateway -
通过 SSH 登录至 Quark Gateway 服务所属机器。
-
执行下述格式的命令,进入 Quark Gateway 的配置文件路径。
# 根据环境替换服务 ID,例如 cd/etc/quarkgateway1/conf/ cd /etc/quarkgateway{服务 ID}/conf/
复制 -
通过
vim
或vi
命令修改配置文件(servers.data),示例如下,可将环境中的 3 个 Quark Server 组成负载均衡组,从而共同分摊业务流量。servers.dataNAME IS001 URI host1:10000 TAG primary NAME IS002 URI host2:10000 TAG primary NAME IS003 URI host3:10000 TAG primary
复制参数说明:
-
NAME:取值唯一的名称。
-
URI:Quark Server 的连接信息,包含主机名和端口号。
-
TAG:标签,Quark Gateway 将依据标签进行路由,本案例中,我们将 Quark Server 设置相同的标签,即可将它们组成了一个群组,实现负载均衡。
-
更多场景
除通过 Quark Gateway 实现负载均衡外,您还可以实现查询高可用、按 SQL 规则路由等功能,具体场景及配置示例如下。
按 SQL 规则路由
基于特定规则将不同的业务(例如查询/跑批),分发的到不同的 Quark Server,在本案例中,假设我们拥有两个 Quark Server,分别部署在 idc1 和 idc2 节点上,我们希望对 demodata 库中 customer 表执行 SQL 查询时路由至 idc2 对应的 Quark Server 上执行;其他查询业务路由至 idc1 的 Quark Server 上执行。
为实现此需求,我们需要修改 Quark Gateway 中的下述配置文件(如没有可新建):
-
servers.data
将 idc1 对应的 Quark Server 标签定义为 cluster,将 idc2 对应的 Quark Server 标签定义为 local-only。
NAME IS001 URI idc1:10000 TAG cluster NAME IS002 URI idc2:10000 TAG local-only
复制 -
tagged-table.data
为 demodata.customer 表设置 TOKEN-TAG 的值为 local。
local: demodata.customer
复制 -
route-rule.data
将表名符合 TOKEN-TAG 为 local 定义的 SQL 语句,即对 demodata.customer 执行的 SQL 请求路由至 idc2 对应的 Quark Server 上执行,其它表的 SQL 语句则路由至 idc1。
NAME local-mode CONDITIONS SQL.CONTAIN-ANY-FULLTABLENAME TOKEN-TAG|local TO local-only [ANY] NAME DEFAULT TO cluster [ANY]
复制
查询高可用
为保障业务的高可用性,当某个 Quark Server 因网络/电力等因素发生服务异常,需要 Quark Gateway 能自动将请求切换到另一个可用的 Quark Server上。
本案例中,假设我们拥有两个 Quark Server,分别部署在 idc1 和 idc2 节点上,我们希望优先使用 idc1 节点上的 Quark Server 提供查询服务,当它发生故障时,将查询业务路由至 idc2 节点上的 Quark Server 执行,保障业务高可用。
为实现此需求,我们需要修改 Quark Gateway 中的下述配置文件(如没有可新建):
-
servers.data
将 idc1 对应的 Quark Server 标签定义为 primary,将 idc2 对应的 Quark Server 标签定义为 secondary。
NAME IS001 URI idc1:10000 TAG primary NAME IS002 URI idc2:10000 TAG secondary
复制如果开启 kerberos 认证,您还需要在 URI 下方增加一行该格式的配置,用于设置认证信息:
PRINCIPAL hive/host@TDH
。 -
route-rule.data
将所有的请求导向名称为 query-ha 的集群。
NAME DEFAULT TO query-ha [ANY]
复制 -
route-cluster.data
设置集群名字为 query-ha,并设置切换 Quark Server 的策略为“server-fail”。即表示当 idc1 对应的 Quark Server 发生异常故障后,连接请求被路由至 idc2 。
NAME query-ha TRY primary [ANY,SERVER-FAIL] TRY secondary [ANY]
复制如需实现超时转发的效果,即假设 idc1 对应的 Quark Server 上任务执行发生超时,由 Quark Gateway 将请求切换到 idc2。您可以将上述配置中的
TRY primary [ANY,SERVER-FAIL]
替换为TRY primary [ANY,1000ms]
,超时时间可以根据业务需求指定,此处设置为 1000 毫秒。