OceanBase Failover 和 Load-Balancing

2021-06-30 16:02 更新

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

sequential 模式

sequential 模式在多主機(jī)環(huán)境中支持連接 Failover。此模式不支持從屬服務(wù)器的 Load-Balancing 讀取。連接器將嘗試按照在連接 URL 中聲明的順序連接到主機(jī),因此第一個(gè)可用的主機(jī)將用于所有查詢。 例如,連接 URL 如下:

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

當(dāng)連接器嘗試連接時(shí),首先嘗試連接 host1。如果該主機(jī)不可用,則嘗試連接 host2。當(dāng)主機(jī)發(fā)生故障時(shí),連接器將嘗試以相同的順序重新連接到主機(jī)。

loadbalance 模式

loadbalance 模式在多主機(jī)環(huán)境中支持連接 Load-Balancing。此模式不支持從屬服務(wù)器的 Load-Balancing 讀取。連接器通過(guò)從每個(gè)連接 URL 中隨機(jī)選擇一個(gè)主機(jī)來(lái)對(duì)所有查詢執(zhí)行 Load-Balancing。由于連接隨機(jī)分布在所有主機(jī)上,因此查詢實(shí)現(xiàn) Load-Balancing。

replication 模式

replication 模式在主從環(huán)境支持連接 Load-Balancing。該模式支持具有一個(gè)或多個(gè)主機(jī)的環(huán)境。如果在執(zhí)行讀取之前將連接設(shè)置為只讀,則此模式支持從屬服務(wù)器的 Load-Balancing 讀取。連接器通過(guò)從連接 URL 中隨機(jī)選擇一個(gè)從服務(wù)器來(lái)執(zhí)行讀取查詢,從而執(zhí)行 Load-Balancing。

相關(guān)參數(shù)

相關(guān)參數(shù)如下表所示。

參數(shù)

描述

autoReconnect

如果啟用了此參數(shù),并且未使用 Failover 和 Load-Balancing 模式,則連接器在連接失敗后僅嘗試重新連接到主機(jī),這稱為 Basic Failover。

如果啟用了此參數(shù),并且正在使用 Failover 和 Load-Balancing 模式,則連接器會(huì)將出現(xiàn)故障的主機(jī)列入黑名單,并嘗試連接到其他相同類型的主機(jī)。這稱為 Standard Failover。

默認(rèn)值:false。

retriesAllDown

當(dāng)連接器正在執(zhí)行 Failover 并且所有主機(jī)都關(guān)閉時(shí),此參數(shù)用于定義連接器的最大連接嘗試次數(shù),以避免引發(fā)異常。

默認(rèn)值:120。

failoverLoopRetries

當(dāng)連接器靜默搜索有效主機(jī)時(shí),此參數(shù)用于定義連接器的最大連接嘗試次數(shù),以避免引發(fā)異常。此參數(shù)不同于 retriesAllDown 參數(shù),此靜默搜索用于連接器的臨時(shí)解決方案,例如在從屬連接失敗時(shí)使用主連接執(zhí)行讀取。

默認(rèn)值:120。

validConnectionTimeout

當(dāng)配置了多個(gè)主機(jī)時(shí),連接器在所設(shè)置的時(shí)長(zhǎng)(以秒為單位)之內(nèi),不會(huì)丟失驗(yàn)證連接。當(dāng)此參數(shù)設(shè)置為 0 時(shí),將不進(jìn)行任何驗(yàn)證。

默認(rèn)值:120 秒。

loadBalanceBlacklistTimeout

當(dāng)連接失敗時(shí),此主機(jī)將被列入此參數(shù)所定義的時(shí)長(zhǎng)黑名單。當(dāng)連接到主機(jī)時(shí),驅(qū)動(dòng)程序?qū)L試連接未列入黑名單的主機(jī),只有在未找到主機(jī)的情況下,才嘗試連接已列入黑名單的主機(jī)。

此黑名單在類加載器內(nèi)部共享。

默認(rèn)值:50 秒。

assureReadOnly

如果使用 Failover 和 Load-Balancing 模式并與主機(jī)建立只讀連接時(shí)啟用此參數(shù),將會(huì)話設(shè)置為只讀來(lái)確保此連接處于只讀模式。

默認(rèn)值: false。

allowMasterDownConnection

使用 Failover 和 Load-Balancing 的 replication 模式時(shí),允許在主服務(wù)器關(guān)閉時(shí)創(chuàng)建連接。如果沒(méi)有可用的主服務(wù)器,則默認(rèn)連接從服務(wù)器,而 Connection.isReadOnly() 將返回 true。

默認(rèn)值:false


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)