国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Redis集群架構(gòu)了解一下?一致性Hash了解嗎?

存儲 存儲軟件 Redis
在前幾年,redis 如果要搞幾個節(jié)點,每個節(jié)點存儲一部分的數(shù)據(jù),得借助一些中間件來實現(xiàn),比如說有 codis,或者 twemproxy,都有。

在前幾年,redis 如果要搞幾個節(jié)點,每個節(jié)點存儲一部分的數(shù)據(jù),得借助一些中間件來實現(xiàn),比如說有 codis,或者 twemproxy,都有。有一些 redis 中間件,你讀寫 redis 中間件,redis 中間件負責將你的數(shù)據(jù)分布式存儲在多臺機器上的 redis 實例中。

[[286936]]

這兩年,redis 不斷在發(fā)展,redis 也不斷有新的版本,現(xiàn)在的 redis 集群模式,可以做到在多臺機器上,部署多個 redis 實例,每個實例存儲一部分的數(shù)據(jù),同時每個 redis 主實例可以掛 redis 從實例,自動確保說,如果 redis 主實例掛了,會自動切換到 redis 從實例上來。

現(xiàn)在 redis 的新版本,大家都是用 redis cluster 的,也就是 redis 原生支持的 redis 集群模式,那么面試官肯定會就 redis cluster 對你來個幾連炮。要是你沒用過 redis cluster,正常,以前很多人用 codis 之類的客戶端來支持集群,但是起碼你得研究一下 redis cluster 吧。

如果你的數(shù)據(jù)量很少,主要是承載高并發(fā)高性能的場景,比如你的緩存一般就幾個 G,單機就足夠了,可以使用 replication,一個 master 多個 slaves,要幾個 slave 跟你要求的讀吞吐量有關(guān),然后自己搭建一個 sentinel 集群去保證 redis 主從架構(gòu)的高可用性。

redis cluster,主要是針對海量數(shù)據(jù)+高并發(fā)+高可用的場景。redis cluster 支撐 N 個 redis master node,每個 master node 都可以掛載多個 slave node。這樣整個 redis 就可以橫向擴容了。如果你要支撐更大數(shù)據(jù)量的緩存,那就橫向擴容更多的 master 節(jié)點,每個 master 節(jié)點就能存放更多的數(shù)據(jù)了。

redis cluster 介紹

  • 自動將數(shù)據(jù)進行分片,每個 master 上放一部分數(shù)據(jù)
  • 提供內(nèi)置的高可用支持,部分 master 不可用時,還是可以繼續(xù)工作的

在 redis cluster 架構(gòu)下,每個 redis 要放開兩個端口號,比如一個是 6379,另外一個就是 加1w 的端口號,比如 16379。

16379 端口號是用來進行節(jié)點間通信的,也就是 cluster bus 的東西,cluster bus 的通信,用來進行故障檢測、配置更新、故障轉(zhuǎn)移授權(quán)。cluster bus 用了另外一種二進制的協(xié)議,gossip 協(xié)議,用于節(jié)點間進行高效的數(shù)據(jù)交換,占用更少的網(wǎng)絡(luò)帶寬和處理時間。

節(jié)點間的內(nèi)部通信機制

基本通信原理

集群元數(shù)據(jù)的維護有兩種方式:集中式、Gossip 協(xié)議。redis cluster 節(jié)點間采用 gossip 協(xié)議進行通信。

集中式是將集群元數(shù)據(jù)(節(jié)點信息、故障等等)幾種存儲在某個節(jié)點上。集中式元數(shù)據(jù)集中存儲的一個典型代表,就是大數(shù)據(jù)領(lǐng)域的 storm。它是分布式的大數(shù)據(jù)實時計算引擎,是集中式的元數(shù)據(jù)存儲的結(jié)構(gòu),底層基于 zookeeper(分布式協(xié)調(diào)的中間件)對所有元數(shù)據(jù)進行存儲維護。

redis集群架構(gòu)了解一下?一致性hash了解嗎? 

