婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Redis Cluster集群數(shù)據(jù)分片機制原理

Redis Cluster集群數(shù)據(jù)分片機制原理

熱門標簽:廊坊外呼系統(tǒng)在哪買 地圖標注工廠入駐 高碑店市地圖標注app 一個地圖標注多少錢 400電話辦理的口碑 b2b外呼系統(tǒng) 四川穩(wěn)定外呼系統(tǒng)軟件 臺灣電銷 南京手機外呼系統(tǒng)廠家

Redis Cluster數(shù)據(jù)分片機制

Redis 集群簡介

Redis Cluster 是 Redis 的分布式解決方案,在 3.0 版本正式推出,有效地解決了 Redis 分布式方面的需求。

Redis Cluster 一般由多個節(jié)點組成,節(jié)點數(shù)量至少為 6 個才能保證組成完整高可用的集群,其中三個為主節(jié)點,三個為從節(jié)點。三個主節(jié)點會分配槽,處理客戶端的命令請求,而從節(jié)點可用在主節(jié)點故障后,頂替主節(jié)點。

如上圖所示,該集群中包含 6 個 Redis 節(jié)點,3主3從,分別為M1,M2,M3,S1,S2,S3。除了主從 Redis 節(jié)點之間進行數(shù)據(jù)復(fù)制外,所有 Redis 節(jié)點之間采用 Gossip 協(xié)議進行通信,交換維護節(jié)點元數(shù)據(jù)信息。

一般來說,主 Redis 節(jié)點會處理 Clients 的讀寫操作,而從節(jié)點只處理讀操作。

數(shù)據(jù)分片策略

分布式數(shù)據(jù)存儲方案中最為重要的一點就是數(shù)據(jù)分片,也就是所謂的 Sharding。

為了使得集群能夠水平擴展,首要解決的問題就是如何將整個數(shù)據(jù)集按照一定的規(guī)則分配到多個節(jié)點上,常用的數(shù)據(jù)分片的方法有:范圍分片,哈希分片,一致性哈希算法和虛擬哈希槽等。

范圍分片假設(shè)數(shù)據(jù)集是有序,將順序相臨近的數(shù)據(jù)放在一起,可以很好的支持遍歷操作。范圍分片的缺點是面對順序?qū)憰r,會存在熱點。比如日志類型的寫入,一般日志的順序都是和時間相關(guān)的,時間是單調(diào)遞增的,因此寫入的熱點永遠在最后一個分片。

對于關(guān)系型的數(shù)據(jù)庫,因為經(jīng)常性的需要表掃描或者索引掃描,基本上都會使用范圍的分片策略。

Redis Cluster 采用虛擬哈希槽分區(qū),所有的鍵根據(jù)哈希函數(shù)映射到 0 ~ 16383 整數(shù)槽內(nèi),計算公式:slot = CRC16(key) 16383。每一個節(jié)點負責維護一部分槽以及槽所映射的鍵值數(shù)據(jù)。

Redis 虛擬槽分區(qū)的特點:

解耦數(shù)據(jù)和節(jié)點之間的關(guān)系,簡化了節(jié)點擴容和收縮難度。節(jié)點自身維護槽的映射關(guān)系,不需要客戶端或者代理服務(wù)維護槽分區(qū)元數(shù)據(jù)支持節(jié)點、槽和鍵之間的映射查詢,用于數(shù)據(jù)路由,在線集群伸縮等場景。

Redis 集群提供了靈活的節(jié)點擴容和收縮方案。在不影響集群對外服務(wù)的情況下,可以為集群添加節(jié)點進行擴容也可以下線部分節(jié)點進行縮容。可以說,槽是 Redis 集群管理數(shù)據(jù)的基本單位,集群伸縮就是槽和數(shù)據(jù)在節(jié)點之間的移動。

下面我們就先來看一下 Redis 集群伸縮的原理。然后再了解當 Redis 節(jié)點數(shù)據(jù)遷移過程中或者故障恢復(fù)時如何保證集群可用。

