最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis?集群模式(Cluster)原理詳解

 更新時間:2023年07月28日 08:52:58   作者:david6969xin  
redis?cluster集群是一個由多個主從節(jié)點集群組成的分布式服務集群,它具有復制、高可用和分片特性,cluster集群不需要sentinel?哨兵也能完成節(jié)點移除和故障轉(zhuǎn)移的功能,本文就詳細的給大家介紹一下Redis?集群模式原理,感興趣的朋友跟著小編一起來看看吧

1、簡述

Redis Cluster 集群中每個節(jié)點負責整個集群的一部分數(shù)據(jù),每個節(jié)點上的數(shù)據(jù)多少可能不一樣,節(jié)點之間通過一種特殊的二進制協(xié)議交互集群信息。

Redis Cluster將所有數(shù)據(jù)劃分為16384個槽位,每個節(jié)點負責其中一部分槽位,槽位信息存儲于每個節(jié)點中,當redis客戶端來連接集群時,也會得到一份集群的槽位配置信息,這樣當客戶端要查找某個key時,可以直接定位到目標節(jié)點。

客戶端為了可以直接找到具體key所在的節(jié)點,需要緩存槽位相關(guān)信息,這樣就可快速定位到相對應的節(jié)點,同時可能存在客戶端與服務器存儲槽位信息不一致的情況,故需要糾正機制來實現(xiàn)槽位信息的校驗調(diào)整。

2、槽位定位算法

Redis Cluster默認會對key值使用crc16算法進行hash得到一個整數(shù)值,然后用該整數(shù)值對16384進行取模來得到具體槽位。Redis Cluster還允許用戶強制把某個key掛在特定槽位上,通過key字符串里面嵌入tag標記以此來強制key所掛的槽位等于tag所在的槽位。

3、跳轉(zhuǎn)機制

當客戶端向一個錯誤節(jié)點發(fā)送指令后,該節(jié)點會發(fā)現(xiàn)指令的key所在槽位并不歸自己管,此時它會向客戶端發(fā)送一個特殊的跳轉(zhuǎn)指令攜帶目標操作的節(jié)點地址,告訴客戶端去連接該節(jié)點以獲取數(shù)據(jù)??蛻舳嗽谑盏組OVED指令后,要立即糾正本地槽位映射表,后續(xù)所有key將使用新的槽位映射表

4、key 遷移(redis-trib為例)

Redis遷移的單位是槽,即一個槽一個槽的遷移,當一個槽正在遷移時,這個槽就處于中間過渡狀態(tài)。如圖,這個槽在源節(jié)點的狀態(tài)為migrating,在目標節(jié)點的狀態(tài)為importing,表示數(shù)據(jù)正在從源節(jié)點流向目標節(jié)點。

redis-trib會在源節(jié)點和目標節(jié)點設置好中間狀態(tài),然后一次性獲取元節(jié)點槽位的多有key列表(keysinslot指令,也可部分獲取),然后挨個key進行遷移。每個key的遷移過程以源節(jié)點作為目標節(jié)點的“客戶端”,源節(jié)點對當前key執(zhí)行dump指令得到序列化內(nèi)容,然后通過“客戶端”向目標節(jié)點發(fā)送restore指令攜帶序列化的內(nèi)容作為參數(shù),目標節(jié)點在進行反序列化將內(nèi)容恢復到目標節(jié)點內(nèi)存中,然后返回“客戶端”ok,源節(jié)點“客戶端”收到后再把當前節(jié)點的key刪掉就完成了單個key遷移的全過程。

遷移過程是同步的,在目標節(jié)點執(zhí)行restore指令到源節(jié)點刪除key之間,源節(jié)點的主線程會處于阻塞狀態(tài),直到key被成功刪除。

遷移過程中,如果每個key的內(nèi)容都很小,那么migrate過程會很快,幾乎不會影響客戶端的正常訪問,如果key的內(nèi)容很大,因為migrate過程是阻塞的,所以會導致源節(jié)點和目標節(jié)點 卡頓,影響集群穩(wěn)定性,所以要避免大key。