redis 維護集群元數(shù)據(jù)采用另一個方式, gossip 協(xié)議,所有節(jié)點都持有一份元數(shù)據(jù),不同的節(jié)點如果出現(xiàn)了元數(shù)據(jù)的變更,就不斷將元數(shù)據(jù)發(fā)送給其它的節(jié)點,讓其它節(jié)點也進行元數(shù)據(jù)的變更。 

redis集群架構(gòu)了解一下?一致性hash了解嗎? 

集中式的好處在于,元數(shù)據(jù)的讀取和更新,時效性非常好,一旦元數(shù)據(jù)出現(xiàn)了變更,就立即更新到集中式的存儲中,其它節(jié)點讀取的時候就可以感知到;不好在于,所有的元數(shù)據(jù)的更新壓力全部集中在一個地方,可能會導(dǎo)致元數(shù)據(jù)的存儲有壓力。

gossip 好處在于,元數(shù)據(jù)的更新比較分散,不是集中在一個地方,更新請求會陸陸續(xù)續(xù)打到所有節(jié)點上去更新,降低了壓力;不好在于,元數(shù)據(jù)的更新有延時,可能導(dǎo)致集群中的一些操作會有一些滯后。

  • 10000 端口:每個節(jié)點都有一個專門用于節(jié)點間通信的端口,就是自己提供服務(wù)的端口號+10000,比如 7001,那么用于節(jié)點間通信的就是 17001 端口。每個節(jié)點每隔一段時間都會往另外幾個節(jié)點發(fā)送 ping 消息,同時其它幾個節(jié)點接收到 ping 之后返回 pong。
  • 交換的信息:信息包括故障信息,節(jié)點的增加和刪除,hash slot 信息等等。

gossip 協(xié)議

gossip 協(xié)議包含多種消息,包含 ping,pong,meet,fail 等等。

  • meet:某個節(jié)點發(fā)送 meet 給新加入的節(jié)點,讓新節(jié)點加入集群中,然后新節(jié)點就會開始與其它節(jié)點進行通信。

redis-trib.rbadd-node

其實內(nèi)部就是發(fā)送了一個 gossip meet 消息給新加入的節(jié)點,通知那個節(jié)點去加入我們的集群。

  • ping:每個節(jié)點都會頻繁給其它節(jié)點發(fā)送 ping,其中包含自己的狀態(tài)還有自己維護的集群元數(shù)據(jù),互相通過 ping 交換元數(shù)據(jù)。
  • pong:返回 ping 和 meeet,包含自己的狀態(tài)和其它信息,也用于信息廣播和更新。
  • fail:某個節(jié)點判斷另一個節(jié)點 fail 之后,就發(fā)送 fail 給其它節(jié)點,通知其它節(jié)點說,某個節(jié)點宕機啦。

ping 消息深入

ping 時要攜帶一些元數(shù)據(jù),如果很頻繁,可能會加重網(wǎng)絡(luò)負擔。

每個節(jié)點每秒會執(zhí)行 10 次 ping,每次會選擇 5 個最久沒有通信的其它節(jié)點。當然如果發(fā)現(xiàn)某個節(jié)點通信延時達到了 cluster_node_timeout / 2,那么立即發(fā)送 ping,避免數(shù)據(jù)交換延時過長,落后的時間太長了。比如說,兩個節(jié)點之間都 10 分鐘沒有交換數(shù)據(jù)了,那么整個集群處于嚴重的元數(shù)據(jù)不一致的情況,就會有問題。所以 cluster_node_timeout 可以調(diào)節(jié),如果調(diào)得比較大,那么會降低 ping 的頻率。

每次 ping,會帶上自己節(jié)點的信息,還有就是帶上 1/10 其它節(jié)點的信息,發(fā)送出去,進行交換。至少包含 3 個其它節(jié)點的信息,最多包含 總節(jié)點數(shù)減 2 個其它節(jié)點的信息。

分布式尋址算法

  • hash 算法(大量緩存重建)
  • 一致性 hash 算法(自動緩存遷移)+ 虛擬節(jié)點(自動負載均衡)
  • redis cluster 的 hash slot 算法

hash 算法

