通用架构师应该如何把控迁移技术方案

假设我们的应用现在使用了具有两个分片的数据集群,通过关键字哈希的方式进行路由,如下图所示。

因为两个分片已经不能满足容量的需求,所以现在需要扩容到4个分片,达到原来两倍的总大小,因此我们需要迁移。

迁移的具体过程如下。

1. 双写

按照新规则和旧规则同时往新新旧数据系统中写数据,如下图所示。

![image.png](http://upload-images.jianshu.io/upload_images/4310879-8b3807d7619de48c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


这里,我们仍然按照旧的规则,也就是关键字哈希除以2取余来路由分片,同时按照新的规则,也就是关键字哈希除以4取余来路由到新的4个分片上,来完成数据的双写。

2. 迁移历史数据

把旧缓存集群中的历史数据读取出来,按照新的规则写到新的数据集群中,如下图所示。

![image.png](http://upload-images.jianshu.io/upload_images/4310879-c9c2cc77b2a45c54.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


在这个过程中,我们需要迁移历史数据,在迁移的过程中可能需要迁移工具,这也需要一部分开发工作量。在迁移后,我们还需要对迁移的数据进行验证,表明我们的数据迁移成功。

3. 切读

把应用层所有的读操作路由到新的数据集群上,如下图所示。

image.png

在这一步骤里,把应用中读取的操作的数据源转换成新的数据集群,这是应用的读写操作已经完全发生在新的数据库集群上了。这一步一般不需要上线代码,我们会在一开始上双写时就实现开关逻辑,这里只需要将读的开关切换到新的集群即可。

4. 下线双写

在这一步,我们把写入旧的集群的逻辑下线,,如下图所示。 
这一步通常是在双写和切读后验证没有任何问题,并保证数据一致性的情况下,才把这部分代码下线。同时可以把旧的分片下线,如果是扩容的场景,并且重用了旧的分片1和分片2,则还可以清理分片1和分片2中的冗余数据。

可以用“软着陆”来形容双写迁移方案,这和新领导上任后,一般先招心腹,慢慢的替代老下属的职责,慢慢淘汰老下属,慢慢实现软着陆如出一辙。

更多的关于“通用架构师应该如何把控迁移技术方案”的内容,请参加艳鹏在gitchat上的唠嗑节目。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android 开发者

非 SDK 接口常见问题 | Android 开发者 FAQ Vol.13

3713
来自专栏帘卷西风的专栏

关于cocos2dx程序的BUG调试解决方案

      今天说一下手机游戏开发的调试问题吧。不得不说的是和PC平台游戏、软件开发相比,手机上开发游戏和软件要困难的多。原因是多方面的,比如说开发环境比较复杂...

842
来自专栏BeJavaGod

搜索服务solr 一二事(1) - solr-5.5 使用自带Jetty或者tomcat 搭建单机版搜索服务器

solr,什么是solr,就是你要吃的东西“馊了”,不能吃了,out of date~ 嘛。。。开个玩笑,发音就是‘搜了’,专门用于搜索的一个开源框架,lunc...

3136
来自专栏沈唁志

如何在Ubuntu 16.04上安装PrestaShop

如果您曾经考虑过开设在线商店,您可能会感受到各种免费的开源电子商务解决方案。虽然有这么多的选择意味着几乎可以肯定有一个可用的有效解决方案适合您的特定情况,但它也...

2363
来自专栏企鹅号快讯

一个简单的node爬虫踩坑之路

一个简单的node爬虫踩坑之路准备工作 最近在看爬虫相关的文章,偶然想起来尝试一下用node来实现一个简单的爬虫。但是爬别的多没意思,当然是爬美女图片啊。。。 ...

2039
来自专栏FreeBuf

思科产品中存在严重硬编码密码漏洞和Java反序列化漏洞

近日,思科发布了 22 条安全公告,其中包括两条重要的修复方案:修复一个硬编码密码漏洞( CVE-2018-0141)和一个 Java 反序列化漏洞(CVE-2...

3506
来自专栏腾讯NEXT学位

React 16 加载性能优化指南(上)

公司的新项目迁移到了 React 16 和 Webpack 4.0,写一篇文章来总结一下。

6175
来自专栏Python与爬虫

爬虫入门到精通-爬虫之异步加载(实战花瓣网)

本文章属于爬虫入门到精通系统教程第八讲 本次我们会讲解两个知识点 异步加载 headers中的Accept 本次我们要抓取的是花瓣网美女照片美女花瓣,陪你做生活...

45515
来自专栏地方网络工作室的专栏

打造前端 Deepin Linux 工作环境——安装配置 atom 编辑器

打造前端 Deepin Linux 工作环境——安装配置 atom 编辑器 好,我个人推荐大家使用 atom 编辑器,第一是免费,第二是好看,第三是好用。 安装...

3828
来自专栏Java3y

纳税服务系统总结

纳税服务系统总结 纳税服务系统是我第一个做得比较大的项目(不同于javaWeb小项目),该项目系统来源于传智Java32期,十天的视频课程(想要视频的同学关注我...

2919

扫码关注云+社区