精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

得物 Redis 設(shè)計(jì)與實(shí)踐

數(shù)據(jù)庫 Redis
本文詳細(xì)介紹了自建 Redis 架構(gòu)和現(xiàn)有一些重要特性,我們還在持續(xù)不斷地迭代優(yōu)化和豐富支持的特性,為我們的業(yè)務(wù)提供一個(gè)功能更強(qiáng)大、性能更優(yōu)異的分布式緩存系統(tǒng)。

一、前言

自建 Redis 系統(tǒng)是得物 DBA 團(tuán)隊(duì)自研高性能分布式 KV 緩存系統(tǒng),目前管理的 ECS 內(nèi)存總?cè)萘砍^數(shù)十TB,數(shù)百多個(gè) Redis 緩存集群實(shí)例,數(shù)萬多個(gè) Redis 數(shù)據(jù)節(jié)點(diǎn),其中內(nèi)存規(guī)格超過 1T 的大容量集群多個(gè)。

自建 Redis 系統(tǒng)采用 Proxy 架構(gòu),包含 ConfigServer、Proxy 等核心組件,還包括一個(gè)具備實(shí)例自動(dòng)化部署、資源管理、診斷與分析等重要功能在內(nèi)的完善的自動(dòng)化運(yùn)維平臺(tái)。

本文將從系統(tǒng)架構(gòu)及核心組件、自建 Redis 支持的重要特性、自動(dòng)化運(yùn)維平臺(tái)的重要功能等多方面為大家介紹自建 Redis 系統(tǒng)。

二、自建 Redis 架構(gòu)及核心組件

自建 Redis 分布式 KV 緩存系統(tǒng)由 ConfigServer、Redis-Proxy、Redis-Server 等核心組件構(gòu)成,整體架構(gòu)圖如下所示:

圖片圖片

下面為大家逐一介紹自建 Redis 各核心組件支持的重要功能和特性。

ConfigServer

ConfigServer 是自建 Redis 系統(tǒng)中關(guān)鍵組件之一,跨多可用區(qū)多節(jié)點(diǎn)部署,采用 Raft 協(xié)議實(shí)現(xiàn) ConfigServer 組件高可用;ConfigServer 主要負(fù)責(zé)三方面職責(zé):

負(fù)責(zé) Proxy 添加與刪除、Group 創(chuàng)建與刪除、Redis-Server 實(shí)例添加與刪除、Redis-Server 實(shí)例手動(dòng)主從切換、水平擴(kuò)容與數(shù)據(jù)遷移等功能操作。

集群拓?fù)浒l(fā)生變化時(shí),主動(dòng)向 Redi-Proxy 更新集群拓?fù)洹?/p>

負(fù)責(zé) Redis-Server 實(shí)例故障檢測與自動(dòng)故障轉(zhuǎn)移(主節(jié)點(diǎn)故障后自動(dòng)主從切換)。

ConfigServer 系統(tǒng)結(jié)構(gòu)圖如下所示:

圖片圖片

每個(gè)自建 Redis 集群會(huì)對應(yīng)部署一組獨(dú)立的 ConfigServer 組件,并且每組 ConfigServer 采用至少三節(jié)點(diǎn)部署,分布在三個(gè)不同的可用區(qū),保證自建 Redis 系統(tǒng)高可用:

  • ConfigServer 多節(jié)點(diǎn)多可用區(qū)部署,保證了 ConfigServer 組件自身的高可用。
  • 同時(shí),也保證 Redis-Server 的高可用,任意一個(gè)可用區(qū)故障,剩余 ConfigServer 依然能高效完成 Redis-Server 的宕機(jī)判定、選主與故障 Failover。
  • 相對于開源 Redis 原生 Cluster 模式,也不會(huì)因多數(shù) Redis-Server 主節(jié)點(diǎn)故障而無法完成故障判定與 Failover。

故障檢測與轉(zhuǎn)移

ConfigServer 負(fù)責(zé) Redis-Server 節(jié)點(diǎn)故障檢測與自動(dòng)故障轉(zhuǎn)移,ConfigServer 會(huì)對每一個(gè) Group 的 Master 節(jié)點(diǎn)進(jìn)行定期探活,如果發(fā)現(xiàn)某一個(gè) Group 的 Master 節(jié)點(diǎn)不可用,就會(huì)執(zhí)行 Failover 流程,選擇該 Group 內(nèi)一個(gè)可用的 Slave 節(jié)點(diǎn)提升為新的 Master 節(jié)點(diǎn),保證該 Group 可繼續(xù)對外提供服務(wù)。

實(shí)現(xiàn)思路參考開源 Redis Sentinel,不過由于 ConfigServer 是 Golang 實(shí)現(xiàn),而開源 Redis Sentinel 是使用 C 語言實(shí)現(xiàn),所以在部分細(xì)節(jié)上略有不同。

多協(xié)程:在 Redis Sentinel 中,是在一個(gè)單線程中定時(shí)檢測所有 Redis-Server 節(jié)點(diǎn),而由于 Golang 支持協(xié)程,在 ConfigServer 中是為實(shí)例的每個(gè) Group 開啟一個(gè)協(xié)程,在協(xié)程中定時(shí)檢測該 Group 對應(yīng)的 Redis-Server 狀態(tài)。

自定義通訊協(xié)議:在 Redis Sentinel 中,Sentinel 之間通過 Redis-Server 節(jié)點(diǎn)交換元數(shù)據(jù)信息,來發(fā)現(xiàn)負(fù)責(zé)同一個(gè) Redis-Server 的 Sentinel 節(jié)點(diǎn),以及交換觀察的節(jié)點(diǎn)狀態(tài);而在 ConfigServer 中,ConfigServer 之間是采用自定義 TCP 協(xié)議直接通訊,交換信息更高效,也能縮短故障切換時(shí)間。

