chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Redis Cluster之故障轉(zhuǎn)移

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2025-01-20 09:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. Redis Cluster 簡介

Redis Cluster 是 Redis 官方提供的 Redis 集群功能。

305b0afc-d4b6-11ef-9310-92fbcf53809c.png

為什么要實(shí)現(xiàn) Redis Cluster?

Redis 是單線程的(從網(wǎng)絡(luò) I/O 處理到實(shí)際的讀寫命令處理),無論單核CPU 下內(nèi)存多大,如果需要大量計(jì)算能力,還是需要采用分布式以增加 CPU 資源。

隨著公司發(fā)展,用戶數(shù)量增多,并發(fā)越來越多,業(yè)務(wù)需要更高的 QPS,而主從復(fù)制中單機(jī)的 QPS(10W)可能無法滿足業(yè)務(wù)需求。

數(shù)據(jù)量的考慮:現(xiàn)有服務(wù)器內(nèi)存不能滿足業(yè)務(wù)數(shù)據(jù)的需要時(shí),單純向服務(wù)器添加內(nèi)存不能達(dá)到要求,此時(shí)需要考慮分布式需求,把數(shù)據(jù)分布到不同服務(wù)器上。

網(wǎng)絡(luò)流量需求:業(yè)務(wù)的流量已經(jīng)超過服務(wù)器的網(wǎng)卡的上限值,可以考慮使用分布式來進(jìn)行分流。

離線計(jì)算,需要中間環(huán)節(jié)緩沖等別的需求。

Redis Cluster 缺點(diǎn)

當(dāng)節(jié)點(diǎn)數(shù)量很多時(shí),性能不會(huì)很高。

解決方案:使用smart智能客戶端操作集群達(dá)到通信效率最大化。客戶端內(nèi)部負(fù)責(zé)計(jì)算維護(hù)鍵,槽以及節(jié)點(diǎn)的映射,用于快速定位到目標(biāo)節(jié)點(diǎn)。智能客戶端知道由哪個(gè)節(jié)點(diǎn)負(fù)責(zé)管理哪個(gè)槽,而且當(dāng)節(jié)點(diǎn)與槽的映射關(guān)系發(fā)生改變時(shí),客戶端也會(huì)知道這個(gè)改變,這是一種非常高效的方式。

集群的限制

key 批量操作支持有限:例如 mget、mset 必須在一個(gè) slot。

key 事務(wù)和 Lua 支持有限:操作的 key 必須在一個(gè)節(jié)點(diǎn)。

key 是數(shù)據(jù)分區(qū)的最小粒度:不支持 bigkey 分區(qū)。

不支持多個(gè)數(shù)據(jù)庫:集群模式下只有一個(gè) db0。

復(fù)制只支持一層:不支持樹形復(fù)制結(jié)構(gòu)。

Redis Cluster 滿足容量和性能的擴(kuò)展性,很多業(yè)務(wù)“不需要”。

大多數(shù)時(shí)客戶端性能會(huì)“降低”。 命令無法跨節(jié)點(diǎn)使用:mget、keys、scan、flush、sinter 等。 Lua 和事務(wù)無法跨節(jié)點(diǎn)使用。

客戶端維護(hù)更復(fù)雜:SDK 和應(yīng)用本身消耗(例如更多的連接池)。

數(shù)據(jù)分布

為什么要做數(shù)據(jù)分布?

全量數(shù)據(jù),單機(jī) Redis 節(jié)點(diǎn)無法滿足要求,按照分區(qū)規(guī)則把數(shù)據(jù)分到若干個(gè)子集當(dāng)中。

309a7d5e-d4b6-11ef-9310-92fbcf53809c.png

常用數(shù)據(jù)分布之順序分布

30e51c1a-d4b6-11ef-9310-92fbcf53809c.png

順序分區(qū)常用在關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)。

常用數(shù)據(jù)分布之哈希分布

310c661c-d4b6-11ef-9310-92fbcf53809c.png

31319c3e-d4b6-11ef-9310-92fbcf53809c.png

虛擬槽分區(qū)

虛擬槽分區(qū)是 Redis Cluster 采用的分區(qū)方式。

預(yù)設(shè)虛擬槽,每個(gè)槽就相當(dāng)于一個(gè)數(shù)字,有一定范圍。每個(gè)槽映射一個(gè)數(shù)據(jù)子集,一般比節(jié)點(diǎn)數(shù)大。

Redis Cluster 中預(yù)設(shè)虛擬槽的范圍為 0 到 16383

每個(gè)key 通過 CRC16 校驗(yàn)后對 16384 取模來決定這個(gè) key 存放在哪個(gè)槽(slot)。

