跨越異構鴻溝,Redis 遷移同步過程中的挑戰與解決方案
隨著雲端計算十餘年的高速發展,作為目前可見的最新階段,多雲正在快步大踏步前進。而多雲趨勢所帶來得資料雲間遷移,也逐步常態化。因此, 快取 Redis 已成為高併發場景下提升資料訪問速度的標配。
不僅是資料雲間遷移,目前大型系統對於快取強依賴,致使大多數企業都會面臨大量併發讀寫資料時訪問速度慢、資料庫壓力大,以及快取資料不⾜帶來的快取擊穿及雪崩⻛險。其中, Redis 就起到了降低資料庫壓力,提升資料訪問速度的作用。
下圖是某網站業務的解決訪問速度慢的問題,引入快取Redis提升訪問速度的流程:
但在 Redis 遷移同步過程中,勢必會面臨著許多挑戰:
rdb版本不⼀致導致源 redis dump⽂件在⽬標redis中不能載入
資料節點不⼀致帶來的 redis 主從複製⽅案失效
應⽤快速割接的⽤⼾需求
⾮冪等命令的冪等要求
正因如此, 應運而生。 RedisSyncer 是京東雲用於在 redis 之間資料同步的產品,支援跨版本、異構叢集間的資料同步。它模擬了redis的replication協議,在rdb版本不⼀致時進⾏命令轉換,以實現跨rdb版本遷移,並透過快取value的⽅式完成INCR、INCRBY、DECR、DECRBY等⾮命令的冪等轉換。最終適應雲上與雲下、原生與託管等多種場景,能夠快速靈活地滿足使用者的同步、遷移、擴容的需求。
RedisSyncer案例解析
某金融機構為保障金融資料安全、符合金融資料規範,需要將原⽣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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跨越DDD從理論到工程落地的鴻溝
- EF Core 遷移過程遇到EF Core tools version版本不相符的解決方案
- SQL Server 2016升級遷移過程中效能問題解決案例SQLServer
- 雲端遷移過程中的技術問題和解決思路
- 使用 MRKL 系統跨越神經符號鴻溝符號
- 在雲中部署MES:挑戰與解決方案(二)
- 在雲中部署MES:挑戰與解決方案(一)
- Redis資料遷移同步工具(redis-shake)Redis
- QT QML模組的程式設計挑戰與解決方案QT程式設計
- Redis快取的主要異常及解決方案Redis快取
- JS中的非同步解決方案JS非同步
- redis叢集 資料遷移方案Redis
- antd+react專案遷移vite的解決方案ReactVite
- 乾貨 | 攜程一次Redis遷移容器後Slowlog“異常”分析Redis
- RAG-GPT實踐過程中遇到的挑戰GPT
- 摩杜雲遷移全週期解決方案:助力企業加速遷移
- 解決構建全球社群帶來的挑戰
- 微服務的架構演進過程和多個解決方案微服務架構
- 非同步解決方案----Promise與Await非同步PromiseAI
- 非同步解決方案—-Promise與Await非同步PromiseAI
- 對於HTTP過程中POST內容加密的解決方案HTTP加密
- 記一次 GitLab 的遷移過程Gitlab
- Spring Data JPA 報 HOUR_OF_DAY: 0 -> 1異常的解決過程和方案Spring
- MySQL 與 Redis 快取的同步方案MySqlRedis快取
- 服務啟動過程效能波動的分析與解決方案
- 解決Java執行過程中拋簽名異常的問題Java
- 科普專項行動讓老年人跨越數字鴻溝OQGOGo
- 跨越可觀測性鴻溝|高手們都在用的“火焰圖”是什麼
- DataPipeline與TiDB推出異構資料實時同步解決方案,共築安全可信基礎設施APITiDB
- 企業資訊系統在遷移過程中,資料遷移要注意什麼?
- Codable 的遷移方案
- 電信行業專案管理解決方案(常見挑戰&解決方案)行業專案管理
- Drug X跨越鴻溝:一個生物科學家的新藥研發跋涉記
- Mysql百萬級資料遷移,怎麼遷移?實戰過沒?MySql
- 【Redis】 redis資料遷移Redis
- macOS安裝過程中“應用副本已損壞”的解決方案Mac
- Android加殼過程中mprotect呼叫失敗的原因及解決方案Android
- 移動端事件穿透的原理與解決方案事件穿透