故障檢測

  • 每個(gè) ConfigServer 定期給該實(shí)例的所有 Redis-Server 節(jié)點(diǎn)發(fā)送 Ping 和 Info 命令,用于檢測節(jié)點(diǎn)的可用性和發(fā)現(xiàn)新的從節(jié)點(diǎn)。
  • 當(dāng) ConfigServer 向 Redis-Server 節(jié)點(diǎn)發(fā)送命令超時(shí)時(shí),將節(jié)點(diǎn)標(biāo)記為主觀下線,并傳播節(jié)點(diǎn)的主觀下線狀態(tài)。
  • ConfigServer Leader 節(jié)點(diǎn)發(fā)現(xiàn)某節(jié)點(diǎn)處于主觀下線時(shí),會(huì)主動(dòng)查詢其他 ConfigServer 對該節(jié)點(diǎn)的狀態(tài)判定,如果多數(shù) ConfigServer 節(jié)點(diǎn)都將該 Redis-Server 節(jié)點(diǎn)標(biāo)記為主觀下線,則 Leader 節(jié)點(diǎn)將該 Redis 節(jié)點(diǎn)標(biāo)記為客觀下線,并發(fā)起故障轉(zhuǎn)移流程。

故障轉(zhuǎn)移

  • 從故障 Redis 主節(jié)點(diǎn)的所有從節(jié)點(diǎn)中選擇一個(gè)最優(yōu)的從節(jié)點(diǎn),選擇策略包含:

過濾掉不健康的從節(jié)點(diǎn),比如處于主觀下線或者客觀下線狀態(tài)。

選擇 Slave-Priority 最高的從節(jié)點(diǎn)。

選擇復(fù)制偏移量最大的從節(jié)點(diǎn)。

選擇 Runid 最小的從節(jié)點(diǎn)。

  • 將選取出來的從節(jié)點(diǎn)提升為新的主節(jié)點(diǎn),即向該節(jié)點(diǎn)執(zhí)行 slaveof no one 命令。
  • 將其他從節(jié)點(diǎn)設(shè)置為新主節(jié)點(diǎn)的從節(jié)點(diǎn)。
  • 并保持對舊主節(jié)點(diǎn)的狀態(tài)關(guān)注,如果舊主節(jié)點(diǎn)恢復(fù),將舊主節(jié)點(diǎn)也更新為新主節(jié)點(diǎn)的從節(jié)點(diǎn)。

Redis-Proxy

Redis-Proxy 組件是自建 Redis 系統(tǒng)中的代理服務(wù),負(fù)責(zé)接受客戶端連接,然后轉(zhuǎn)發(fā)客戶端命令到后端相應(yīng)的 Redis-Server 節(jié)點(diǎn),使得后端 Redis-Server 集群部署架構(gòu)對業(yè)務(wù)透明,Proxy 支持 Redis RESP 協(xié)議,業(yè)務(wù)訪問 Proxy 就像訪問一個(gè)單點(diǎn) Redis 服務(wù)一樣,業(yè)務(wù)可以把一個(gè)自建 Redis 集群當(dāng)作一個(gè)容量無限大的單點(diǎn) Redis 實(shí)例即可。

自建 Redis 為每個(gè)實(shí)例部署一組獨(dú)立的 Proxy 節(jié)點(diǎn),Proxy 是一個(gè)無狀態(tài)服務(wù),可以很方便的進(jìn)行水平擴(kuò)容,提高業(yè)務(wù)訪問自建 Redis 系統(tǒng)的 QPS。

在自建 Redis 中,每個(gè)集群可能包含多個(gè) Group,每個(gè) Group 對應(yīng)一組主從 Redis-Server 節(jié)點(diǎn),每個(gè) Group 負(fù)責(zé)一部分 Key,同時(shí),整個(gè)集群劃分為 1024 個(gè)槽(slot),每個(gè) Group 負(fù)責(zé)其中一部分槽(slot),用戶寫入的 Key 通過以下算法來計(jì)算對應(yīng)的 slot,然后存儲(chǔ)到對應(yīng)節(jié)點(diǎn)。

slot 計(jì)算公式: slot(key) = crc32(key) % 1024

圖片圖片

Proxy 接收到用戶命令后,提取訪問的 Key,通過上面同樣算法計(jì)算相應(yīng)的 slot,獲取負(fù)責(zé)該 slot 的對應(yīng) Redis-Server 實(shí)例的連接,再將用戶命令轉(zhuǎn)發(fā)到對應(yīng)的 Redis-Server 實(shí)例上執(zhí)行,讀取 Redis-Server 返回的結(jié)果發(fā)送給用戶。

DBA 團(tuán)隊(duì)針對 Proxy 組件做了大量性能優(yōu)化,相比市面上開源的支持 Redis RESP 協(xié)議的 Proxy 版本,臨時(shí)對象內(nèi)存分配減少了約 20 倍,極大的減輕 GC 壓力以及 GC 消耗的 CPU;大量短鏈接場景下,QPS 提升約10%。

同時(shí),自建 Redis-Proxy 還支持同城雙活、異步雙寫等特色功能。

同城雙活

自建 Redis 為了保證數(shù)據(jù)的高可用和高可靠,每個(gè) Redis 實(shí)例中每個(gè)分組采用至少一主一從的部署方案,且主從節(jié)點(diǎn)分別部署在不同可用區(qū),在默認(rèn)的訪問模式下,業(yè)務(wù)讀寫都訪問主節(jié)點(diǎn),從節(jié)點(diǎn)僅僅作為熱備節(jié)點(diǎn)。

為了提升業(yè)務(wù)在多可用區(qū)部署場景下訪問緩存性能與降低延遲,以及最大化利用從節(jié)點(diǎn)的價(jià)值,自建 Redis-Proxy 支持同城雙活功能。自建 Redis 同城雙活采用單寫就近讀的方案實(shí)現(xiàn),實(shí)現(xiàn)原理圖如下所示:

圖片圖片

注:需要通過以下方式之一來實(shí)現(xiàn)動(dòng)態(tài)配置

  • 通過容器的 ServiceName 實(shí)現(xiàn)同 AZ Proxy 節(jié)點(diǎn)優(yōu)先訪問 (優(yōu)先)。
  • 通過云廠商的 PrivateZone 實(shí)現(xiàn)智能 DNS 解析(容器和非容器應(yīng)用都行)。

