+-
跨越异构鸿沟,Redis 迁移同步过程中的挑战与解决方案
首页 专栏 大数据 文章详情
0

跨越异构鸿沟,Redis 迁移同步过程中的挑战与解决方案

京东科技开发者 发布于 2 月 26 日

随着云计算十余年的高速发展,作为目前可见的最新阶段,多云正在快步大踏步前进。而多云趋势所带来得数据云间迁移,也逐步常态化。因此,_缓存 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大促全方位技术揭秘

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

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

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

云计算 大数据
阅读 273 发布于 2 月 26 日
收藏
分享
本作品系原创, 采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
京东科技技术新知
京东智联云最新产品信息和技术干货以及最新活动发布拥抱技术,与开发者携手创造未来!
关注专栏
avatar
京东科技开发者

京东科技开发者(JD Tech Developer)是京东科技集团旗下为AI、云计算、IoT等相关领域开发者提供技术分享交流的平台。

1.2k 声望
1k 粉丝
关注作者
0 条评论
得票 时间
提交评论
avatar
京东科技开发者

京东科技开发者(JD Tech Developer)是京东科技集团旗下为AI、云计算、IoT等相关领域开发者提供技术分享交流的平台。

1.2k 声望
1k 粉丝
关注作者
宣传栏
目录

随着云计算十余年的高速发展,作为目前可见的最新阶段,多云正在快步大踏步前进。而多云趋势所带来得数据云间迁移,也逐步常态化。因此,_缓存 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大促全方位技术揭秘

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

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

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