3167c9f8-d4b6-11ef-9310-92fbcf53809c.png

步驟:

把 16384 個(gè)槽按照節(jié)點(diǎn)數(shù)量進(jìn)行平均分配,由節(jié)點(diǎn)進(jìn)行管理。

對每個(gè) key 按照 CRC16 規(guī)則進(jìn)行 hash 運(yùn)算。

把 hash 結(jié)果對 16383 進(jìn)行取余。

把余數(shù)發(fā)送給 Redis 節(jié)點(diǎn)。

節(jié)點(diǎn)接收到數(shù)據(jù),驗(yàn)證是否在自己管理的槽編號(hào)的范圍。

如果在自己管理的槽編號(hào)范圍內(nèi),則把數(shù)據(jù)保存到數(shù)據(jù)槽中,然后返回執(zhí)行結(jié)果。

如果在自己管理的槽編號(hào)范圍外,則會(huì)把數(shù)據(jù)發(fā)送給正確的節(jié)點(diǎn),由正確的節(jié)點(diǎn)來把數(shù)據(jù)保存在對應(yīng)的槽中。

需要注意的是:Redis Cluster 的節(jié)點(diǎn)之間會(huì)共享消息,每個(gè)節(jié)點(diǎn)都會(huì)知道是哪個(gè)節(jié)點(diǎn)負(fù)責(zé)哪個(gè)范圍內(nèi)的數(shù)據(jù)槽。

虛擬槽分布方式中,由于每個(gè)節(jié)點(diǎn)管理一部分?jǐn)?shù)據(jù)槽,數(shù)據(jù)保存到數(shù)據(jù)槽中。當(dāng)節(jié)點(diǎn)擴(kuò)容或者縮容時(shí),對數(shù)據(jù)槽進(jìn)行重新分配遷移即可,數(shù)據(jù)不會(huì)丟失。

虛擬槽分區(qū)特點(diǎn):

使用服務(wù)端管理節(jié)點(diǎn)、槽、數(shù)據(jù)。例如 Redis Cluster。

可以對數(shù)據(jù)打散,又可以保證數(shù)據(jù)分布均勻

2. Redis Cluster 架構(gòu)

1)節(jié)點(diǎn)

Redis Cluster 是分布式架構(gòu)的:即 Redis Cluster 中有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都負(fù)責(zé)進(jìn)行數(shù)據(jù)讀寫操作。

每個(gè)節(jié)點(diǎn)之間會(huì)進(jìn)行通信。

2)meet 操作

meet 操作是節(jié)點(diǎn)之間完成相互通信的基礎(chǔ),meet 操作有一定的頻率和規(guī)則。

3173f1ec-d4b6-11ef-9310-92fbcf53809c.png

所有的 Redis 節(jié)點(diǎn)彼此互連,內(nèi)部使用二進(jìn)制協(xié)議優(yōu)化傳輸速度和帶寬。

客戶端與 Redis 節(jié)點(diǎn)直連,不需要中間 proxy 層??蛻舳瞬恍枰B接集群所有節(jié)點(diǎn),連接集群中任何一個(gè)可用節(jié)點(diǎn)即可。

3)分配槽

把 16384 個(gè)槽平均分配給節(jié)點(diǎn)進(jìn)行管理,每個(gè)節(jié)點(diǎn)只能對自己負(fù)責(zé)的槽進(jìn)行讀寫操作。

由于每個(gè)節(jié)點(diǎn)之間都彼此通信,每個(gè)節(jié)點(diǎn)都知道其他節(jié)點(diǎn)負(fù)責(zé)管理的槽范圍。

31b7f6c6-d4b6-11ef-9310-92fbcf53809c.png

客戶端訪問任意節(jié)點(diǎn)時(shí),對數(shù)據(jù) key 按照 CRC16 規(guī)則進(jìn)行 hash 運(yùn)算,然后將運(yùn)算結(jié)果對 16383 進(jìn)行取余,如果余數(shù)在當(dāng)前訪問的節(jié)點(diǎn)管理的槽范圍內(nèi),則直接返回對應(yīng)的數(shù)據(jù)
如果不在當(dāng)前節(jié)點(diǎn)負(fù)責(zé)管理的槽范圍內(nèi),則會(huì)告訴客戶端去哪個(gè)節(jié)點(diǎn)獲取數(shù)據(jù),由客戶端去正確的節(jié)點(diǎn)獲取數(shù)據(jù)。

4)復(fù)制

Cluster 自動(dòng)做 master+slave 的主從復(fù)制和讀寫分離、master+slave 高可用和主備切換、支持多個(gè) master 的 hash slot 即數(shù)據(jù)分布式存儲(chǔ)。

