跨越異構鴻溝,Redis 遷移同步過程中的挑戰與解決方案

京東科技開發者發表於2021-02-26

隨著雲端計算十餘年的高速發展,作為目前可見的最新階段,多雲正在快步大踏步前進。而多雲趨勢所帶來得資料雲間遷移,也逐步常態化。因此, 快取 Redis 已成為高併發場景下提升資料訪問速度的標配。


不僅是資料雲間遷移,目前大型系統對於快取強依賴,致使大多數企業都會面臨大量併發讀寫資料時訪問速度慢、資料庫壓力大,以及快取資料不⾜帶來的快取擊穿及雪崩⻛險。其中, Redis 就起到了降低資料庫壓力,提升資料訪問速度的作用。


下圖是某網站業務的解決訪問速度慢的問題,引入快取Redis提升訪問速度的流程:


跨越異構鴻溝,Redis 遷移同步過程中的挑戰與解決方案


但在 Redis 遷移同步過程中,勢必會面臨著許多挑戰:


rdb版本不⼀致導致源 redis dump⽂件在⽬標redis中不能載入

資料節點不⼀致帶來的 redis 主從複製⽅案失效

應⽤快速割接的⽤⼾需求

⾮冪等命令的冪等要求


正因如此, 應運而生。 RedisSyncer 是京東雲用於在 redis 之間資料同步的產品,支援跨版本、異構叢集間的資料同步。它模擬了redis的replication協議,在rdb版本不⼀致時進⾏命令轉換,以實現跨rdb版本遷移,並透過快取value的⽅式完成INCR、INCRBY、DECR、DECRBY等⾮命令的冪等轉換。最終適應雲上與雲下、原生與託管等多種場景,能夠快速靈活地滿足使用者的同步、遷移、擴容的需求。

RedisSyncer案例解析

跨越異構鴻溝,Redis 遷移同步過程中的挑戰與解決方案


某金融機構為保障金融資料安全、符合金融資料規範,需要將原⽣redis叢集遷移⾄該金融機構⾃研的upredis叢集,並保證業務系統平滑過渡。


    項⽬挑戰

  • 版本差異

  • 降版本遷移

  • 叢集節點數不⼀致

  • 極速回退需求


     最終客⼾收益

  • 實現15分鐘完成 256GB+資料遷移

  • 20分鐘完成系統割接

  • 遷移過程“絲般柔順”


     RedisSyncer 操作實戰

  • 必要環境

  • docker

  • docker-compose


使⽤docker-compose 部署服務

git clone 
cd redissyncer
docker-compose up -d


下載並配置cli客⼾端

wget 
releases/download/v0.1.0/redissyncer-cli-0.1.0-linux-amd64.tar.gz


.config.yaml

syncserver: 
token: 379F5E2BD55A4608B6A7557F0583CFC5

⽣成資料

./rsst -c ../config.yml generatedata -i 1 -a 10.0.1.101:6479 -p
redistest0102


編寫要執⾏的任務json redissyncer-cli需要增加taskexamples

{
"sourcePassword": "redistest0102",
"sourceRedisAddress": "10.0.1.101:6379",
"targetRedisAddress": "10.0.1.102:6379",
"targetPassword": "redistest0102",
"taskName": "testtask",
"targetRedisVersion": 4.0,
"autostart": true,
"afresh": true,
"batchSize": 100
}


啟動任務

redissyncer-cli -i
redissyncer-cli > task create source ./task.json


資料校驗

wget
ediscompare-1.0.0-linux-amd64.tar.gz
 

rediscompare compare single2single --saddr "10.0.1.101:6479" --
spassword "redistest0102" --taddr "10.0.1.102:6479" --tpassword
"redistest0102" --comparetimes 3


Github 地址:


推薦閱讀



歡迎點選【 京東科技 】,瞭解開發者社群

更多精彩技術實踐與獨家乾貨解析

歡迎關注【京東科技開發者】公眾號




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2759563/,如需轉載,請註明出處,否則將追究法律責任。

相關文章