Redis集群模式之Redis Cluster(3)

? ? ? ? 上篇文章我們講解了Redis Cluster的狀態監測與恢復過程,這篇文章我們來進行Redis Cluster內容的收尾,將其擴容和縮容的過程進行講解,并分析RedisCluster的優缺點。

擴容和縮容

? ? ? ? 當集群中出現容量限制或者其他一些原因需要擴容時,Reids Cluster提供了比較優雅的集群擴容方案:

? ? ? ? (1)首先將新節點加入到集群中,可以通過在集群中熱河一個客戶端執行Cluster meet新節點ip:端口,或者通過redis-trib add node添加,新添加的節點默認在集群中都是主節點。

? ? ? ? (2)數據的遷移。遷移數據的大致流程是,首先需要確定哪些槽需要被遷移到目標節點,然后獲取槽中key,將槽中的key全部遷移到目標節點,然后向集群所有主節點廣播槽(數據)全部遷移到了目標節點。

? ? ? ? 縮容的大致過程與擴容一致,需要判斷下線的節點是否是主節點,以及主節點上是否有槽。若主節點上有槽,需要將槽遷移到集群中的其他主節點,槽遷移完成之后,需要向其他節點廣播該節點準備下線。最后需要將該下線主節點的從節點指向其他主節點(最好是先將從節點下線)。

為什么Redis Cluster的Hash Slot是16384?

? ? ? ? 在Redis節點發送心跳包時需要把所有的槽放到這個心跳包里,以便讓節點知道當前集群信息,16384 = 16K,在發送心跳包時使用char進行bitmap壓縮后是2K,也就是說用2K的空間創建了16K的槽數。

? ? ? ? 雖然說用CRC16算法最多可以分配65535個槽位,65535 = 65K,壓縮后就是8K,也就是說需要8K的心跳包,作者認為這樣不太值的;并且一般情況下一個Redis集群不會有超過1000個Master節點,所以16K的槽位是比較合適的選擇。

為什么Redis Cluster中不建議使用發布訂閱呢?

? ? ? ? 在集群模式下,所有的publish命令都會向所有節點(包括從節點)進行廣播,造成每條publish數據都會在集群內所有節點傳播一次,加重了帶寬負擔,對于在有大量節點的集群中頻繁使用pub,會嚴重消耗帶寬,不建議使用。(雖然官網上說有時候可以使用布隆過濾器或其他算法進行優化)。

Redis Cluster的優缺點總結:

? ? ? ? 優點:

? ? ? ? (1)無中心架構。

? ? ? ? (2)數據按照Slot存儲分布在多個節點,節點間數據共享,可動態調整數據分布。

? ? ? ? (3)可擴展性。可以線性擴展到1000多個節點,節點可動態添加或刪除。

? ? ? ? (4)高可用性。部分節點不可用時,集群仍然可用。通過增加Slave做standby數據副本,能夠實現故障自動failover,節點之間通過gossip協議交換狀態信息,用投票機制完成Slave到Master的角色提升。

? ? ? ? (5)降低運維成本,提高系統的擴展性和可用性。

? ? ? ? 缺點:

? ? ? ? (1)Client實現復雜,驅動要求實現Smart Client,緩存Slots mapping信息并及時更新,提高了開發難度,客戶端的不成熟影響業務的穩定性。目前僅有JedisCluster相對成熟,異常處理部分還不完善,比如常見的“max redirect exception”。

? ? ? ? (2)節點會因為某些原因發生阻塞(阻塞時間大于cluster-node-timeout),被判斷下線,這種failover是沒有必要的。

? ? ? ? (3)數據通過異步復制,不保證數據的強一致性。

? ? ? ? (4)多個業務使用同一套集群時,無法根據統計區分冷熱數據,資源隔離性較差,容易出現相互影響的情況。

? ? ? ? (5)Slave在集群中充當“冷備”,不能緩解讀壓力,當然可以通過SDK的合理設計來提高Slave 的資源利用率。