來了一個 key,首先計算 hash 值,然后對節(jié)點數(shù)取模。然后打在不同的 master 節(jié)點上。一旦某一個 master 節(jié)點宕機,所有請求過來,都會基于最新的剩余 master 節(jié)點數(shù)去取模,嘗試去取數(shù)據(jù)。這會導(dǎo)致大部分的請求過來,全部無法拿到有效的緩存,導(dǎo)致大量的流量涌入數(shù)據(jù)庫。 

redis集群架構(gòu)了解一下?一致性hash了解嗎? 

一致性 hash 算法

一致性 hash 算法將整個 hash 值空間組織成一個虛擬的圓環(huán),整個空間按順時針方向組織,下一步將各個 master 節(jié)點(使用服務(wù)器的 ip 或主機名)進行 hash。這樣就能確定每個節(jié)點在其哈希環(huán)上的位置。

來了一個 key,首先計算 hash 值,并確定此數(shù)據(jù)在環(huán)上的位置,從此位置沿環(huán)順時針“行走”,遇到的第一個 master 節(jié)點就是 key 所在位置。

在一致性哈希算法中,如果一個節(jié)點掛了,受影響的數(shù)據(jù)僅僅是此節(jié)點到環(huán)空間前一個節(jié)點(沿著逆時針方向行走遇到的第一個節(jié)點)之間的數(shù)據(jù),其它不受影響。增加一個節(jié)點也同理。

燃鵝,一致性哈希算法在節(jié)點太少時,容易因為節(jié)點分布不均勻而造成緩存熱點的問題。為了解決這種熱點問題,一致性 hash 算法引入了虛擬節(jié)點機制,即對每一個節(jié)點計算多個 hash,每個計算結(jié)果位置都放置一個虛擬節(jié)點。這樣就實現(xiàn)了數(shù)據(jù)的均勻分布,負載均衡。 

redis集群架構(gòu)了解一下?一致性hash了解嗎? 

redis cluster 的 hash slot 算法

redis cluster 有固定的 16384 個 hash slot,對每個 key 計算 CRC16 值,然后對 16384 取模,可以獲取 key 對應(yīng)的 hash slot。

redis cluster 中每個 master 都會持有部分 slot,比如有 3 個 master,那么可能每個 master 持有 5000 多個 hash slot。hash slot 讓 node 的增加和移除很簡單,增加一個 master,就將其他 master 的 hash slot 移動部分過去,減少一個 master,就將它的 hash slot 移動到其他 master 上去。移動 hash slot 的成本是非常低的。客戶端的 api,可以對指定的數(shù)據(jù),讓他們走同一個 hash slot,通過 hash tag 來實現(xiàn)。

任何一臺機器宕機,另外兩個節(jié)點,不影響的。因為 key 找的是 hash slot,不是機器。 

redis集群架構(gòu)了解一下?一致性hash了解嗎? 

redis cluster 的高可用與主備切換原理

redis cluster 的高可用的原理,幾乎跟哨兵是類似的。

判斷節(jié)點宕機

如果一個節(jié)點認為另外一個節(jié)點宕機,那么就是 pfail,主觀宕機。如果多個節(jié)點都認為另外一個節(jié)點宕機了,那么就是 fail,客觀宕機,跟哨兵的原理幾乎一樣,sdown,odown。

在 cluster-node-timeout 內(nèi),某個節(jié)點一直沒有返回 pong,那么就被認為 pfail。

如果一個節(jié)點認為某個節(jié)點 pfail 了,那么會在 gossip ping 消息中,ping 給其他節(jié)點,如果超過半數(shù)的節(jié)點都認為 pfail 了,那么就會變成 fail。

從節(jié)點過濾

對宕機的 master node,從其所有的 slave node 中,選擇一個切換成 master node。

檢查每個 slave node 與 master node 斷開連接的時間,如果超過了 cluster-node-timeout * cluster-slave-validity-factor,那么就沒有資格切換成 master。

從節(jié)點選舉