5、容錯

當主節(jié)點發(fā)生故障,集群會自動將從節(jié)點提升為主節(jié)點,如果主節(jié)點沒有從節(jié)點,則發(fā)生故障時,集群不可用。同時Redis也提供了一個參數(shù) cluster-require-full-coverage 可以允許部分節(jié)點發(fā)生故障,其余節(jié)點可正常提供服務。

6、網(wǎng)絡抖動

由于網(wǎng)絡抖動問題導致主從頻繁切換,Redis Cluster 提供 cluster-node-timeout 參數(shù),當某個節(jié)點持續(xù)時間timeout時間失聯(lián)時,才可以認定該節(jié)點出現(xiàn)故障,需要進行主從切換。同時參數(shù) cluster-slave-validity-factory 作為倍乘系數(shù)放大這個超時時間來寬容容錯的緊急程度,系數(shù)為零,主從切換不會抗拒網(wǎng)絡抖動,系數(shù)大于1則就成了主從切換的松弛系數(shù)。

7、可能下線(PFail)與確定下線(Fail)

因為Redis Cluster是去中心化的,一個節(jié)點認為某個節(jié)點失聯(lián)了并不代表所有節(jié)點都認為它失聯(lián)了,所以集群會通過以此協(xié)商過程,只有當大多數(shù)節(jié)點認為某個節(jié)點失聯(lián)了,那么該節(jié)點才需要進行主從切換來容錯。

Redis 集群節(jié)點采用Gossip協(xié)議來廣播自己的狀態(tài)以及來改變對整個集群的認知。當一個節(jié)點發(fā)現(xiàn)某個節(jié)點失聯(lián)后(Pfail),它會將該失聯(lián)信息廣播到整個集群,其他節(jié)點就會收到節(jié)點失聯(lián)信息,如果收到某個節(jié)點失聯(lián)的節(jié)點數(shù)量(PFail Count)已經(jīng)達到集群的大多數(shù),則可以標記該失聯(lián)節(jié)點為確定下線狀態(tài)(Fail),然后廣播到其它節(jié)點該節(jié)點確定下線的事實,并立即對該失聯(lián)節(jié)點進行主從切換。

8、槽位遷移感知

客戶端保存了槽位與節(jié)點的映射關(guān)系表,它需要及時得到更新,才可以正常地將某條指令發(fā)送到正確的節(jié)點中。Cluster中存在兩條特殊的error指令:

  • MOVED指令:用來糾正槽位,客戶端會刷新自己的槽位關(guān)系表。
  • ASKING指令:用來臨時糾正槽位,客戶端不會刷新自己的槽位關(guān)系表。

9、集群變更感知

當服務器節(jié)點變更時,客戶端如何得到通知并實時刷新自己的節(jié)點關(guān)系表?分為兩種情況:

  • 目標節(jié)點掛掉了,客戶端會拋出一個 ConnectionError,緊接著會隨機挑選一個節(jié)點來重試,這時被重試的節(jié)點會通過MOVED指令告知目標槽位被分配到新的節(jié)點地址。
  • 運維手動修改集群信息,將主節(jié)點切換為其他節(jié)點,并將主節(jié)點移除。這時打在舊節(jié)點上的指令會收到ClusterDown的錯誤,告知當前節(jié)點所在集群不可用(當前節(jié)點已被孤立,不在屬于之前集群),這時客戶端就會關(guān)閉所有連接,清空槽位映射關(guān)系表,然后向上報錯,待下一條指令過來時,就會重新嘗試初始化節(jié)點信息。

