关于云计算:跨越异构鸿沟Redis-迁移同步过程中的挑战与解决方案

11次阅读

共计 1902 个字符,预计需要花费 5 分钟才能阅读完成。

随着云计算十余年的高速倒退,作为目前可见的最新阶段,多云正在慢步大踏步后退。而多云趋势所带来得数据云间迁徙,也逐渐常态化。因而,_缓存 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 部署服务

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/TraceNatur…

举荐浏览

  • 618 Tech Talk| 高并发场景下的数据访问速度如何保障?
  • 亿级流量背地战场,京东 11.11 大促全方位技术揭秘

欢送点击【 京东科技 】,理解开发者社区

更多精彩技术实际与独家干货解析

欢送关注【京东科技开发者】公众号

正文完
 0