每個從節(jié)點,都根據(jù)自己對 master 復(fù)制數(shù)據(jù)的 offset,來設(shè)置一個選舉時間,offset 越大(復(fù)制數(shù)據(jù)越多)的從節(jié)點,選舉時間越靠前,優(yōu)先進行選舉。

所有的 master node 開始 slave 選舉投票,給要進行選舉的 slave 進行投票,如果大部分 master node(N/2 + 1)都投票給了某個從節(jié)點,那么選舉通過,那個從節(jié)點可以切換成 master。

從節(jié)點執(zhí)行主備切換,從節(jié)點切換為主節(jié)點。

與哨兵比較

整個流程跟哨兵相比,非常類似,所以說,redis cluster 功能強大,直接集成了 replication 和 sentinel 的功能。

 

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-09-15 07:46:42

哈希一致性哈希算法

2023-12-12 08:00:50

節(jié)點哈希算法

2021-11-12 08:38:26

一致性哈希算法數(shù)據(jù)結(jié)構(gòu)

2022-03-22 09:54:22

Hash算法

2017-06-20 08:19:56

MySQL集群架構(gòu)

2020-10-28 11:15:24

EPaxos分布式性算法

2022-11-10 07:49:09

hash算法代碼

2018-08-08 15:51:44

Hash分布式算法

2020-05-12 10:43:22

Redis緩存數(shù)據(jù)庫

2017-07-25 14:38:56

數(shù)據(jù)庫一致性非鎖定讀一致性鎖定讀

2021-05-19 21:50:46

Hash算法測試

2022-12-14 08:23:30

2024-01-11 08:13:49

Raft算法分布式

2022-08-29 08:38:00

事務(wù)一致性

2017-07-02 16:28:06

MySQL數(shù)據(jù)庫集群

2017-05-19 15:00:05

session架構(gòu)web-server

2016-02-15 10:46:40

JavaHash算法

2020-09-24 10:30:29

Redis數(shù)據(jù)庫面試

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