Redis-Server

  • 采用至少一主一從的部署方案,并且主從節(jié)點(diǎn)跨可用區(qū)部署,分別部署在與業(yè)務(wù)對應(yīng)的可用區(qū)。

Redis-Proxy

  • Redis-Proxy 同樣采用多可用區(qū)部署,與業(yè)務(wù)可用區(qū)相同。
  • 各可用區(qū) Proxy 將寫請求自動(dòng)路由到主節(jié)點(diǎn),依然寫主節(jié)點(diǎn)。
  • 讀請求優(yōu)先就近訪問本可用區(qū)從節(jié)點(diǎn),本可用區(qū)無可用從節(jié)點(diǎn)時(shí),支持自動(dòng)訪問主節(jié)點(diǎn)或優(yōu)先訪問其他可用區(qū)從節(jié)點(diǎn)。

異步雙寫

針對業(yè)務(wù)從云 Redis 遷移到自建 Redis、以及大集群拆分場景,對于數(shù)據(jù)可靠性要求高的業(yè)務(wù),Proxy 支持雙寫功能。

以從云 Redis 遷移到自建 Redis 為例,遷移期間 Proxy 同時(shí)寫云 Redis 和自建 Redis,保證兩邊數(shù)據(jù)實(shí)時(shí)一致,從而可以隨時(shí)回滾,做到平滑遷移。

Proxy 雙寫功能具備以下特性:

  • Proxy 雙寫功能采用異步雙寫操作實(shí)現(xiàn),性能優(yōu)異,雙寫操作對業(yè)務(wù)幾乎無影響。
  • Proxy 支持轉(zhuǎn)發(fā)、只讀、雙寫等多種模式,業(yè)務(wù)接入自建 Redis 后,自建 Redis 通過在線動(dòng)態(tài)更改配置,平滑的完成整個(gè)切換過程,無需業(yè)務(wù)頻繁更改配置或者重啟等。
  • Proxy 雙寫支持云 Redis 優(yōu)先或者自建 Redis 優(yōu)先(以云 Redis 遷移為例),且可在線動(dòng)態(tài)調(diào)整。
  • 同時(shí),提供數(shù)據(jù)比對工具,用于雙寫期間數(shù)據(jù)對比,隨時(shí)觀察兩邊數(shù)據(jù)一致性情況;數(shù)據(jù)對比支持多種策略,包括對比類型、對比長度或元素?cái)?shù)量。

Redis-Server

Redis-Server 組件為開源 Redis 版本基礎(chǔ)上,增加槽 slot 同步遷移與異步遷移等相關(guān)功能;支持原生開源 Redis 的所有特性,比如支持 String、Hash、List、Set、ZSet 等常用數(shù)據(jù)結(jié)構(gòu),AOF 持久化、主從復(fù)制、Lua腳本等等。

Share-Nothing 架構(gòu):自建 Redis 系統(tǒng)中,Redis-Server 服務(wù)采用集群化部署,整個(gè)集群由多個(gè) Group 共同組成,每個(gè) Group 中包含一主 N 從多個(gè) Redis-Server 實(shí)例,Group 之間的 Redis-Server 節(jié)點(diǎn)相互沒有通信,為 Share-Nothing 架構(gòu)。同時(shí),整個(gè)集群劃分為 1024 個(gè)槽(slot),每個(gè) Group 負(fù)責(zé)其中一部分槽(slot),用戶寫入的 Key 通過上面提到的算法來計(jì)算對應(yīng)的 slot,然后存儲(chǔ)到負(fù)責(zé)該 slot 的 Group 中的 Redis-Server 節(jié)點(diǎn)上。查詢 Key 時(shí),通過同樣的算法去對應(yīng)的節(jié)點(diǎn)上查詢。

Async-Fork 特性

在 Redis 中,在 AOF 文件重寫、生成 RDB 備份文件以及主從全量同步過程中,都需要使用系統(tǒng)調(diào)用 Fork 創(chuàng)建一個(gè)子進(jìn)程來獲取內(nèi)存數(shù)據(jù)快照,在 Fork() 函數(shù)創(chuàng)建子進(jìn)程的時(shí)候,內(nèi)核會(huì)把父進(jìn)程的「頁表」復(fù)制一份給子進(jìn)程,如果頁表很大,在現(xiàn)有常見操作系統(tǒng)中,復(fù)制頁表的過程耗時(shí)會(huì)非常長,那么在此期間,業(yè)務(wù)訪問 Redis 讀寫延遲會(huì)大幅增加。

自建 Redis 系統(tǒng)中,Redis-Server 通過優(yōu)化并適配最新的支持 Async-Fork 特性的操作系統(tǒng),極大的提升 Fork 操作性能:

  • Fork 命令耗時(shí)大幅減小,并且不隨數(shù)據(jù)量增長而增長,基本穩(wěn)定在 200 微秒左右;
  • TP100 抖動(dòng)得到明顯改善,TP100 值也不隨數(shù)據(jù)量增長而變大,基本在 1-2 毫秒左右;
  • 相比原生 Redis Fork 耗時(shí)減少 98%。日常運(yùn)維中,添加從節(jié)點(diǎn)、主從切換、RDB 離線分析等常見運(yùn)維操作均對業(yè)務(wù)無感知,不會(huì)造成業(yè)務(wù)性能抖動(dòng)。

圖片圖片

圖片圖片

注:該圖表使用了雙縱坐標(biāo)詳細(xì)內(nèi)容可閱讀《VLDB 頂會(huì)論文 Async-fork 解讀與 Redis 實(shí)踐》。

數(shù)據(jù)遷移

為什么需要做數(shù)據(jù)遷移?主要是為了水平擴(kuò)容,自建 Redis 將每個(gè)集群實(shí)例劃分為固定數(shù)量的槽 slot,每個(gè) Group 負(fù)責(zé)一部分槽,當(dāng)進(jìn)行水平擴(kuò)容時(shí),需要重新分配 slot 的分布,并且將一部分 slot 從原有節(jié)點(diǎn)遷移到新節(jié)點(diǎn),同時(shí)將由 slot 負(fù)責(zé)的數(shù)據(jù)一起遷移到新節(jié)點(diǎn)。

