隨着雲計算十餘年的高速發展,做爲目前可見的最新階段,多雲正在快步大踏步前進。而多雲趨勢所帶來得數據雲間遷移,也逐步常態化。所以,緩存 Redis 已成爲高併發場景下提高數據訪問速度的標配。linux
不只是數據雲間遷移,目前大型系統對於緩存強依賴,導致大多數企業都會面臨大量併發讀寫數據時訪問速度慢、數據庫壓力大,以及緩存數據不⾜帶來的緩存擊穿及雪崩⻛險。其中,Redis 就起到了下降數據庫壓力,提高數據訪問速度的做用。git
下圖是某網站業務的解決訪問速度慢的問題,引入緩存Redis提高訪問速度的流程:github
但在 Redis 遷移同步過程當中,勢必會面臨着許多挑戰:redis
rdb版本不⼀致致使源 redis dump⽂件在⽬標redis中不能加載docker
數據節點不⼀致帶來的 redis 主從複製⽅案失效數據庫
應⽤快速割接的⽤⼾需求json
⾮冪等命令的冪等要求緩存
正因如此, 應運而生。_RedisSyncer 是京東雲用於在 redis 之間數據同步的產品,支持跨版本、異構集羣間的數據同步。_它模擬了redis的replication協議,在rdb版本不⼀致時進⾏命令轉換,以實現跨rdb版本遷移,並經過緩存value的⽅式完成INCR、INCRBY、DECR、DECRBY等⾮命令的冪等轉換。最終適應雲上與雲下、原生與託管等多種場景,可以快速靈活地知足用戶的同步、遷移、擴容的需求。安全
RedisSyncer案例解析
某金融機構爲保障金融數據安全、符合金融數據規範,須要將原⽣redis集羣遷移⾄該金融機構⾃研的upredis集羣,並保證業務系統平滑過渡。併發
項⽬挑戰
-
版本差別
-
降版本遷移
-
集羣節點數不⼀致
-
極速回退需求
最終客⼾收益
-
實現15分鐘完成 256GB+數據遷移
-
20分鐘完成系統割接
-
遷移過程「絲般柔順」
RedisSyncer 操做實戰
-
必要環境
-
docker
-
docker-compose
-
使⽤docker-compose 部署服務
Plain Text
git clone https://github.com/TraceNature/redissyncer.git cd redissyncer docker-compose up -d
- 下載並配置cli客⼾端
wget https://github.com/TraceNature/redissyncercli/ releases/download/v0.1.0/redissyncer-cli-0.1.0-linux-amd64.tar.gz .config.yaml
syncserver: http://10.0.1.20:8080 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 https://github.com/TraceNature/rediscompare/releases/download/v1.0.0/r 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 地址:
https://github.com/TraceNature/redissyncer-server
推薦閱讀
歡迎點擊【京東科技】,瞭解開發者社區
更多精彩技術實踐與獨家乾貨解析
歡迎關注【京東科技開發者】公衆號