雲小課|雲小課教您如何選擇Redis例項型別
閱識風雲是華為雲資訊大咖,擅長將複雜資訊多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視訊(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。
摘要:購買Redis例項時,例項型別有單機、主備、Proxy叢集、Cluster叢集和讀寫分離這麼多種,該怎麼選?別擔心,本篇雲小課把每個Redis例項型別的特點優勢給您一一道來。
本文分享自華為雲社群《【雲小課】應用平臺第40課 雲小課教您如何選擇Redis例項型別》,作者: 閱識風雲。
購買Redis例項時,例項型別有單機、主備、Proxy叢集、Cluster叢集和讀寫分離這麼多種,該怎麼選?別擔心,小課把每個例項型別的特點優勢給您一一道來。
Redis單機例項
單機例項只有1個節點,1個Redis程序,當Redis程序故障後,DCS為例項重新拉起一個新的Redis程序,秒級恢復業務。
單機例項支援讀寫高併發,但不做持久化,例項重啟時不儲存原有資料。
單機例項拓撲圖:
單機例項具有以下特點:
- 系統資源消耗低,支援高QPS
單機例項不涉及資料同步、資料持久化所需消耗的系統開銷,因此能夠支撐更高的併發。Redis單機例項QPS達到10萬以上。
單機例項支援多資料庫(多DB,256個DB),用於資料隔離。 - 程序監控,故障後自動恢復
DCS部署了業務高可用探測,單機例項故障後,30秒內會重啟一個新的程序,恢復業務。 - 即開即用,資料不做持久化
單機例項開啟後不涉及資料載入,即開即用。如果服務QPS較高,可以考慮進行資料預熱,避免給後端資料庫產生較大的併發衝擊。 - 低成本,適用於開發測試
單機例項各種規格的成本相對主備減少40%以上。適用於開發、測試環境搭建。
Redis主備例項
Redis的主備例項在單機例項基礎上,增強了服務高可用以及資料高可靠性。
主備例項分片數為1,包含一個主節點,一個或多個備節點。DCS實時探測例項可用性,使用哨兵模式(Sentinel)進行管理,監控主備節點是否正常執行,當主節點出現故障時,會進行主備倒換,恢復業務。
主備例項拓撲圖:
主備例項具有以下特點:
- 持久化,確保資料高可靠
主備例項預設為雙副本(一主一備),支援設定為多副本(一主多備),支援多DB,預設開啟資料持久化功能,可保持節點間資料同步。 - 資料同步
主備節點通過增量資料同步的方式保持快取資料一致。
當網路發生異常或有節點故障時,主備例項會在故障恢復後進行一次全量同步,保持資料一致性。 - 故障後自動切換主節點,服務高可用
當主節點故障後,連線會有秒級中斷、不可用,備節點在30秒內自動完成主備切換,切換完成後恢復正常訪問,無需使用者操作,保證業務平穩執行。 - 多種容災策略
DCS支援將主備例項部署在不同的AZ(可用區)內,節點間電力與網路均物理隔離。您可以將應用程式也進行跨AZ部署,從而達到資料與應用全部高可用。 - 讀寫分離
Redis 4.0、Redis 5.0和Redis 6.0基礎版主備例項,分別提供了可讀寫的連線地址(主節點)和只讀地址(備節點),在客戶端連線時,通過增加使用者讀寫請求判斷,將寫請求傳送給讀寫域名,讀請求傳送給只讀域名,可實現客戶端讀寫分離。
Redis Cluster叢集例項
Cluster叢集通過分片化分割槽來增加快取的容量和併發連線數,每個Shard分片預設是一個雙副本的Redis主備例項,分片本身對外不可見。分片中主節點故障後,同一分片中備節點會升級為主節點來繼續提供服務。
Cluster叢集例項拓撲圖:
Cluster叢集例項特點:
- 支援選擇不同例項規格(對應不同的Shard分片數),在建立例項時,支援自定義分片大小,暫時不支援自定義分片數,預設每個分片為雙副本架構,副本數可自定義。
- Cluster叢集例項,通過使用cluster nodes查詢所有主備節點,客戶端連線備節點,並在節點上做配置,開啟備節點只讀訪問,可實現客戶端讀寫分離,提升快取的整體讀寫能力。配置方法請參考Redis例項是否支援讀寫分離。
- Cluster叢集例項預設DB數為1,不支援開啟多DB。
Redis Proxy叢集例項
Proxy叢集在Cluster叢集的基礎上,增加掛載Proxy節點和Elastic Load Balance (ELB)節點,通過ELB節點實現負載均衡,將不同請求分發到Proxy節點(Redis叢集代理伺服器),實現Redis叢集內部的高可用,以及承接客戶端的高併發請求。
Proxy叢集例項拓撲圖:
Proxy叢集例項特點:
- 支援選擇不同例項規格(對應不同的Proxy節點數和Shard分片數),在建立例項時,支援自定義分片大小,暫時不支援自定義分片數和副本數,預設每個分片為雙副本架構。
- Proxy叢集例項預設預設只有一個DB,支援開啟多DB,開啟多DB前需要了解Proxy叢集使用多DB限制。
- Proxy叢集例項不支援讀寫分離。
Redis讀寫分離例項
讀寫分離例項,後端是一個主備例項,預設包含主備兩個節點(雙副本),支援設定為多副本,即多個備節點。
讀寫分離例項,在主備例項的基礎上,通過ELB節點實現負載均衡,將不同請求分發到Proxy節點,Proxy節點識別使用者讀寫請求,如果是寫請求,轉發給主節點;如果是讀請求,則轉發給備節點,從服務端側實現讀寫分離。
讀寫分離例項拓撲圖:
讀寫分離例項特點:
讀寫分離例項除具有主備例項資料持久化,主備節點資料同步等基本特點以外,還支援服務端讀寫分離,不需要使用者在客戶端做任何配置。
例項型別對比與總結
小課還貼心的為您將每種例項型別做了以下對比分析,方便您根據自己業務的特點和需求做出選擇。
例項型別對比:
例項型別總結:
- 單機例項不支援資料持久化,主要服務於資料不需要由快取例項做持久化的業務場景。
- 在綜合性能上,多分片強於單分片,多副本強於單副本。
- 在負載均衡方面,Proxy叢集和讀寫分離例項支援負載均衡,例項具有高可用性的同時,只需使用1個IP,無需多個IP分別訪問每個節點。
- Redis單機、主備和讀寫分離例項預設支援多DB(256個DB),多DB主要用於資料隔離。
- 讀寫分離主要適用於讀高併發、寫請求較少的業務場景,解決高併發的效能問題,節約運維成本。
- 讀寫分離例項為服務端讀寫分離,無需使用者做任何程式碼配置,相較與客戶端讀寫分離,使用更方便。
如果您還需要了解例項的記憶體和QPS等規格請戳這裡。