數(shù)據(jù)遷移過程包括在源節(jié)點(diǎn)將 Key 對應(yīng)的 Value 使用 Dump 命令進(jìn)行序列化,然后將數(shù)據(jù)發(fā)送到目標(biāo)節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn)使用 Restore 命令將 Key 和 Value 存儲(chǔ)到本地 Redis 中,最后源節(jié)點(diǎn)將該 Key 刪除。

自建 Redis 支持同步遷移與異步遷移兩種方式。

圖片圖片

圖片圖片

同步遷移:即在上述整個(gè)遷移過程中,源端的 Migrate 命令處于阻塞狀態(tài),直到目標(biāo)端成功加載數(shù)據(jù),并且返回成功,源節(jié)點(diǎn)刪除該 Key 后,Migrate 命令才響應(yīng)客戶端成功。由于 Redis 數(shù)據(jù)操作是一個(gè)單線程模型,所有命令的處理的都在主線程中處理,因此 Migrate 命令會(huì)極大地影響其他正常業(yè)務(wù)的訪問。

異步遷移:Migrate 命令僅阻塞 Dump 序列化數(shù)據(jù)、并且異步發(fā)送到目標(biāo)節(jié)點(diǎn),然后即返回客戶端成功;目標(biāo)節(jié)點(diǎn)接收到數(shù)據(jù)后,使用 Restore 命令進(jìn)行保存,保存成功后,主動(dòng)給源節(jié)點(diǎn)發(fā)送一個(gè) ACK 命令,通知源節(jié)點(diǎn)將遷移的 Key 刪除。異步遷移減少源端 Migrate 命令的阻塞時(shí)間,減少了 slot 遷移過程中對業(yè)務(wù)的影響。

三、自動(dòng)化運(yùn)維平臺(tái)

自建 Redis 系統(tǒng)擁有功能完善的自動(dòng)化運(yùn)維平臺(tái)。其主要功能包括:緩存實(shí)例自動(dòng)化部署、快速水平擴(kuò)容與垂直擴(kuò)容、多維度資源管理、診斷與分析等。

運(yùn)維平臺(tái)架構(gòu)

自建 Redis 自動(dòng)化運(yùn)維平臺(tái)包括Redis 管控平臺(tái)、Kv-Admin、Kv-Agent、Prometheus 等組件,部署架構(gòu)如下圖所示:

圖片圖片

Redis 管控平臺(tái)

Redis 管控平臺(tái)是自建 Redis 綜合運(yùn)維管理平臺(tái),自建 Redis 的可視化操作均在 Redis 管控平臺(tái)上完成,包括實(shí)例部署、擴(kuò)容、數(shù)據(jù)遷移等在內(nèi)的所有日常運(yùn)維操作均可在管理平臺(tái)上完成。

Kv-Admin

Kv-Admin 是自動(dòng)化運(yùn)維平臺(tái)的核心組件,負(fù)責(zé)處理所有前端發(fā)送過來的請求,核心功能包括:

  • 負(fù)責(zé)完成實(shí)例部署時(shí)任務(wù)調(diào)度、機(jī)器推薦、端口分配、SLB 推薦與綁定。
  • 實(shí)例列表展示、實(shí)例基本信息查詢。
  • 數(shù)據(jù)離線分析與保存。
  • 資源池管理及生成資源報(bào)表。

Kv-Agent

每個(gè) ECS 上會(huì)部署一個(gè) Kv-Agent 組件,Kv-Agent 負(fù)責(zé)完成實(shí)例部署、實(shí)例啟停等操作;基于心跳元數(shù)據(jù)的 Exporter 自動(dòng)注冊與解除;

同時(shí),Kv-Agent 包含 Exporter 模塊,負(fù)責(zé) Redis-Server 節(jié)點(diǎn)的監(jiān)控信息采集,然后將數(shù)據(jù)規(guī)范化后通過端點(diǎn)暴露給 Prometheus。

APM / Prometheus

APM 監(jiān)控平臺(tái)或者 Prometheus 負(fù)責(zé)從 Exporter 暴露的端點(diǎn)拉取監(jiān)控?cái)?shù)據(jù);自建 Redis 監(jiān)控與告警均接入公司 APM 平臺(tái)。

實(shí)例自動(dòng)化部署

一個(gè)緩存實(shí)例的部署非常復(fù)雜,涉及機(jī)器選擇、配置文件準(zhǔn)備、節(jié)點(diǎn)安裝與啟動(dòng)、槽位分配、主從關(guān)系設(shè)置、SLB 分配與綁定、以及相關(guān)組件的部署等一系列動(dòng)作。

自動(dòng)化運(yùn)維平臺(tái)支持安裝包版本管理,在部署頁面選擇合適的包版本、配置對應(yīng)實(shí)例可用區(qū)、規(guī)格等基本信息后,一鍵操作即可完成 ConfigServer、Redis-Proxy、Redis-Server 等組件的部署,自動(dòng)完成組件部署過程中涉及的上述機(jī)器推薦、配置文件準(zhǔn)備、節(jié)點(diǎn)安裝與啟動(dòng)等所有過程。

圖片

為了保證實(shí)例中所有組件的高可用,自動(dòng)化部署過程中包含一些必要的部署規(guī)則:

  • ConfigServer 組件會(huì)部署在三個(gè)不同的可用區(qū)。
  • 避免同一個(gè)集群實(shí)例的多個(gè) Redis-Server、Redis-Proxy 節(jié)點(diǎn)部署在相同的 ECS 上,每個(gè) ECS 上可部署的同一個(gè)集群實(shí)例的 Server 或 Proxy 組件數(shù)量可配置。
  • 每個(gè) ECS 最多分配總內(nèi)存容量的 90%,預(yù)留一定的數(shù)據(jù)增長空間。
  • 根據(jù) ECS 可用內(nèi)存,優(yōu)先推薦剩余可用內(nèi)存多的 ECS。
  • 根據(jù) Group 數(shù)量,自動(dòng)均衡分配每個(gè) Group 負(fù)責(zé)的 slot 數(shù)量。
  • 根據(jù) SLB 近三天的流量峰值,自動(dòng)綁定最優(yōu)的 SLB。

