13:30+-+14:20+肖博-基于Redis+Cluster的災(zāi)備與雙活實(shí)踐_第1頁
13:30+-+14:20+肖博-基于Redis+Cluster的災(zāi)備與雙活實(shí)踐_第2頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于RedisCluster的災(zāi)備與同城雙活實(shí)踐肖博@vivo目錄Redis服務(wù)架構(gòu)RedisClusterArchitecture災(zāi)備與多活的價(jià)值SignificanceofDisasterRecovery災(zāi)備與雙活實(shí)踐Active-ActiveGeo-DistributedDataBase010203CONTENTSRedis服務(wù)架構(gòu)RedisClusterArchitecturePART01RedisServerRedisSentinelRedisServerRedisServerRedisSentinelRedisSentinelMasterSlaveSlaveSSSMMM架構(gòu)演進(jìn)災(zāi)備與多活的價(jià)值SignificanceofDisasterRecoveryPART02災(zāi)備與多活的價(jià)值可用性:

當(dāng)多個(gè)副本或者整機(jī)房故障時(shí),保證Redis服務(wù)可用性用戶體驗(yàn):

跨機(jī)房、跨區(qū)域請求Redis服務(wù)響應(yīng)時(shí)間保障災(zāi)備與雙活的實(shí)踐Active-ActiveGeo-DistributedDataBasePART03災(zāi)備與雙活演進(jìn)被動(dòng)持久化主動(dòng)持久化跨機(jī)房災(zāi)備雙活架構(gòu)被動(dòng)持久化-RDBrdbSaveSnapshot(by

a

forked

process)rdbLoad場景:主從副本都失效的情況下的Redis服務(wù)恢復(fù)問題:業(yè)務(wù)請求Redis響應(yīng)時(shí)間波動(dòng)響應(yīng)時(shí)間波動(dòng)的原因copy

on

writeTransparentHugepagesovercommit_memoryovercommit_ratiordbcompressionsaveProcess1Process2PhysicalmemoryPage

APage

BPage

CPage

DCopy

of

Page

DCOW:After

Process1

modifies

Page

D主動(dòng)持久化-RDBrdbSaveSnapshot(by

a

forked

process)rdbLoad場景:主從副本都失效的情況下的Redis服務(wù)恢復(fù)優(yōu)化點(diǎn):基于策略的主動(dòng)bgsave問題:數(shù)據(jù)完整性較差同周期內(nèi)QPS小于特定值cpu資源使用率小于特定值OSMemory使用情況角色選擇,僅在slave節(jié)點(diǎn)執(zhí)行跨機(jī)房災(zāi)備MMMMMM任務(wù)調(diào)度器workworkwork數(shù)據(jù)校驗(yàn)DB任務(wù)調(diào)度模塊:

備份行為控制、與agent模塊交互,源集群到目的集群的備份調(diào)度模塊,源集群的拓?fù)錉顟B(tài)work:

從源集群的單個(gè)節(jié)點(diǎn)向目標(biāo)集群的rdb復(fù)制和后續(xù)的寫命令同步數(shù)據(jù)校驗(yàn):

集群到集群數(shù)據(jù)定期抽樣校驗(yàn)IDC1IDC2跨機(jī)房災(zāi)備架構(gòu)圖源集群目標(biāo)集群原理介紹SlaveMaster1.同步命令:sync3.傳輸RDB文件RDB文件加載完畢4.發(fā)送緩沖區(qū)命令1.flush

old

data2.加載RDB2.生成RDB文件啟動(dòng)緩沖區(qū)全量增量使用redis主從同步協(xié)議

偽裝slave實(shí)時(shí)同步數(shù)據(jù)使用redis

cluster原理感知集群拓?fù)渥兓髁靠刂婆c增量持久化Redis主從同步流程集群拓?fù)涓兄簭墓?jié)點(diǎn)故障集群主節(jié)點(diǎn)故障集群擴(kuò)容集群縮容slot遷移手動(dòng)FailovertimerepochVS數(shù)據(jù)校驗(yàn)定期抽樣對比校驗(yàn),抽樣比與校驗(yàn)頻次通過平臺(tái)下發(fā)控制在目標(biāo)集群按照參數(shù)配置,抽樣N%的Key,使用randomkey命令在目標(biāo)集群獲取該Key的類型在目標(biāo)集群和源集群分別獲取該Key對應(yīng)的Value值的SHA1值進(jìn)行對比如果相同則對比下一組Key,不同則重復(fù)對比最多10次,10次后依然不相同,

則記錄到日志并匯總到一致性監(jiān)控任務(wù)中源節(jié)點(diǎn)Failover基本原理模擬redis主從全量原理,清理掉全部舊數(shù)據(jù)源集群&目標(biāo)集群拓?fù)洚悩?gòu),flush

slot

dataGet

failover

node

slot

Slot

listCLUSTERCOUNTKEYSINSLOTCLUSTERGETKEYSINSLOTyesPipeline