擴容集群

為了讓讀者更好的理解上線節(jié)點時的擴容操作,我們通過 Redis Cluster 的命令來模擬整個過程。

當一個 Redis 新節(jié)點運行并加入現(xiàn)有集群后,我們需要為其遷移槽和數(shù)據(jù)。首先要為新節(jié)點指定槽的遷移計劃,確保遷移后每個節(jié)點負責相似數(shù)量的槽,從而保證這些節(jié)點的數(shù)據(jù)均勻。

1) 首先啟動一個 Redis 節(jié)點,記為 M4。

2) 使用 cluster meet 命令,讓新 Redis 節(jié)點加入到集群中。新節(jié)點剛開始都是主節(jié)點狀態(tài),由于沒有負責的>槽,所以不能接受任何讀寫操作,后續(xù)我們就給他遷移槽和填充數(shù)據(jù)。

3) 對 M4 節(jié)點發(fā)送 cluster setslot { slot } importing { sourceNodeId } 命令,讓目標節(jié)點準備導(dǎo)入槽的數(shù)據(jù)。

4) 對源節(jié)點,也就是 M1,M2,M3 節(jié)點發(fā)送 cluster setslot { slot } migrating { targetNodeId } 命令,讓源節(jié)>點準備遷出槽的數(shù)據(jù)。

5) 源節(jié)點執(zhí)行 cluster getkeysinslot { slot } { count } 命令,獲取 count 個屬于槽 { slot } 的鍵,然后執(zhí)行步驟>六的操作進行遷移鍵值數(shù)據(jù)。

6) 在源節(jié)點上執(zhí)行 migrate { targetNodeIp} " " 0 { timeout } keys { key... } 命令,把獲取的鍵通過 pipeline 機制>批量遷移到目標節(jié)點,批量遷移版本的 migrate 命令在 Redis 3.0.6 以上版本提供。

7) 重復(fù)執(zhí)行步驟 5 和步驟 6 直到槽下所有的鍵值數(shù)據(jù)遷移到目標節(jié)點。

8) 向集群內(nèi)所有主節(jié)點發(fā)送 cluster setslot { slot } node { targetNodeId } 命令,通知槽分配給目標節(jié)點。為了>保證槽節(jié)點映射變更及時傳播,需要遍歷發(fā)送給所有主節(jié)點更新被遷移的槽執(zhí)行新節(jié)點。

收縮集群

收縮節(jié)點就是將 Redis 節(jié)點下線,整個流程需要如下操作流程。

1) 首先需要確認下線節(jié)點是否有負責的槽,如果是,需要把槽遷移到其他節(jié)點,保證節(jié)點下線后整個集群槽節(jié)點映射的完整性。

2) 當下線節(jié)點不再負責槽或者本身是從節(jié)點時,就可以通知集群內(nèi)其他節(jié)點忘記下線節(jié)點,當所有的節(jié)點忘記改節(jié)點后可以正常關(guān)閉。

下線節(jié)點需要將節(jié)點自己負責的槽遷移到其他節(jié)點,原理與之前節(jié)點擴容的遷移槽過程一致。

遷移完槽后,還需要通知集群內(nèi)所有節(jié)點忘記下線的節(jié)點,也就是說讓其他節(jié)點不再與要下線的節(jié)點進行 Gossip 消息交換。

Redis 集群使用 cluster forget { downNodeId } 命令來講指定的節(jié)點加入到禁用列表中,在禁用列表內(nèi)的節(jié)點不再發(fā)送 Gossip 消息。

客戶端路由

在集群模式下,Redis 節(jié)點接收任何鍵相關(guān)命令時首先計算鍵對應(yīng)的槽,在根據(jù)槽找出所對應(yīng)的節(jié)點,如果節(jié)點是自身,則處理鍵命令;否則回復(fù) MOVED 重定向錯誤,通知客戶端請求正確的節(jié)點。這個過程稱為 MOVED 重定向。