實(shí)例擴(kuò)容

當(dāng)業(yè)務(wù)數(shù)據(jù)增長導(dǎo)致實(shí)例內(nèi)存使用率超過一定閾值后,根據(jù)單節(jié)點(diǎn)分配的最大內(nèi)存、實(shí)例的 Group 數(shù)量等情況綜合考慮,運(yùn)維可選擇為實(shí)例進(jìn)行垂直擴(kuò)容或者水平擴(kuò)容。

垂直擴(kuò)容,即動(dòng)態(tài)修改單節(jié)點(diǎn)的 Maxmemory 參數(shù),提高單節(jié)點(diǎn)的容量。

水平擴(kuò)容,即增加實(shí)例的 Group 數(shù)量,對應(yīng)增加主從節(jié)點(diǎn)數(shù)量,然后重新進(jìn)行 slot 分配和對應(yīng)的數(shù)據(jù)遷移動(dòng)作。

一般來說,當(dāng)單節(jié)點(diǎn)規(guī)格小于 4G 時(shí),會(huì)優(yōu)先考慮垂直擴(kuò)容,簡單快速,對業(yè)務(wù)無任何影響。

自動(dòng)化運(yùn)維平臺(tái)支持方便的垂直擴(kuò)容和水平擴(kuò)容操作。

對于垂直擴(kuò)容,運(yùn)維平臺(tái)支持批量調(diào)整實(shí)例 Redis-Server 節(jié)點(diǎn)的容量。

對于水平擴(kuò)容,同實(shí)例初始部署一樣,運(yùn)維平臺(tái)支持新增 Redis-Server 節(jié)點(diǎn)的自動(dòng)化部署、主從關(guān)系設(shè)置等,同時(shí)支持按照實(shí)例總節(jié)點(diǎn)數(shù)重新自動(dòng)均衡分配每個(gè) Group 負(fù)責(zé)的 slot 數(shù)量,并自動(dòng)完成數(shù)據(jù)遷移,數(shù)據(jù)遷移進(jìn)度可視化。

資源管理

自建 Redis 運(yùn)維平臺(tái)目前管理的 ECS 超過數(shù)千臺(tái),運(yùn)維平臺(tái)支持 ECS 資源批量添加、資源分配、資源鎖定、資源推薦等資源管理功能,以及提供資源利用率報(bào)表。

運(yùn)維平臺(tái)支持 ECS 可用內(nèi)存的管理與分配,運(yùn)維平臺(tái)記錄每臺(tái) ECS 的剩余可分配內(nèi)存容量,Redis-Server 實(shí)例部署時(shí),優(yōu)先推薦剩余可分配內(nèi)存多的 ECS,分配出去的 ECS 更新對應(yīng)的可用內(nèi)存容量。

Redis-Proxy 和 ConfigServer 部署時(shí),優(yōu)先推薦部署的實(shí)例數(shù)量較少的 ECS。

診斷與分析

計(jì)算實(shí)例綜合得分:運(yùn)維平臺(tái)通過分析所有實(shí)例關(guān)鍵監(jiān)控指標(biāo)前一天的峰值,再根據(jù)各項(xiàng)指標(biāo)的權(quán)重,每天自動(dòng)計(jì)算所有實(shí)例的得分,根據(jù)各實(shí)例的得分即可快速了解各實(shí)例的使用健康度。

參與計(jì)算得分的關(guān)鍵指標(biāo)包括:Proxy CPU、Redis CPU、Redis 內(nèi)存使用率、Proxy 占用內(nèi)存、Proxy GC 次數(shù)、最大 RT、Redis 流入流量、Redis 流出流量等。

慢日志:運(yùn)維平臺(tái)支持 Redis-Server 記錄的慢日志和 Redis-proxy 記錄的慢日志查詢。

RDB 離線分析:運(yùn)維平臺(tái)支持生成 RDB 文件,并自動(dòng)進(jìn)行數(shù)據(jù)離線分析。分析結(jié)果包含 Top100 Value 最大的 Key 和元素個(gè)數(shù)最多的 Key;每種類型 Key,不同 Key 前綴包含的 Key 數(shù)量等。

圖片圖片

四、監(jiān)控與告警

自建 Redis 系統(tǒng)接入 APM 監(jiān)控平臺(tái),提供了各種維度的監(jiān)控指標(biāo)和告警功能,及時(shí)對異常情況進(jìn)行預(yù)警,當(dāng)出現(xiàn)問題時(shí),也能幫助快速定位問題。

監(jiān)控

ECS:CPU、系統(tǒng) Load、內(nèi)存、網(wǎng)絡(luò)流量、網(wǎng)絡(luò)丟包、磁盤 IO 等。

Proxy:QPS、TP999/TP9999/TP100、連接數(shù)、CPU、 內(nèi)存、GC、Goroutine 數(shù)量等。

Server:CPU、內(nèi)存、網(wǎng)絡(luò)、連接數(shù)、QPS、Key 數(shù)量、命中率、訪問 RT等。

告警

自建 Redis 包含大量的告警指標(biāo):

  • ECS CPU 使用率、內(nèi)存使用率、系統(tǒng) Load(5 分鐘平均值)、流量。
  • SLB 流量。
  • Server、Proxy、ConfigServer 節(jié)點(diǎn)宕機(jī)。
  • 主節(jié)點(diǎn)缺失從節(jié)點(diǎn)、主節(jié)點(diǎn)可用區(qū)不一致、主從角色切換。

五、穩(wěn)定性治理

資源隔離

自建 Redis 目前所有組件都是部署在 ECS 上,為了提高資源利用率節(jié)約成本,大部分業(yè)務(wù)域的 Redis 集群都是混布的。自建 Redis 運(yùn)維平臺(tái)目前管理 ECS 超過數(shù)千臺(tái),接入的業(yè)務(wù)也涵蓋營銷、風(fēng)控、算法、投放、社區(qū)、大數(shù)據(jù)等等,每個(gè)業(yè)務(wù)的實(shí)例等級(jí)、QPS、流量等指標(biāo)各有差異,少數(shù)業(yè)務(wù) Redis 可能存在突發(fā)寫入流量高、Proxy CPU毛刺等現(xiàn)象,可能會(huì)引起相同 ECS 上其他實(shí)例性能抖動(dòng)。