del外循環(huán)結(jié)束noyes內(nèi)循環(huán)結(jié)束no待解決的問題源端slot遷移,數(shù)據(jù)延遲導(dǎo)致的時(shí)序問題源端slot遷移,未回放完成的RDB時(shí)序問題目標(biāo)端集群down,數(shù)據(jù)一致性問題目標(biāo)及區(qū)間slot遷移,數(shù)據(jù)一致性問題Redis

Cluster雙活架構(gòu)IDC1MMMIDC2MMMProxyProxyProxyProxyrwrwMQ

manager

Transfer

manager

Transfer支持就近讀寫支持統(tǒng)一寫,就近讀底層雙向同步服務(wù)提供有限數(shù)據(jù)類型的最終一致性w客觀因素與需解決的問題客觀因素跨區(qū)域的網(wǎng)絡(luò)時(shí)延和丟包數(shù)據(jù)沖突不可避免Redis無法保證數(shù)據(jù)強(qiáng)一致需解決問題Redis

binlog環(huán)路控制沖突檢測與解決斷點(diǎn)續(xù)傳模塊與數(shù)據(jù)流向RedisRedisagentagentEvent

HeaderEvent

BodyEvent

HeaderEvent

BodyEvent

HeaderEvent

BodyEvent

HeaderEvent

BodyMQManagerTransferAgent負(fù)責(zé)采集節(jié)點(diǎn)產(chǎn)生的本地

數(shù)據(jù)寫入消息隊(duì)列并上報(bào)同步點(diǎn)位至ManagerTransfer負(fù)責(zé)消費(fèi)消息隊(duì)列數(shù)據(jù),寫入Redis,與manager配合

保證恰好消費(fèi)一次Manager負(fù)責(zé)任務(wù)控制與調(diào)度、隊(duì)列監(jiān)控,規(guī)則下發(fā)等Tuna

BinlogEvent

HeaderEvent

BodyEvent

HeaderEvent

BodygroupID:在cluster集群模式下,每一個(gè)分配到slot的master節(jié)點(diǎn)和他相應(yīng)的slave節(jié)點(diǎn),會(huì)由集群分配一個(gè)固定的idclusterID:每個(gè)集群的編號serverID:集群實(shí)例IDtimeStamp:64位時(shí)間戳,精度到毫秒slot:指令的slot編號version:指令的版本opID:指令的自增編號opType:指令的類型flag:event標(biāo)識reserve:保留字段eventLengthclusterIdgroupIdserverIdflagtimeStampversionopTypeopIDreserve40ByteTuna

Agent核心要求環(huán)路控制數(shù)據(jù)不丟功能點(diǎn)環(huán)路控制(篩選Region與LocalCommand)同步位點(diǎn)上報(bào)manager數(shù)據(jù)寫消息隊(duì)列(數(shù)據(jù)不丟)按規(guī)則進(jìn)行同步binlog清理MQTuna-binAgentRPCBinlog

HandlerBinlog

HandlerManager2.msg1.eventbody3.push

postionTunaTransfer核心要求數(shù)據(jù)不丟數(shù)據(jù)不重(exactlyonce)功能點(diǎn)斷點(diǎn)續(xù)傳冪等重試bulkinsert流量控制MQRedis

clusterTransferManager1.

msg2.

Ask

/Write

postion3.

event

bodyTuna

Proxy支持就近讀寫策略支持一致寫,就近讀訪問策略支持訪問控制,支持密碼或者Token支持業(yè)務(wù)節(jié)點(diǎn)訪問控制,按照業(yè)務(wù)授權(quán)讀從節(jié)點(diǎn)且負(fù)載均衡屏蔽Redis底層數(shù)據(jù)遷移高危命令屏蔽ProxyProxyClusterAClusterB應(yīng)用Managerrwrw數(shù)據(jù)沖突PUT:X

=

100PUT:X

=

200GET

X?GET

X?SYNCSYNCData

Center1Data

Center2SYNCSYNC0ms30msCRDT原理:交換律、冪等律、結(jié)合律額外附加信息支持的數(shù)據(jù)類型與命令數(shù)據(jù)類型支持的操作stringSET、DELhashHSET、HMSET,HDEL、HINCRBY、HINCRBYFLOATsetSADD、SREM、SPOPsortsetZADD、ZDEL、ZINCRBYcounterINCR,DECR,INCRBY,DECRBY,INCRBYFLOAT注:業(yè)務(wù)層面需保證沖突的數(shù)據(jù)一定是少量的最終一致性命令支持列表SetCommandTimeRedis1Redis2T1set

phone

”X27”T2setphone“iqoo”T3--sync----sync--T4setphone“NEX”T5--sync--T6setphone“X23”交換律:不滿足結(jié)合律:滿足冪等律:滿足添加時(shí)間戳/uniq

id,滿足偏序關(guān)系LWW:Querylooup(e):boolbletb=(t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論