閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要:購買Redis實例時,實例類型有單機、主備、Proxy集群、Cluster集群和讀寫分離這麼多種,該怎麼選?別擔心,本 ...
閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。
摘要:購買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等規格請戳這裡。