按標(biāo)簽分類:為了方便資源隔離與資源分配時(shí)管理,所有 ECS 資源按標(biāo)簽進(jìn)行分類管理,針對特殊需求業(yè)務(wù)、大流量實(shí)例、通用資源池等劃分不同的資源標(biāo)簽,實(shí)例部署時(shí)選擇合適的標(biāo)簽、或者頻繁出現(xiàn)告警時(shí)調(diào)整到對應(yīng)資源池進(jìn)行隔離,避免相互影響。

Proxy CPU 限制:為了防止單個(gè) Redis-Proxy 進(jìn)程搶占過多 CPU 資源,Redis-Proxy 支持配置 Golang GOMAXPROCS 參數(shù)來設(shè)置單個(gè)進(jìn)程允許使用的最大 CPU 核數(shù)。

巡檢

為了提前發(fā)現(xiàn)潛在的風(fēng)險(xiǎn),除了日常告警外,我們支持自動(dòng)巡檢工具和巡檢信息頁面,建立了定期巡檢機(jī)制。

實(shí)例綜合得分排名:運(yùn)維平臺(tái)通過分析所有實(shí)例關(guān)鍵監(jiān)控指標(biāo)前一天的峰值,再根據(jù)各項(xiàng)指標(biāo)的權(quán)重,每天自動(dòng)計(jì)算所有實(shí)例的得分,在巡檢信息頁面進(jìn)行展示,通過得分排序即可快速發(fā)現(xiàn)風(fēng)險(xiǎn)實(shí)例。

圖片圖片

ECS 資源大盤:實(shí)時(shí)展示所有 Redis-Proxy 和 Redis-Server 使用 ECS 的重要指標(biāo),通過排序即可快速瀏覽各 ECS 各項(xiàng)重要指標(biāo),如 CPU 使用率、內(nèi)存使用率、IOPS 使用率、磁盤讀取/寫入、上傳/下載帶寬等。

自動(dòng)巡檢工具:定期檢查所有實(shí)例的配置、節(jié)點(diǎn)數(shù)量等基本信息,對于如從節(jié)點(diǎn)缺失、可用區(qū)不一致、節(jié)點(diǎn)配置不一致等異常情況進(jìn)行提示。

故障演練

為了提高自建 Redis 系統(tǒng)在異常場景下的可用性、檢驗(yàn)自建 Redis 系統(tǒng)在各異常場景的恢復(fù)時(shí)間,我們不定期進(jìn)行多次故障演練。

故障演練涵蓋所有組件在ECS、網(wǎng)絡(luò)、磁盤等出現(xiàn)故障的場景,以及多個(gè)組件組合同時(shí)出現(xiàn)這些故障的場景。

經(jīng)過故障演練檢驗(yàn),自建 Redis 系統(tǒng) Redis-Server 主節(jié)點(diǎn)故障恢復(fù)時(shí)間 12s,Redis-Proxy 故障業(yè)務(wù)恢復(fù)時(shí)間 5s 內(nèi)。

六、總結(jié)

本文詳細(xì)介紹了自建 Redis 架構(gòu)和現(xiàn)有一些重要特性,我們還在持續(xù)不斷地迭代優(yōu)化和豐富支持的特性,為我們的業(yè)務(wù)提供一個(gè)功能更強(qiáng)大、性能更優(yōu)異的分布式緩存系統(tǒng)。未來我們還會(huì)迭代的方向可能包括且不限于:

  • 目前 Redis-Server 為了兼容云上版本和分布式架構(gòu)做了很多定制化,所以未使用最新社區(qū)版本,未來會(huì)升級(jí)到最新的社區(qū)版本如 7.0。
  • 熱 Key 訪問一直是 Redis 使用中對業(yè)務(wù)影響較大的一個(gè)問題,未來我們考慮支持熱 Key 統(tǒng)計(jì)與讀熱 Key 本地緩存。
  • Golang 版本 Proxy 在高 QPS 請求時(shí),GC 是性能提升的一個(gè)瓶頸,未來考慮使用 Rust 重構(gòu) Proxy。
責(zé)任編輯:武曉燕 來源: 得物技術(shù)
相關(guān)推薦

2023-02-06 18:35:05

架構(gòu)探測技術(shù)

2023-02-08 18:33:49

SRE探索業(yè)務(wù)

2022-10-26 18:44:33

藍(lán)紙箱設(shè)計(jì)數(shù)據(jù)

2023-03-30 18:39:36

2025-11-11 01:55:00

2022-12-09 18:58:10

2023-01-13 18:32:40

計(jì)數(shù)系統(tǒng)設(shè)計(jì)

2024-11-12 14:19:53

2025-03-13 06:48:22

2023-12-27 18:46:05

云原生容器技術(shù)

2023-05-12 18:42:13

得物AI平臺(tái)

2023-11-27 18:38:57

得物商家測試

2022-12-14 18:40:04

得物染色環(huán)境

2023-08-09 20:43:32

2023-07-19 22:17:21

Android資源優(yōu)化

2025-07-31 00:00:25

2025-02-20 09:17:50

2022-10-20 14:35:48

用戶畫像離線

2023-03-13 18:35:33

灰度環(huán)境golang編排等

2025-03-20 10:47:15

點(diǎn)贊
收藏

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

