全部產品
Search
文件中心

Tair:讀寫分離架構

更新時間:Sep 07, 2024

針對讀多寫少的業務情境,雲原生記憶體資料庫Tair推出了讀寫分離架構,提供高可用、高效能、靈活的讀寫分離服務,滿足熱點資料集中及高並發讀取的業務需求。同時,讀寫分離架構執行個體由阿里雲Tair團隊自研的Proxy組件進行資料分發、故障切換等服務,為您降低了營運成本。

組件介紹

讀寫分離架構主要由主節點、唯讀節點、代理節點(Proxy)和高可用系統等組成,架構圖如下。

圖 1. 雲原生版讀寫分離架構雲端硬碟讀寫分離版

圖 2. 經典版讀寫分離架構(已停售)本地碟讀寫分離版

組件

雲原生版讀寫分離架構(推薦)

經典版讀寫分離架構

主節點(Master node)

承擔寫請求的處理,同時和唯讀節點共同承擔讀請求的處理。

唯讀節點(Read replicas)

承擔讀請求的處理,特點如下:

  • 所有隻讀節點均具備容災功能,可作為備節點進行資料備份。

  • 唯讀節點均從主節點同步資料,為星型複製架構,資料同步延遲遠小於經典版鏈式複製架構。

  • 支援自訂唯讀節點數量,範圍為1 ~ 9個。

承擔讀請求的處理,特點如下:

  • 唯讀節點採取鏈式複製架構,當唯讀節點數越多,靠近鏈路末端的唯讀節點資料延遲越大。

  • 提供1個、3個、5個唯讀節點配置。

備節點(Replica node)

無冷備節點,任一隻讀節點均可作為備節點。當主節點發生異常時,可以將請求切換至任一隻讀節點。

由於無需該組件,在同樣效能下,雲原生讀寫分離架構的價格更低。

冷備節點,作為資料備份使用,不對外提供服務。當主節點發生異常時,會將請求切換至該節點。

代理節點(Proxy server)

用戶端和代理節點建立串連後,代理節點會自動識別用戶端發起的請求類型,按照權重分發流量(各節點權重相同,且不支援自訂權重),將請求轉寄到不同的資料節點中。例如將寫請求轉寄給主節點,將讀請求轉寄給主節點和唯讀節點。

說明
  • 用戶端只會與代理節點建立串連,不支援和各節點直接建立串連。

  • 代理節點會將讀請求平均分配到主節點和唯讀節點,暫不支援自訂控制。例如3個唯讀節點的執行個體,主節點和3個唯讀讀權重均為25%。

高可用系統(HA system)

自動監控各節點的健康狀態,異常時發起主備切換或重搭唯讀節點,並更新相應的路由及權重資訊。

關於雙可用性區域讀寫分離架構執行個體的說明

雲原生讀寫分離架構(推薦)

經典讀寫分離架構

主、備可用性區域都提供服務,最少配置:

  • 主可用性區域:1個主節點、1個唯讀節點。

  • 備可用性區域:1個唯讀節點。

將分別提供主、備可用性區域的串連地址,均支援讀、寫操作。每個可用性區域的讀請求會路由到本可用性區域的主節點或唯讀節點中,實現就近訪問;而寫請求均會路由到主可用性區域的主節點中。架構圖如下:

說明

推薦主、備節點均配置2節點以上:

  • 主可用性區域:1個主節點、1個唯讀節點。

  • 備可用性區域:2個唯讀節點。

主節點與唯讀節點都部署在主可用性區域,僅將冷備節點部署在備可用性區域,作為資料備份,不對外提供服務。當主節點發生異常時,會將請求切換至該節點。

特點

  • 透明相容

    標準架構可以直接升級到讀寫分離架構,由於讀寫分離架構使用Proxy server進行轉寄,在升級後,您可以直接使用支援Redis的任何用戶端訪問讀寫分離架構執行個體,無需進行業務改造。讀寫分離架構完全相容Redis協議命令,但部分命令存在一些限制,更多資訊請參見讀寫分離架構命令限制

  • 高可用

    • 通過阿里雲自研的高可用系統自動監控所有資料節點的健康狀態,為整個執行個體的可用性保駕護航。主節點不可用時自動選擇新的主節點並重新搭建複寫拓撲。某個唯讀節點異常時,高可用系統能夠自動探知並重新啟動新節點完成資料同步,下線異常節點。

    • 代理節點會即時感知每個唯讀節點的服務狀態。在某個唯讀執行個體異常期間,代理節點會自動降低該節點的服務權重,發現唯讀節點連續失敗超過一定次數以後,會停止異常節點的服務權利,並具備繼續監控後續重新啟動節點服務的能力。

  • 高效能

    讀寫分離架構可以通過擴充唯讀執行個體個數使整體執行個體效能呈線性增長,同時基於源碼層面對Redis複製流程的定製最佳化,可以最大程度地提升線性複製的系統穩定性,充分利用每一個唯讀節點的實體資源。

使用情境

讀取請求QPS(Queries Per Second)壓力較大的情境。

Tair標準架構無法支撐較大的QPS,如果業務類型是讀多寫少類型,需要採用多個唯讀節點的部署方式來突破單節點的效能瓶頸,相比標準版最高可以將QPS提升近9倍。

說明

由於資料同步至唯讀節點存在一定延遲,選用此架構時,業務需要能接受一定程度的髒資料。如果對資料一致性要求較高,推薦選用叢集架構

建議與使用須知

  • 當一個唯讀節點發生故障時,請求會轉寄到其他節點;如果所有隻讀節點均不可用,請求會全部轉寄到主節點。唯讀節點異常可能導致主節點負載提高、回應時間變長,因此在讀負載高的業務情境建議使用多個唯讀節點。

  • 唯讀節點發生異常時,高可用系統會暫停異常節點的服務,重新掛載一個可用的唯讀節點。該過程涉及資源分派、執行個體建立資料同步以及服務載入,消耗的時間與業務負載及資料量有關。雲原生記憶體資料庫Tair不承諾唯讀節點的恢復指標。

  • 某些情境會觸發唯讀節點的全量同步,例如在主節點觸發高可用切換後。全量同步期間唯讀節點不提供服務並返回-LOADING Redis is loading the dataset in memory\r\n資訊。

  • 更多關於路由轉寄的規則,請參見Tair Proxy特性說明

購買方式

若您已建立雲原生標準架構執行個體,可開啟讀寫分離功能,更多資訊,請參見開啟讀寫分離功能