都市激情一区| 欧产日产国产精品视频 | 久久久久久久97| 日本福利片高清在线观看| 国产精品女同一区二区三区| 亚洲午夜激情| 成人亚洲精品久久久久软件| 欧美成熟毛茸茸复古| 久久五月天小说| 成人女保姆的销魂服务| 国内精品福利| 日日夜夜精品网站| 久久精品国产免费看久久精品| 欧美综合激情| 国产aⅴ综合色| 日本女优天堂99伊人| 欧美影院一区二区| 久久91导航| 91精品久久久久久久久久入口| 人人精品人人爱| jk破处视频在线| 中文字幕精品一区久久久久| 成人高清电影网站| 在线观看欧美激情| 色综合久久九月婷婷色综合| 色豆豆成人网| 蜜桃视频成人| 亚洲午夜久久久久久久久电影院 | 亚洲第一区视频| 午夜久久久影院| 91免费在线| 狠狠爱在线视频一区| 超碰免费在线播放| 日韩av在线免费观看一区| 中文在线免费视频| 亚洲最新在线视频| 波多野结衣欧美| 91久久精品国产| 久久国产精品72免费观看| 日本在线视频www| 欧美午夜无遮挡| 天堂成人av| 欧美夫妻性生活视频| 中文字幕伦av一区二区邻居| 91免费版黄色| 成人国产电影网| 四虎在线免费看| 中文字幕在线日韩| 国产精品成人一区二区不卡| 亚洲欧洲精品一区| 国产精品你懂的在线欣赏| 亚洲人成小说| 亚洲日韩中文字幕| 久久久久久久久国产一区| 日韩久久久久久久久久久久| 亚洲一区二区三区中文字幕| 男女在线观看视频| 日韩av电影在线播放| 麻豆视频观看网址久久| 亚洲欧美自拍另类日韩| 日韩无一区二区| 精品免费视频| 黑森林福利视频导航| 精品国产亚洲在线| 国产精品亚洲片在线播放| 欧美久久综合性欧美| 亚洲综合精品久久| 四虎影视国产精品| 宅男av一区二区三区| 欧美日韩亚洲网| 欧美成人午夜77777| 日韩精品福利片午夜免费观看| 精品视频一区 二区 三区| 天天综合国产| 毛片毛片毛片毛片| 久久综合免费视频| 国产午夜亚洲精品羞羞网站| 欧美电影h版| 天天综合狠狠精品| 亚洲国产精品久久久久久| 亚洲一区日韩| 日本在线免费中文字幕| 99精品国产高清在线观看| 中文字幕在线一区免费| 超碰97成人| 浓精h攵女乱爱av| 欧美成人性色生活仑片| 久久久高清一区二区三区| 日韩精品三区| 黑人粗进入欧美aaaaa| 91精品国产91久久久久久最新| 99精品视频在线播放观看| 果冻天美麻豆一区二区国产| 国产一区二区四区| 美日韩精品免费观看视频| 中文字幕一区二区三区不卡 | 欧美a级理论片| 精品日韩av| 视色,视色影院,视色影库,视色网| 日韩成人在线免费观看| 成人一级片网址| 蜜臀久久99精品久久一区二区| 一级毛片免费视频| 黑人中文字幕一区二区三区| 亚洲第一精品夜夜躁人人爽| 国产婷婷一区二区| 1024成人| 另类图片第一页| 欧洲一区二区三区| 91佛爷在线| 性欧美18一19内谢| 国产精品自产拍在线观看中文| 日韩一区二区三区四区五区六区 | 在线观看日韩专区| 欧美福利视频导航| 亚洲欧美日韩综合aⅴ视频| 亚洲综合好骚| 欧美精美视频| 国外成人福利视频| 在线观看的av| 成年人黄色电影| 国产精品自拍片| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 久久aⅴ国产紧身牛仔裤| 999久久久精品一区二区| 国产后进白嫩翘臀在线观看视频| 无套内精的网站| 69堂免费视频| 性生活免费观看视频| 国产精品乱子乱xxxx| 国产精品高清在线观看| 日韩中文字幕在线视频播放| 欧美在线免费观看亚洲| 亚洲欧美日韩一区二区| 91在线视频官网| 99国产精品国产精品毛片| 国内精品伊人久久久久av一坑| 亚洲高清影视| 精品日韩在线| 深爱激情综合网| 欧美日韩精品一区二区视频| 久操网在线观看| 日韩一级片免费视频| 亚洲国产日韩美| 亚洲精品一区二区三区樱花| 久久精品国产精品青草色艺| 97视频中文字幕| 国产精品一区二区免费看| 精品视频一区二区三区四区| 久久久久久亚洲精品不卡4k岛国 | 成人精品小蝌蚪| 国产欧美精品国产国产专区| 久久久综合九色合综国产精品| 韩国一区二区在线观看| 懂色av中文一区二区三区| 91在线国产福利| 国产亚洲综合性久久久影院| 久久久精品国产免大香伊| 亚洲国产精品t66y| 五月天亚洲婷婷| 欧美白人最猛性xxxxx69交| 日韩丝袜情趣美女图片| 日韩av一区在线| 色香阁99久久精品久久久| 国模精品一区二区三区色天香| 蜜臀a∨国产成人精品| 国产素人在线观看| 欧美性大战久久久| 91网站视频在线观看| 久久成人一区| 国内精品伊人久久久久av影院 | 夜夜揉揉日日人人青青一国产精品| 亚洲白拍色综合图区| 欧美激情一区二区三区成人| 日本午夜精品一区二区| 大片在线观看网站免费收看| 91精品国产91久久久久福利| 国产成人精品视| 91中文字精品一区二区| 欧洲精品在线视频| 亚洲视频欧洲视频| 亚洲视频777| 国产精品视频内| 欧美一区二区三区在线播放| 在线中文字幕观看| 亚洲福利精品视频| 污视频网站在线观看| 国产精品伦一区二区| 久久av中文| 久久高清国产| 国产精品日韩成人| 亚洲激情国产精品| 18成人在线| 加勒比一区二区三区在线| 玖玖精品在线| 六月婷婷色综合| 欧美手机在线视频| 欧美xxxx做受欧美| 欧美日产一区二区三区在线观看| 第四色亚洲色图|