需要注意的是 Redis 計算槽時并非只簡單的計算鍵值內(nèi)容,當鍵值內(nèi)容包括大括號時,則只計算括號內(nèi)的內(nèi)容。比如說,key 為 user:{10000}:books時,計算哈希值只計算10000。

MOVED 錯誤示例顯示的信息如下,鍵 x 所屬的哈希槽 3999 ,以及負責處理這個槽的節(jié)點的 IP 和端口號 127.0.0.1:6381 。 客戶端需要根據(jù)這個 IP 和端口號, 向所屬的節(jié)點重新發(fā)送一次 GET 命令請求。

codeclass="hljs">/code>

由于請求重定向會增加 IO 開銷,這不是 Redis 集群高效的使用方式,而是要使用 Smart 集群客戶端。Smart 客戶端通過在內(nèi)部維護 slot 到 Redis 節(jié)點的映射關(guān)系,本地就可以實現(xiàn)鍵到節(jié)點的查找,從而保證 IO 效率的最大化,而 MOVED 重定向負責協(xié)助客戶端更新映射關(guān)系。

Redis 集群支持在線遷移槽( slot ) 和數(shù)據(jù)來完成水平伸縮,當 slot 對應(yīng)的數(shù)據(jù)從源節(jié)點到目標節(jié)點遷移過程中,客戶端需要做到智能遷移,保證鍵命令可正常執(zhí)行。例如當 slot 數(shù)據(jù)從源節(jié)點遷移到目標節(jié)點時,期間可能出現(xiàn)一部分數(shù)據(jù)在源節(jié)點,而另一部分在目標節(jié)點。

所以,綜合上述情況,客戶端命令執(zhí)行流程如下所示:

  • 客戶端根據(jù)本地 slot 緩存發(fā)送命令到源節(jié)點,如果存在鍵對應(yīng)則直接執(zhí)行并返回結(jié)果給客戶端。
  • 如果節(jié)點返回 MOVED 錯誤,更新本地的 slot 到 Redis 節(jié)點的映射關(guān)系,然后重新發(fā)起請求。
  • 如果數(shù)據(jù)正在遷移中,節(jié)點會回復(fù) ASK 重定向異常。格式如下: ( error ) ASK { slot } { targetIP } : { targetPort }

客戶端從 ASK 重定向異常提取出目標節(jié)點信息,發(fā)送 asking 命令到目標節(jié)點打開客戶端連接標識,再執(zhí)行鍵命令。

ASK 和 MOVED 雖然都是對客戶端的重定向控制,但是有著本質(zhì)區(qū)別。ASK 重定向說明集群正在進行 slot 數(shù)據(jù)遷移,客戶端無法知道什么時候遷移完成,因此只能是臨時性的重定向,客戶端不會更新 slot 到 Redis 節(jié)點的映射緩存。但是 MOVED 重定向說明鍵對應(yīng)的槽已經(jīng)明確指定到新的節(jié)點,因此需要更新 slot 到 Redis 節(jié)點的映射緩存。

故障轉(zhuǎn)移

當 Redis 集群內(nèi)少量節(jié)點出現(xiàn)故障時通過自動故障轉(zhuǎn)移保證集群可以正常對外提供服務(wù)。

當某一個 Redis 節(jié)點客觀下線時,Redis 集群會從其從節(jié)點中通過選主選出一個替代它,從而保證集群的高可用性。這塊內(nèi)容并不是本文的核心內(nèi)容,感興趣的同學可以自己學習。