31d26646-d4b6-11ef-9310-92fbcf53809c.png

3. 故障轉(zhuǎn)移

集群自動(dòng)故障轉(zhuǎn)移過程分為故障發(fā)現(xiàn)和節(jié)點(diǎn)恢復(fù)。節(jié)點(diǎn)下線分為主觀下線和客觀下線:

當(dāng)超過半數(shù)的主節(jié)點(diǎn)(master)認(rèn)為故障節(jié)點(diǎn)為主觀下線時(shí),則標(biāo)記這個(gè)節(jié)點(diǎn)為客觀下線狀態(tài)。

從節(jié)點(diǎn)(slave)負(fù)責(zé)對客觀下線的主節(jié)點(diǎn)(master)觸發(fā)故障恢復(fù)流程,保證集群的可用性。

節(jié)點(diǎn)失效機(jī)制:選舉

31ef19da-d4b6-11ef-9310-92fbcf53809c.png

ping/pong 模式

Redis Cluster 通過 ping/pong 消息實(shí)現(xiàn)故障發(fā)現(xiàn)。

ping/pong 不僅能傳遞節(jié)點(diǎn)與槽的對應(yīng)消息,也能傳遞其他狀態(tài),比如:節(jié)點(diǎn)主從狀態(tài),節(jié)點(diǎn)故障等。

故障發(fā)現(xiàn)就是通過這種模式來實(shí)現(xiàn),分為主觀下線和客觀下線。

集群中所有 master 參與投票,如果半數(shù)以上 master 節(jié)點(diǎn)與其中一個(gè) master 節(jié)點(diǎn)通信超時(shí)(cluster-node-timeout),則認(rèn)為該 master 節(jié)點(diǎn)掛掉。

什么時(shí)候整個(gè)集群不可用(cluster_state:fail)?

如果集群任意 master 掛掉,且當(dāng)前 master 沒有 slave,則集群進(jìn)入 fail 狀態(tài)。也可以理解成集群的 [0-16383] slot 映射不完全時(shí)進(jìn)入 fail 狀態(tài)。

如果集群超過半數(shù)以上 master 掛掉,無論是否有 slave,集群進(jìn)入 fail 狀態(tài)。

鏈接:https://www.cnblogs.com/juno3550/p/14840433.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Cluster
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9335
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    390

    瀏覽量

    11851