? ? ? ? (6)避免產生hot-key,導致主庫節點成為系統的短板。

? ? ? ? (7)避免產生big-key,導致網卡撐爆、慢查詢等。

? ? ? ? 這篇文章我們對Redis Cluster的講解進行了收尾和總結。大家有什么問題或勘誤可以在評論區留言,筆者看到都會回復的。
????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909368.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909368.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Cursor ReAct Agent技術架構

一、架構核心思想 “零熵操作交給AI”理念 Cursor通過ReAct模式實現編程中重復性工作的自動化: 零熵操作:機械性任務(代碼補全/格式化/重構/語法修復/導入管理) Tab-away機制:一鍵接受AI建議,保持思維連續…

國學IP行業實戰洞察:聚焦創客匠人,解鎖創始人IP與知識變現新路徑

國學行業正經歷“文化價值”與“商業變現”的深度融合,2023年市場規模突破千億大關,年增速超 10%。在“IP化數字化”浪潮中,創客匠人作為垂直領域技術服務商,以全鏈路工具矩陣為支點,撬動國學創始人IP從內容生產到商業…

R語言開發入門完整指南

R語言開發入門完整指南 目錄 R語言簡介環境配置包管理基本語法數據類型和結構數據操作統計分析數據可視化編程結構實用技巧學習資源 R語言簡介 R是一種專為統計計算和圖形設計的編程語言,廣泛應用于數據分析、統計建模、機器學習和數據可視化。R語言具有以下特點…

ObservedV2裝飾器和Trace裝飾器

為了對嵌套類對象屬性變化直接觀測,華為提供了ObservedV2和Trace裝飾器。這兩個裝飾器必須搭配使用,單獨使用任何一個都不會起任何作用;在繼承類中也可監測;ObservedV2的類實例目前不支持使用JSON.stringify進行序列化&#xff0c…

6月計算機新書:深度學習、大模型、DeepSeek

六月,這個充滿活力與希望的季節,三本重磅新書《深度學習:基礎與概念》、《MCP極簡開發:輕松打造高效智能體》與《大模型應用開發:RAG實戰課》翩然而至,為我們開啟了一場探索科技前沿的奇妙之旅。一起來看詳…

扁平風格職場商務通用PPT模版分享

扁平風格PPT模版,創意卡通扁平化通用PPT模版,創意扁平化勵志論文答辯PPT模版,卡通職場商務PPT模版,職場培訓,項目策劃,工作總結類PPT模版,互聯網電子商務PPT模版 扁平風格職場商務通用PPT模版分…

jupyter內核崩潰

最近在做用k-mer評估基因組規模的任務,其中一個局部程序,想偷懶,直接在jupyter中跑了下結果,想看看這一小步處理如何,結果沒想到內核崩潰了! 這一步我的草稿代碼如下: import pandas as pd imp…

Java企業技術趨勢分析:AI應用的落地實踐與未來展望

Java企業技術趨勢分析:AI應用的落地實踐與未來展望 開篇:技術趨勢與市場需求 在當前快速發展的數字化時代,人工智能(AI)已經成為推動企業創新和效率提升的關鍵力量。Java作為企業級應用開發的主流語言,正…

每日Prompt:Steve Winter風格插畫

提示詞 世界攝影大師杰作,極簡主義,Steve Winter風格,6只不同顏色的布偶貓圍成一圈,看向鏡頭中心,仰天視角,天空背景,高品質細節,超精細CG,高分辨率,最佳品質…

Vue3 + Element Plus 獲取表格列信息

在 Vue 3 和 Element Plus 中,可以通過以下步驟獲取表格的列信息: 實現步驟: 使用 ref 綁定表格實例 通過表格實例的 store.states.columns 獲取列數據 處理列信息(過濾隱藏列、處理嵌套表頭等) 示例代碼&#xf…

logger2js - JavaScript日志與調試工具庫

