日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis:Redis集群模式(Cluster)原理

發(fā)布時(shí)間:2025/4/16 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis:Redis集群模式(Cluster)原理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.前言

由于Redis主從復(fù)制模式和Redis哨兵模式采用的都是復(fù)制Master節(jié)點(diǎn)的數(shù)據(jù),實(shí)現(xiàn)讀寫分離。但是這種設(shè)計(jì)存在一個(gè)嚴(yán)重的問題,它沒有真正意義上實(shí)現(xiàn)數(shù)據(jù)分片。兩個(gè)模式都有一個(gè)問題,不能水平擴(kuò)容,并且這兩個(gè)模式的高可用特性都會(huì)受到Master主節(jié)點(diǎn)內(nèi)存的限制。Redis較難支持在線擴(kuò)容,在集群容量達(dá)到上限時(shí)在線擴(kuò)容會(huì)變得很復(fù)雜。所有Redis集群模式就是用來解決這個(gè)問題。

2. Redis Cluster集群模式

Redis Cluster是一種服務(wù)器Sharding技術(shù),3.0版本開始正式提供。Redis集群搭建的方式有多種,例如使用zookeeper等,但從redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用無中心結(jié)構(gòu),每個(gè)節(jié)點(diǎn)保存數(shù)據(jù)和整個(gè)集群狀態(tài),每個(gè)節(jié)點(diǎn)都和其他所有 節(jié)點(diǎn)連接。其redis-cluster架構(gòu)圖如下:

在這個(gè)圖中,每一個(gè)藍(lán)色的圈都代表著一個(gè)redis的服務(wù)器節(jié)點(diǎn)。它們?nèi)魏蝺蓚€(gè)節(jié)點(diǎn)之間都是相互連通的。客戶端可以與任何一個(gè)節(jié)點(diǎn)相連接,然后就可以訪問集群中的任何一個(gè)節(jié)點(diǎn)。對其進(jìn)行存取和其他操作。

其結(jié)構(gòu)特點(diǎn):

  • 所有的redis節(jié)點(diǎn)彼此互聯(lián)(PING-PONG機(jī)制),內(nèi)部使用二進(jìn)制協(xié)議優(yōu)化傳輸速度和帶寬。
  • 節(jié)點(diǎn)的fail是通過集群中超過半數(shù)的節(jié)點(diǎn)檢測失效時(shí)才生效。
  • 客戶端與redis節(jié)點(diǎn)直連,不需要中間proxy層.客戶端不需要連接集群所有節(jié)點(diǎn),連接集群中任何一個(gè)可用節(jié)點(diǎn)即可。
  • redis-cluster把所有的物理節(jié)點(diǎn)映射到[0-16383]slot上(不一定是平均分配),cluster 負(fù)責(zé)維護(hù)node<->slot<->value。
  • Redis集群預(yù)分好16384個(gè)桶,當(dāng)需要在 Redis 集群中放置一個(gè) key-value 時(shí),根據(jù) CRC16(key) mod 16384的值,決定將一個(gè)key放到哪個(gè)桶中。
  • 2.1 Redis集群數(shù)據(jù)分片

    在redis的每一個(gè)節(jié)點(diǎn)上,都有這么兩個(gè)東西,一個(gè)是插槽(slot)可以理解為是一個(gè)可以存儲兩個(gè)數(shù)值的一個(gè)變量這個(gè)變量的取值范圍是:0-16383。還有一個(gè)就是cluster,可以理解為是一個(gè)集群管理的插件。當(dāng)我們的存取的key到達(dá)的時(shí)候,redis會(huì)根據(jù)crc16的算法得出一個(gè)結(jié)果,然后把結(jié)果對 16384 求余數(shù),這樣每個(gè) key 都會(huì)對應(yīng)一個(gè)編號在 0-16383 之間的哈希槽,通過這個(gè)值,去找到對應(yīng)的插槽所對應(yīng)的節(jié)點(diǎn),然后直接自動(dòng)跳轉(zhuǎn)到這個(gè)對應(yīng)的節(jié)點(diǎn)上進(jìn)行存取操作。

    如果Redis是Redis Cluster的話,是有好多個(gè)redis一起工作的,那么,就需要這個(gè)集群不是那么容易掛掉,所以呢,理論上就應(yīng)該給集群中的每個(gè)節(jié)點(diǎn)至少一個(gè)備用的Slave redis服務(wù)。這個(gè)備用的redis稱為從節(jié)點(diǎn)(slave)。

    2.2 Redis Cluster 備份容錯(cuò)機(jī)制

    每一個(gè)節(jié)點(diǎn)都存有這個(gè)集群所有主節(jié)點(diǎn)以及從節(jié)點(diǎn)的信息。

    它們之間通過互相的ping-pong判斷是否節(jié)點(diǎn)可以連接上。如果有一半以上的節(jié)點(diǎn)去ping一個(gè)節(jié)點(diǎn)的時(shí)候沒有回應(yīng),集群就認(rèn)為這個(gè)節(jié)點(diǎn)宕機(jī)了,然后去連接它的備用節(jié)點(diǎn)。如果某個(gè)節(jié)點(diǎn)和所有從節(jié)點(diǎn)全部掛掉,我們集群就進(jìn)入Fail狀態(tài)。還有就是如果有一半以上的主節(jié)點(diǎn)宕機(jī),那么我們集群同樣進(jìn)入Fail狀態(tài)。這就是我們的redis的投票機(jī)制,具體原理如下圖所示:

    • 投票過程是集群中所有master參與,如果半數(shù)以上master節(jié)點(diǎn)與master節(jié)點(diǎn)通信超時(shí)(cluster-node-timeout),認(rèn)為當(dāng)前master節(jié)點(diǎn)掛掉.

    總結(jié)

    以上是生活随笔為你收集整理的Redis:Redis集群模式(Cluster)原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。