原文標(biāo)題:3. 故障轉(zhuǎn)移

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Redis Sentinel和Cluster模式如何選擇

    在我十年的運(yùn)維生涯中,見過太多團(tuán)隊(duì)在Redis集群方案選擇上踩坑。有的團(tuán)隊(duì)盲目追求"高大上"的Cluster模式,結(jié)果運(yùn)維復(fù)雜度爆表;有的團(tuán)隊(duì)死守Sentinel不放,最后擴(kuò)展性成了瓶頸。今天,我想通過這篇萬字長文,把我在生產(chǎn)環(huán)境中積累的經(jīng)驗(yàn)全部分享給你。
    的頭像 發(fā)表于 09-08 09:31 ?260次閱讀

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過數(shù)據(jù)分片和主從復(fù)制實(shí)現(xiàn)高可用性和橫向擴(kuò)展。集群將整個(gè)數(shù)據(jù)集分割成16384個(gè)哈希槽(hash slots),每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分槽位。
    的頭像 發(fā)表于 07-17 11:04 ?466次閱讀

    Redis集群部署與性能優(yōu)化實(shí)戰(zhàn)

    Redis作為高性能的內(nèi)存數(shù)據(jù)庫,在現(xiàn)代互聯(lián)網(wǎng)架構(gòu)中扮演著關(guān)鍵角色。作為運(yùn)維工程師,掌握Redis的部署、配置和優(yōu)化技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),詳細(xì)介紹Redis集群的搭建、性能優(yōu)化以及監(jiān)控運(yùn)維的核心技術(shù)。
    的頭像 發(fā)表于 07-08 17:56 ?456次閱讀

    【經(jīng)驗(yàn)分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運(yùn)行Redis性能測試,并
    的頭像 發(fā)表于 06-05 08:05 ?631次閱讀
    【經(jīng)驗(yàn)分享】在Omni3576上編譯<b class='flag-5'>Redis</b>-8.0.2源碼,并安裝及性能測試

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】Redis最新8.0.2版本源碼安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運(yùn)行Redis性能測試,并
    發(fā)表于 06-03 01:28

    Redis 再次開源!

    “ ?Redis 現(xiàn)已采用 AGPLv3 開源許可證。? ” Redis CEO 的 Blog 以下是 Redis CEO Rowan Trollope 的 Blog: 像 AWS 和 GCP 這樣
    的頭像 發(fā)表于 05-06 18:26 ?539次閱讀

    redis三種集群方案詳解

    Redis中提供的集群方案總共有三種(一般一個(gè)redis節(jié)點(diǎn)不超過10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?1102次閱讀
    <b class='flag-5'>redis</b>三種集群方案詳解

    Redis實(shí)戰(zhàn)筆記

    在目前的技術(shù)選型中,Redis 儼然已經(jīng)成為了系統(tǒng)高性能緩存方案的事實(shí)標(biāo)準(zhǔn),因此現(xiàn)在?Redis 也成為了后端開發(fā)的基本技能樹之一。 ? 基于上述情況,今天給大家分享一份?杰哥?親筆撰寫的內(nèi)部
    的頭像 發(fā)表于 02-09 09:12 ?531次閱讀
    <b class='flag-5'>Redis</b>實(shí)戰(zhàn)筆記

    華為云 Flexus X 加速 Redis 案例實(shí)踐與詳解

    Redis 加速鏡像,更是為開發(fā)者提供了極大的便利。本文將詳細(xì)介紹如何利用華為云 Flexus X 實(shí)例自帶的 Redis 鏡像,快速部署并配置 Redis,以及通過實(shí)際案例展示其便捷性和高效性。 一、華為云 Flexus
    的頭像 發(fā)表于 01-23 17:52 ?504次閱讀
    華為云 Flexus X 加速 <b class='flag-5'>Redis</b> 案例實(shí)踐與詳解

    云服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 Redis 集群

    Redis 集群是一種分布式的 Redis 解決方案,能夠在多個(gè)節(jié)點(diǎn)之間分片存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)水平擴(kuò)展和高可用性。與傳統(tǒng)的主從架構(gòu)不同,Redis 集群支持?jǐn)?shù)據(jù)自動(dòng)分片、主節(jié)點(diǎn)故障自動(dòng)切換
    的頭像 發(fā)表于 01-13 13:37 ?557次閱讀
    云服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 <b class='flag-5'>Redis</b> 集群

    華為云Flexus X實(shí)例,Redis性能加速評測及對比

    隨著云計(jì)算技術(shù)的飛速發(fā)展,Redis 作為一種高性能的內(nèi)存數(shù)據(jù)庫,在各種應(yīng)用場景中發(fā)揮著越來越重要的作用。為了滿足不同用戶對 Redis 性能的高要求,華為云推出了 Flexus X 實(shí)例,并提供了
    的頭像 發(fā)表于 12-29 15:47 ?729次閱讀
    華為云Flexus X實(shí)例,<b class='flag-5'>Redis</b>性能加速評測及對比

    華為云 Flexus X 輕松實(shí)現(xiàn) Redis 一主多從高效部署

    前言 ????????華為云 Flexus?X 是一款專為高性能計(jì)算設(shè)計(jì)的云服務(wù)器實(shí)例,其搭載的 X-Turbo 加速技術(shù)和智能應(yīng)用調(diào)優(yōu)算法,能夠大幅提升 Redis 的處理能力和響應(yīng)速度。此外
    的頭像 發(fā)表于 12-27 13:45 ?629次閱讀
    華為云 Flexus X 輕松實(shí)現(xiàn) <b class='flag-5'>Redis</b> 一主多從高效部署

    Redis使用重要的兩個(gè)機(jī)制:Reids持久化和主從復(fù)制

    今天這篇文章,我們一起了解 Redis 使用中非常重要的兩個(gè)機(jī)制:Reids 持久化和主從復(fù)制。 我們都知道Redis是一個(gè)內(nèi)存數(shù)據(jù)庫,在學(xué)習(xí)主從同步之前,我們首先要想到 Redis 是如何做數(shù)據(jù)
    的頭像 發(fā)表于 12-18 10:33 ?534次閱讀
    <b class='flag-5'>Redis</b>使用重要的兩個(gè)機(jī)制:Reids持久化和主從復(fù)制

    Redis緩存與Memcached的比較

    Redis和Memcached都是廣泛使用的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),它們主要用于提高應(yīng)用程序的性能,通過減少對數(shù)據(jù)庫的直接訪問來加速數(shù)據(jù)檢索。以下是對Redis和Memcached的比較,涵蓋了它們的一些
    的頭像 發(fā)表于 12-18 09:33 ?801次閱讀

    CSP LED切割前如何轉(zhuǎn)移到UV膜上

    倒裝芯片底部與高溫膠膜接觸,封裝后如何將芯片底部與高溫膜分離,然后轉(zhuǎn)移到UV膜上?
    發(fā)表于 10-29 23:23