但是,有一點要注意。默認情況下,當集群 16384 個槽任何一個沒有指派到節(jié)點時整個集群不可用。執(zhí)行任何鍵命令返回 CLUSTERDOWN Hash slot not served 命令。當持有槽的主節(jié)點下線時,從故障發(fā)現(xiàn)到自動完成轉(zhuǎn)移期間整個集群是不可用狀態(tài),對于大多數(shù)業(yè)務(wù)無法忍受這情況,因此建議將參數(shù) cluster-require-full-coverage 配置為 no ,當主節(jié)點故障時只影響它負責槽的相關(guān)命令執(zhí)行,不會影響其他主節(jié)點的可用性。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Redis Cluster集群主從切換的踩坑與填坑
  • 使用Ruby腳本部署Redis Cluster集群步驟講解
  • php成功操作redis cluster集群的實例教程
  • Redis cluster集群的介紹
  • Redis Cluster 集群搭建你會嗎

標簽:拉薩 伊春 河源 定州 畢節(jié) 泰州 南寧 甘南

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Redis Cluster集群數(shù)據(jù)分片機制原理》,本文關(guān)鍵詞  Redis,Cluster,集群,數(shù)據(jù),分片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Redis Cluster集群數(shù)據(jù)分片機制原理》相關(guān)的同類信息!
  • 本頁收集關(guān)于Redis Cluster集群數(shù)據(jù)分片機制原理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品在线看片z| 亚洲一区二三区| 精品亚洲成a人| 一区二区在线看| 国产91精品一区二区麻豆网站 | 在线亚洲+欧美+日本专区| 国产精品视频免费| 风流少妇一区二区| 国产日韩欧美在线一区| 国产成都精品91一区二区三| 国产午夜精品一区二区| 成人手机在线视频| 国产亚洲欧美日韩在线一区| 黄一区二区三区| 国产日韩视频一区二区三区| 久久99精品国产.久久久久久| 日韩午夜电影av| 日本中文字幕不卡| 精品国产免费视频| 粉嫩av一区二区三区| 中文字幕精品—区二区四季| 99久久久无码国产精品| 中文字幕一区二区三区四区不卡 | 欧美日韩激情一区二区三区| 免费观看91视频大全| 中文一区二区完整视频在线观看| 91高清视频在线| 美女国产一区二区| 亚洲色大成网站www久久九九| 在线电影欧美成精品| av午夜一区麻豆| 老司机一区二区| 一区二区三区四区在线播放| 青青草国产精品97视觉盛宴| 中文字幕av一区 二区| 欧美一区二区精品| 在线精品亚洲一区二区不卡| 国产露脸91国语对白| 亚洲成人福利片| 亚洲国产高清aⅴ视频| 久久久美女毛片| 亚洲男人都懂的| 国产成人免费视频网站高清观看视频| 欧美视频一区二区| 中文字幕日韩av资源站| 久久超碰97人人做人人爱| 欧洲av在线精品| 国产日产欧美一区二区视频| 欧美图区在线视频| 成人免费视频视频| 国产麻豆成人传媒免费观看| 日本视频中文字幕一区二区三区| 亚洲免费观看高清完整版在线观看熊| 久久久久久久久久久99999| 欧美一区三区二区| 6080日韩午夜伦伦午夜伦| 色婷婷精品大视频在线蜜桃视频| 激情国产一区二区| 免费视频最近日韩| 视频在线观看一区| 亚洲国产另类精品专区| 亚洲一区二区黄色| 亚洲黄色在线视频| 亚洲男女毛片无遮挡| 中文字幕在线观看一区| 中文子幕无线码一区tr| 国产suv一区二区三区88区| 一本久久综合亚洲鲁鲁五月天| 中文字幕成人av| 国产99精品视频| 国产亲近乱来精品视频| 国产经典欧美精品| 中文字幕av一区二区三区免费看| 成人小视频在线观看| 国产精品网站在线观看| 北条麻妃一区二区三区| 亚洲欧洲国产日本综合| 91视频一区二区三区| 亚洲香肠在线观看| 欧美精品国产精品| 美国十次综合导航| 国产农村妇女精品| 91在线小视频| 亚洲国产精品久久不卡毛片| 国产ts人妖一区二区| 九一九一国产精品| 成人一区二区三区在线观看| 99国内精品久久| 在线亚洲+欧美+日本专区| 欧美日韩国产小视频| 制服丝袜亚洲播放| 久久美女艺术照精彩视频福利播放| 久久久www成人免费无遮挡大片| 国产欧美日韩麻豆91| 亚洲免费观看在线观看| 天堂av在线一区| 国产麻豆精品在线| 中文字幕一区二区三| 亚洲图片一区二区| 男女男精品视频| av色综合久久天堂av综合| 欧美日韩国产高清一区二区三区 | 国产精品美女久久久久久久 | 欧美日本在线看| 精品国产凹凸成av人网站| 国产精品毛片a∨一区二区三区| 一区二区三区蜜桃网| 久久精品国产一区二区| 99精品视频在线观看免费| 欧美人动与zoxxxx乱| 久久久久久久精| 亚洲影视资源网| 国产精品1区2区3区在线观看| 色综合天天综合给合国产| 制服视频三区第一页精品| 国产午夜精品一区二区三区嫩草 | 肉肉av福利一精品导航| 国产精品一二二区| 欧美色视频一区| 国产精品毛片久久久久久久| 丝袜亚洲另类欧美综合| 93久久精品日日躁夜夜躁欧美| 91精品久久久久久久91蜜桃| 成人免费在线观看入口| 捆绑紧缚一区二区三区视频| 色八戒一区二区三区| 久久精品日产第一区二区三区高清版| 亚洲成a天堂v人片| 91免费视频大全| 久久久国产精华| 另类小说欧美激情| 欧美日韩视频在线第一区 | 欧美一区二区黄| 亚洲免费视频中文字幕| 国产精品白丝jk白祙喷水网站| 欧美亚洲国产bt| 亚洲色图欧美在线| www.亚洲人| 亚洲国产精品成人综合色在线婷婷| 午夜视频一区二区三区| 色综合视频在线观看| 国产精品电影一区二区| 国产麻豆视频一区二区| 精品日韩99亚洲| 久久爱www久久做| 91精品午夜视频| 五月婷婷激情综合网| 欧美中文字幕一区二区三区| 亚洲欧美综合在线精品| 成人app在线观看| 久久奇米777| 国产一区二区三区免费看| 欧美一级二级在线观看| 日本成人在线不卡视频| 欧美日韩视频在线一区二区| 午夜免费欧美电影| 欧美日韩在线不卡| 婷婷激情综合网| 欧美一级片免费看| 麻豆国产91在线播放| 免费人成黄页网站在线一区二区| 欧美日韩一区久久| 亚洲福利视频三区| 欧美日韩国产首页在线观看| 日韩综合小视频| 日韩欧美激情四射| 国产在线观看免费一区| 国产欧美1区2区3区| 91香蕉国产在线观看软件| 亚洲欧美日韩中文播放| 欧美无砖专区一中文字| 午夜精品久久久久久| 欧美成人猛片aaaaaaa| 国产一区二区伦理片| 国产精品大尺度| 欧美日韩在线播放三区四区| 青青草精品视频| 久久精品无码一区二区三区| 成人激情小说网站| 亚洲午夜久久久久| 91精品久久久久久蜜臀| 国产一区在线不卡| 亚洲视频小说图片| 777奇米四色成人影色区| 国产最新精品精品你懂的| 国产精品超碰97尤物18| 欧美人伦禁忌dvd放荡欲情| 精品一区二区三区在线观看国产| 久久久久久**毛片大全| 色综合色综合色综合色综合色综合 | 综合久久国产九一剧情麻豆| 在线观看国产日韩| 另类欧美日韩国产在线| 日韩毛片精品高清免费| 欧美日韩在线观看一区二区 | 成人午夜视频免费看| 亚洲成人1区2区| 精品久久久久久久人人人人传媒| 成人自拍视频在线观看| 石原莉奈在线亚洲二区|