怡红院av一区二区三区| 激情欧美一区二区三区在线观看| 偷拍亚洲欧洲综合| 国产欧美韩日| 欧美黑人又粗又大又爽免费| 男男激情在线| 国内精品伊人久久久久av一坑| 亚洲人成电影网| 加勒比av中文字幕| 欧美aa免费在线| 中文字幕一区二区三区四区不卡 | 亚洲mv在线看| aaa国产视频| 美女视频一区免费观看| 不卡伊人av在线播放| 日本在线观看a| 老司机免费在线视频| 日本美女一区二区三区视频| 色综合老司机第九色激情| 国产精品20p| 风间由美一区二区av101 | 欧美一区永久视频免费观看| 无码专区aaaaaa免费视频| 国产女主播在线写真| 国产69精品久久久久毛片| 国产美女91呻吟求| 日韩人妻精品中文字幕| 精品电影一区| 九九热最新视频//这里只有精品 | 国产精品sss在线观看av| 精品视频999| 久久综合久久色| 黄毛片在线观看| 亚洲一区影音先锋| 欧美xxxx吸乳| 337p日本欧洲亚洲大胆鲁鲁| 水野朝阳av一区二区三区| 久久99精品国产99久久6尤物| 999在线精品视频| xxxxxx欧美| 午夜精品久久久久久久99水蜜桃| 国产亚洲一区二区三区在线播放| 日韩av一区二区在线播放| 99久久综合狠狠综合久久aⅴ| 欧美一区二区三区啪啪| 69久久久久久| 欧美在线va视频| 91久久精品一区二区三区| 欧美人与物videos另类| 人妻一区二区三区四区| 成人av资源在线观看| 国产v亚洲v天堂无码| 中国一级特黄毛片| 欧美一区二区麻豆红桃视频| 日韩精品视频在线观看网址 | 成人性生交大片免费观看网站| 91麻豆国产在线观看| 国产精品v欧美精品v日韩| 国产精品高潮呻吟久久久| 久久电影国产免费久久电影| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 国产91免费视频| 99久久久无码国产精品免费| 国产精品一区二区久久精品爱涩 | 在线观看中文字幕码| 欧美专区在线| 国产精品免费观看在线| 亚洲天堂中文网| 国产精选一区二区三区| 成人午夜电影在线播放| 天天干天天做天天操| 91蝌蚪porny九色| 五月婷婷综合色| av中文字幕在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 青青在线免费观看视频| 精品欧美一区二区三区在线观看 | 手机在线视频一区| 国产精品探花在线| 国产色91在线| 欧美亚洲国产免费| 网友自拍视频在线| 一区二区三区四区视频精品免费 | 牛牛在线精品视频| 亚洲国产sm捆绑调教视频| 凹凸国产熟女精品视频| 成人va天堂| 3d动漫精品啪啪1区2区免费 | 福利精品一区| 日韩午夜电影av| 国产色视频一区二区三区qq号| 日韩视频1区| 日韩福利视频在线观看| 夫妇露脸对白88av| 欧美日韩mv| 亚洲人成电影网站色www| 欧美性受xxxx黑人| 激情欧美一区二区三区| 国产精品成人一区二区| 日本少妇激情舌吻| 日韩精品久久久久久| 亚洲自拍偷拍福利| 欧美日韩伦理片| 亚洲免费观看高清完整版在线观看 | 又爽又大又黄a级毛片在线视频| 99精品久久只有精品| 欧洲亚洲一区二区三区四区五区| 欧美色综合一区二区三区| 亚洲色图丝袜美腿| 欧美久久久久久一卡四| 美女免费久久| 欧美网站在线观看| 男男受被啪到高潮自述| 蜜乳av综合| 久久久久久久久久国产精品| 在线观看视频中文字幕| 久久久亚洲欧洲日产国码αv| 免费看成人午夜电影| 老熟妇高潮一区二区高清视频| 国产一区二区福利| 国产精品视频午夜| 亚洲欧洲国产综合| 一区二区激情小说| 亚洲视频一二三四| 国产99久久| 97在线免费观看视频| 99热这里只有精品在线观看| 久久久久高清精品| 免费在线a视频| 国产厕拍一区| 色综合视频网站| 国产麻豆精品一区| 中文字幕色av一区二区三区| 日韩免费高清在线| 欧美猛男男男激情videos| 91av在线免费观看| 婷婷av一区二区三区| 亚洲国产日韩一级| 精品1卡二卡三卡四卡老狼| 欧美一区精品| 147欧美人体大胆444| 好了av在线| 91精品在线一区二区| 又色又爽的视频| 麻豆精品一二三| 一区二区在线高清视频| 国产精品伊人| 精品处破学生在线二十三| 日本福利片在线观看| 国产在线看一区| 糖心vlog在线免费观看| 国产免费av国片精品草莓男男| 日韩欧美色综合网站| 奇米777在线| 欧美+亚洲+精品+三区| 亚洲字幕在线观看| 怡红院在线播放| 日韩一卡二卡三卡国产欧美| 国产av 一区二区三区| 国产成人精品亚洲午夜麻豆| 国产一区二区不卡视频在线观看| 国产视频网站在线| 色综合av在线| 国产大屁股喷水视频在线观看| 国产欧美日韩一级| 国产日韩欧美夫妻视频在线观看| 国产三级av片| 99久久99久久精品国产片果冻| 亚洲免费精品视频| 国产日韩欧美中文在线| 欧美丰满老妇厨房牲生活| 欧美 日韩 国产 精品| 欧美日韩午夜剧场| 亚洲欧美日韩第一页| 国产精品综合在线视频| 给我免费播放片在线观看| 国产在线|日韩| 久久人人爽亚洲精品天堂| 少妇一级淫片免费放中国| 久久久亚洲高清| 日韩av片专区| 在线看片一区| 天天爽天天狠久久久| 精品国产亚洲一区二区三区大结局| 日韩二区三区在线| 伊人久久一区二区| 亚洲一卡二卡三卡四卡五卡| 狠狠人妻久久久久久综合蜜桃| 欧美日本一区二区高清播放视频| 成人亲热视频网站| 3344国产永久在线观看视频| 777亚洲妇女| 国产精品第72页| 国产欧美中文在线| 成人在线观看一区二区| 视频一区在线播放| 成人免费看片'免费看| 免费毛片在线不卡| 国产99在线免费| 色综合久久久| 久久精品国产91精品亚洲| 好男人在线视频www| 欧美三级在线视频| 国产精品999在线观看| 综合色中文字幕| 亚洲午夜久久久久久久国产| 国产91综合一区在线观看| xxx国产在线观看| 久久中文字幕av| 久草精品电影| 中文字幕在线免费观看视频| 在线视频亚洲欧美| 日本福利在线观看| 精品国产电影一区二区| 一区二区三区亚洲视频| 色哟哟欧美精品| 日本午夜视频在线观看| 亚洲一区二区三区四区不卡| 国产wwwwxxxx| 亚洲国产精品成人久久综合一区| 国产3p在线播放| 首页综合国产亚洲丝袜| 无码人妻丰满熟妇区毛片18| 国内久久精品| 国产 国语对白 露脸| 91精品国产乱码久久久久久| 免费久久99精品国产自| 日韩欧美在线精品| 国产日韩在线一区二区三区| 涩爱av色老久久精品偷偷鲁| 国产深夜精品福利| 欧美91在线|欧美| 国产精品第1页| 自拍偷自拍亚洲精品被多人伦好爽| 正在播放亚洲1区| 国产日韩精品在线看| 亚洲欧美激情视频| 潘金莲一级淫片aaaaaa播放| 五月婷婷激情综合| 国产在线欧美在线| 亚洲不卡一区二区三区| 久久久久久久久99| 亚洲精品菠萝久久久久久久| 午夜激情福利网| 亚洲精品免费电影| 久久精品在线观看视频| 国产精品久久久久婷婷| 婷婷国产成人精品视频| 中文字幕一区二区三区不卡| 黄色香蕉视频在线观看| 亚洲欧美一区二区在线观看| 亚洲女人久久久| 亚洲婷婷在线视频| 日韩女优一区二区| 一区二区三区欧美日| 国产精品.www| 色综合久久久网| 天天射天天干天天| blacked蜜桃精品一区| 国产精品影视在线观看| 在线观看视频在线观看| 国产白丝网站精品污在线入口 | 午夜视频精品| www.男人天堂网| 欧美有码视频| 国产一级做a爰片久久毛片男| 大片网站久久| 中文字幕在线乱| 欧美在线精品一区| 97国产在线播放| 免费人成黄页网站在线一区二区| 国产精品宾馆在线精品酒店| 日日骚欧美日韩| 伊人网在线综合| 成人av一区二区三区| 亚洲av无码一区二区二三区| 国产女主播一区| 免费在线视频观看| 日韩欧美在线第一页| 国产在线观看第一页| 欧美一区二区三区在线观看视频 | 色偷偷色偷偷色偷偷在线视频| 日韩在线视频免费观看| 久草在线资源站资源站| 91高潮精品免费porn| 最新日韩一区| 国产91视觉| 久久激情电影| 国产精品香蕉国产| 永久免费精品视频| 日韩久久不卡| 国内自拍一区| 亚洲欧美aaa| 久久人人97超碰com| 亚洲精品卡一卡二| 欧美视频在线免费| 国产男男gay体育生白袜| 日韩毛片在线看| 尤物yw193can在线观看| 国产精品www色诱视频| 大桥未久女教师av一区二区| 亚洲成人a**址| 亚洲欧美日韩国产综合精品二区| 激情五月宗合网| 激情综合五月天| 亚欧洲乱码视频| 亚洲午夜精品网| 国产精品国产三级国产aⅴ| 亚洲成人久久一区| 国产婷婷视频在线| 国产精品第一页在线| 欧美1区二区| 欧美乱做爰xxxⅹ久久久| 免费在线观看不卡| 免费看黄色的视频| 五月天激情小说综合| 国产成年妇视频| 波霸ol色综合久久| 成人国产一区| 日韩av一区二区三区在线观看| 国产精品毛片久久| 妓院一钑片免看黄大片| 91视频www| 中国一级免费毛片| 欧美精品一区二区三区久久久| 欧美一区二区黄片| 欧美成人免费大片| 四虎国产精品免费久久5151| 日韩一区不卡| 免播放器亚洲| 国产ts丝袜人妖系列视频| 亚洲成av人综合在线观看| 国产草草影院ccyycom| 美女撒尿一区二区三区| 高清不卡一区| 日本在线视频www色| 激情欧美一区二区三区在线观看| 欧亚乱熟女一区二区在线| 一区二区三区不卡在线观看| 97人妻精品一区二区三区动漫 | 黄色在线小视频| 欧美一级片在线播放| 日韩成人午夜| 欧美三级午夜理伦三级| 久久久综合视频| 免费在线观看av的网站| 中文字幕精品在线视频| 日韩一区二区三区四区五区| 中文字幕一区二区三区有限公司 | 日韩欧美综合| 在线观看国产一级片| 中文字幕在线不卡国产视频| 国产精品久久久久久无人区| 久久91精品国产| 成人春色在线观看免费网站| 精品久久一二三| 久久亚洲精品小早川怜子| 亚洲天堂一区在线观看| 亚洲男人的天堂在线| xxxxx.日韩| 黄频视频在线观看| 国产99久久久国产精品免费看| 五月天免费网站| 在线观看91精品国产麻豆| 中文av资源在线| 国产区欧美区日韩区| 奶水喷射视频一区| 亚洲精品自拍视频在线观看| 日韩午夜中文字幕| 欧美激情护士| 亚洲在线观看一区| 国产白丝网站精品污在线入口| 国产尤物在线播放| 亚洲成人国产精品| 成人小电影网站| 综合色婷婷一区二区亚洲欧美国产| 久久久精品性| 91香蕉一区二区三区在线观看| 欧美影院午夜播放| 国产激情在线观看| 激情小说综合区| 久久精品国产99| 国产乡下妇女做爰毛片| 尤物tv国产一区| 免费观看在线一区二区三区| 午夜精品久久久久久久无码| 国产精品久久久久四虎| 人人妻人人澡人人爽久久av| 国产精品美女av| 在线看片成人| 日本中文在线视频| 精品亚洲一区二区三区在线观看| 爱啪视频在线观看视频免费| 欧洲精品在线一区| 国产精品12区| 中文字幕乱码在线观看| 欧美激情网友自拍| 欧美黄色录像片| 欧美多人猛交狂配| 欧美成人精品二区三区99精品|