云數據庫HBase存儲海量大數據,在業務場景中往往承載著重要數據,為保障數據的高可用性和安全性,云數據庫HBase提供了主備雙活和主備容災特性。本文介紹云數據庫HBase的主備雙活和主備容災特性功能。

使用場景

  • 主備雙活:大數據量隨機讀響應有高要求(P999小于50ms)的實時在線業務,例如用戶推薦,安全風控等。
  • 主備容災:當云數據庫HBase實例因不可預料的原因(例如設備故障、機房斷電斷網等)發生故障,容災機制可用于保障數據的一致性和業務可用性。

功能優勢

  • 主備雙活:
    • 請求低毛刺。
    • 故障自動容錯。
    • 資源利用率高。
  • 主備容災:
    • 支持云數據庫HBase、EMR HBase、自建HBase混合主備。
    • 支持1.x、2.x多個版本。
    • 自動數據同步管理,高效雙向同步,延遲在百毫秒級。
    • 故障自動容錯。
    • 在主備控制臺可查看同步延遲、客戶端鏈接數、主備狀態等詳細信息。

主備雙活原理介紹

  • 低毛刺:兩個獨立節點同時產生毛刺概率比單節點產生毛刺概率低,采用雙節點服務相同數據在最終一致性條件中能夠提高數據的穩定性。當用戶請求發起時先向主庫發送請求,一段時間后如果主庫沒有返回結果,則向備庫發送請求,最終取最快返回的值作為結果。發送請求和響應的流程圖如下。低毛刺原理
    以下是直接訪問和使用主備雙活功能訪問的時間對比。時間對比
  • 故障自動容錯:主備雙活功能提供故障自動容錯能力,在故障場景下可以自動進行主備節點切換。通常需要進行主備集群切換的場景如下:
    • 機房出現斷網斷電等故障。無法正常連接主集群,請求全部報錯。
    • 由于軟件Bug導致全集群宕機。
    • 由于慢盤或者壞盤造成的集群訪問超時。

    故障自動容錯原理:

    自動容錯原理
    單機宕機和集群宕機測試結果如下。
    • 以下是單機宕機吞吐對比圖和單機宕機平均響應對比圖。單機宕機測試
    • 以下是集群宕機吞吐對比圖和集群宕機平均響應對比圖。集群宕機測試

主備容災原理介紹

當云數據庫HBase實例因不可預料的原因(例如設備故障、機房斷電斷網等)發生故障,容災機制可用于保障數據的一致性和業務可用性。云數據庫HBase提供兩種災備方案供您選擇,可滿足不同的業務場景。

災備方案 說明
單可用區高可用方案 主備節點部署在同一可用區中的不同機器上,當任一節點發生故障時,由高可用HA(High Availability)系統監控主備節點的健康狀態并自動執行故障切換,避免單點故障引起的服務中斷。
同城容災方案 主備節點支持云數據庫HBase間、云數據庫HBase和自建HBase、自建HBase和自建HBase。主備節點分別部署在同一地域下兩個不同的可用區,當任一可用區因電力、網絡等不可抗因素失去通信時,高可用HA系統將執行故障切換,確保整個節點的持續可用。您可以使用LTS數據通道服務完成主備節點之間實時增量數據雙向同步,同時在LTS上進行主備切換操作,您可以通過alihbase-connector插件訪問HBase節點,alihbase-connector監聽主備節點zk集群的切換事件完成節點切換操作。

架構說明

常見問題

  • Q:主備數據雙向同步中是否會循環發送?

    A:不會,雙向同步中會根據集群ID區分是數據同步寫入的數據還是客戶端寫入的數據,保證數據不會循環發送。

  • Q:目標實例出現異常無法寫入時,LTS是否會緩存數據?

    A:LTS不會緩存數據,數據同步中當目標實例無法寫入時,會記錄讀取WAL的點位,保證數據在目標實例恢復后繼續同步數據,數據存儲在源集群的Hlog中。

  • Q:數據D1寫入主實例,但數據D1尚未到達備實例時發生切換,此時備實例中寫入一條數據D2后數據D1才到達,備實例中存儲的是數據D1還是數據D2?

    A:存儲的是數據D1和數據D2中時間戳更大的數據,數據在LTS同步過程中不會改變數據原有的時間戳,一般情況下存儲的是數據D2,但是由于主備實例不同可能存在時間戳毫秒級的時間差異造成數據D2的時間戳比數據D1的時間戳小,在這種情況下存儲的是數據D1(云原生多模數據庫Lindorm實例多可用區版本支持強一致功能,保證存儲的是數據D2,如果需要了解詳情請提交工單)。