全部产品

Failover 和 Load-Balancing

OceanBase Connector/J 支持三种 Failover 和 Load-Balancing 模式:sequential、loadbalance 和 replication。

sequential 模式

sequential 模式在多主机环境中支持连接 Failover。此模式不支持从属服务器的 Load-Balancing 读取。连接器将尝试按照在连接 URL 中声明的顺序连接到主机,因此第一个可用的主机将用于所有查询。 例如,连接 URL 如下:

jdbc:oceanbasedb:sequential:host1,host2,host3,host4/testobdb

当连接器尝试连接时,首先尝试连接 host1。如果该主机不可用,则尝试连接 host2。当主机发生故障时,连接器将尝试以相同的顺序重新连接到主机。

loadbalance 模式

loadbalance 模式在多主机环境中支持连接 Load-Balancing。此模式不支持从属服务器的 Load-Balancing 读取。连接器通过从每个连接 URL 中随机选择一个主机来对所有查询执行 Load-Balancing。由于连接随机分布在所有主机上,因此查询实现 Load-Balancing。

replication 模式

replication 模式在主从环境支持连接 Load-Balancing。该模式支持具有一个或多个主机的环境。如果在执行读取之前将连接设置为只读,则此模式支持从属服务器的 Load-Balancing 读取。连接器通过从连接 URL 中随机选择一个从服务器来执行读取查询,从而执行 Load-Balancing。

相关参数

相关参数如下表所示。

参数

描述

autoReconnect

如果启用了此参数,并且未使用 Failover 和 Load-Balancing 模式,则连接器在连接失败后仅尝试重新连接到主机,这称为 Basic Failover。

如果启用了此参数,并且正在使用 Failover 和 Load-Balancing 模式,则连接器会将出现故障的主机列入黑名单,并尝试连接到其他相同类型的主机。这称为 Standard Failover。

默认值:false

retriesAllDown

当连接器正在执行 Failover 并且所有主机都关闭时,此参数用于定义连接器的最大连接尝试次数,以避免引发异常。

默认值:120。

failoverLoopRetries

当连接器静默搜索有效主机时,此参数用于定义连接器的最大连接尝试次数,以避免引发异常。此参数不同于 retriesAllDown 参数,此静默搜索用于连接器的临时解决方案,例如在从属连接失败时使用主连接执行读取。

默认值:120。

validConnectionTimeout

当配置了多个主机时,连接器在所设置的时长(以秒为单位)之内,不会丢失验证连接。当此参数设置为 0 时,将不进行任何验证。

默认值:120 秒。

loadBalanceBlacklistTimeout

当连接失败时,此主机将被列入此参数所定义的时长黑名单。当连接到主机时,驱动程序将尝试连接未列入黑名单的主机,只有在未找到主机的情况下,才尝试连接已列入黑名单的主机。

此黑名单在类加载器内部共享。

默认值:50 秒。

assureReadOnly

如果使用 Failover 和 Load-Balancing 模式并与主机建立只读连接时启用此参数,将会话设置为只读来确保此连接处于只读模式。

默认值: false

allowMasterDownConnection

使用 Failover 和 Load-Balancing 的 replication 模式时,允许在主服务器关闭时创建连接。如果没有可用的主服务器,则默认连接从服务器,而 Connection.isReadOnly() 将返回 true

默认值:false