到此這篇關(guān)于Redis 集群模式(Cluster)原理詳解的文章就介紹到這了,更多相關(guān)Redis 集群模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis分片集群存儲的搭建到使用

    Redis分片集群存儲的搭建到使用

    這篇文章主要介紹了Redis分片集群存儲的搭建到使用,分片集群顧名思義,將數(shù)據(jù)分開存儲到Redis集群中,這樣能夠存儲更多的數(shù)據(jù),避免浪費資源,需要的朋友可以參考下
    2022-06-06
  • odoo中使用redis實現(xiàn)緩存的步驟

    odoo中使用redis實現(xiàn)緩存的步驟

    這篇文章主要介紹了odoo中使用redis實現(xiàn)緩存的步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Redis?搭建主從集群的操作指南

    Redis?搭建主從集群的操作指南

    單節(jié)點的?Redis?并發(fā)能力有限,要進一步提高?Redis?的并發(fā)能力,就需要搭建主從集群,實現(xiàn)讀寫分離,這篇文章主要給大家介紹了Redis搭建主從集群的操作指南,需要的朋友可以參考下
    2023-08-08
  • 一文詳解Redis為什么一定要設置密碼原理

    一文詳解Redis為什么一定要設置密碼原理

    這篇文章主要為大家介紹了Redis為什么一定要設置密碼原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 基于redis實現(xiàn)世界杯排行榜功能項目實戰(zhàn)

    基于redis實現(xiàn)世界杯排行榜功能項目實戰(zhàn)

    前段時間,做了一個世界杯競猜積分排行榜。對世界杯64場球賽勝負平進行猜測,猜對+1分,錯誤+0分,一人一場只能猜一次。下面通過本文給大家分享基于redis實現(xiàn)世界杯排行榜功能項目實戰(zhàn),感興趣的朋友一起看看吧
    2018-10-10
  • Redis 分片集群搭建與故障轉(zhuǎn)移實戰(zhàn)指南(推薦)

    Redis 分片集群搭建與故障轉(zhuǎn)移實戰(zhàn)指南(推薦)

    本文介紹了如何搭建一個最小的Redis分片集群,并詳細描述了集群的啟動、創(chuàng)建、測試、伸縮和故障轉(zhuǎn)移過程,同時,還介紹了如何使用RedisTemplate訪問分片集群,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Redis中事件驅(qū)動模型示例詳解

    Redis中事件驅(qū)動模型示例詳解

    Redis這個數(shù)據(jù)庫相信不用過多介紹了,大家應該都知道,下面這篇文章主要給大家介紹了關(guān)于Redis中事件驅(qū)動模型的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-03-03
  • Redis的雙寫問題解決

    Redis的雙寫問題解決

    本文主要介紹了Redis的雙寫問題解決,這種問題在使用 Redis 作為緩存層時尤為常見,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • Redis連接失?。嚎蛻舳薎P不在白名單中的問題分析與解決方案

    Redis連接失?。嚎蛻舳薎P不在白名單中的問題分析與解決方案

    在現(xiàn)代分布式系統(tǒng)中,Redis作為一種高性能的內(nèi)存數(shù)據(jù)庫,被廣泛應用于緩存、消息隊列、會話存儲等場景,然而,在實際使用過程中,我們可能會遇到各種連接問題,其中“客戶端IP不在白名單中”是一個常見的錯誤,本文將從錯誤分析、原因排查、解決方案等詳細探討如何解決這一問題
    2025-01-01
  • Redis高并發(fā)防止秒殺超賣實戰(zhàn)源碼解決方案

    Redis高并發(fā)防止秒殺超賣實戰(zhàn)源碼解決方案

    本文主要介紹了Redis高并發(fā)防止秒殺超賣實戰(zhàn)源碼解決方案,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論

临沂市| 濮阳县| 化德县| 阳江市| 宾川县| 新疆| 嘉善县| 荔浦县| 武平县| 广灵县| 当阳市| 开原市| 杂多县| 灵宝市| 温泉县| 屏东市| 纳雍县| 和政县| 吉安县| 临泽县| 含山县| 武宣县| 滨海县| 漳州市| 尖扎县| 峡江县| 府谷县| 合肥市| 信宜市| 青川县| 德庆县| 凤冈县| 巴南区| 商洛市| 安多县| 晋州市| 石柱| 交口县| 灵宝市| 霍山县| 白沙|