logger2js - JavaScript日志與調試工具庫 logger2js是一個功能強大的前端JavaScript日志與調試工具庫,提供了豐富的日志輸出、性能測試和代碼調試功能。該庫支持配置化引入,包含5種皮膚風格和豐富的API接口,如 a l e r t 增強方法、 alert增…

Stone 3D使用RemoteMesh組件極大的縮小工程文件尺寸

Stone 3D的工程文件tsp默認包含了場景中所有的對象和數據,這樣的好處是tsp可以單獨離線保存,但壞處是tsp文件通常偏大。 解決這個問題的方法是把外部glb模型文件通過RemoteMesh組件來加載。 首先創建一個空實體,然后給該空實體添加RemoteMe…

【深入剖析】攻克 Java 并發的基石:Java 內存模型 (JMM) 原理與實踐指南

0.引言 理解 JMM (Java Memory Model - JMM) 是掌握 Java 并發編程的關鍵,它定義了多線程環境下,線程如何與主內存以及彼此之間交互內存數據。 核心目標: JMM 旨在解決多線程編程中的三個核心問題: 原子性 (Atomicity)&#xf…

【Three.js】初識 Three.js

Threejs介紹 我們開發 webgl 主要是使用 threejs 這個庫,因為 webGL太難用,太復雜!但是現代瀏覽器都支持WebGL,這樣我們就不必使用Flash、Java等插件就能在瀏覽器中創建三維圖形。 threejs 它提供-一個很簡單的關于WebGL特性的J…

【經驗總結】ECU休眠后連續發送NM報文3S后ECU網絡才被喚醒問題分析

目錄 前言 正文 1.問題描述 2.問題分析 3.驗證猜想 4.總結 前言 ECU的上下電/休眠喚醒在ECU開發設計過程中最容易出問題且都為嚴重問題,最近在項目開發過程中遇到ECU休眠狀態下連續發送NM報文3S后才能喚醒CAN網絡的問題,解決問題比較順利,但分析過程中涉及到的網絡休…

企業架構框架深入解析:TOGAF、Zachman Framework、FEAF與Gartner EA Framework

執行摘要 企業架構(EA)是一項至關重要的實踐,它使組織能夠協調其業務戰略、運營流程和技術基礎設施,以實現整體戰略目標。企業架構框架作為結構化的方法論和綜合性工具,旨在管理企業級系統的固有復雜性,提…

數字化動態ID隨機水印和ID跑馬燈實現教育視頻防錄屏

摘要:數字化動態ID隨機水印和ID跑馬燈技術可以有效保護數字教育資源。動態水印將用戶信息隨機顯示在視頻上且不可去除,能追蹤錄屏者并震懾盜版行為。ID跑馬燈則自定義顯示觀看者信息,便于追蹤盜版源頭并提供法律證據。這些技術大幅增加盜版成…

< 自用文兒 騰訊云 VPS > Ubuntu 24 系統,基本設置

前言: 3 月份買的騰訊云的這臺 VPS,剛發現現在退款,只能返回 0 元。測試應用已經遷移到JD,清除內容太麻煩,重裝更簡單。 因為配合政策,國內的云主機都有兩個 IP 地址,一個內網,一個…

React ajax中的跨域以及代理服務器

Axios的誕生 為什么會誕生Axios?說到Axios我們就不得不說下Ajax。最初的舊瀏覽器頁面在向服務器請求數據時,由于返回的是整個頁面的數據,所以整個頁面都會強制刷新一下,這對于用戶來講并不是很友好。因為當我們只需要請求部分數據…

HOT 100 | 73.矩陣置零、54.螺旋矩陣、48.旋轉圖像

一、73. 矩陣置零 73. 矩陣置零 - 力扣(LeetCode) 1. 解題思路 1. 使用兩個數組分別標記每行每列是否有0,初始化全為False,遇到0就變成True。 2. 遍歷矩陣,遇到0就將False改成True。 3. 再次遍歷矩陣,更…