互联网业务变更非常快,随着业务规模扩大,线上的业务也会涉及重构和迁移。比较难的就是存储迁移,可能从前的存储不适合新的业务模型了,例如从关系型数据库迁移到nosql,或者数据的存储格式发生了巨大的变化。

为什么说涉及数据迁移的业务最难呢?因为数据是有状态的,不像逻辑和接入层,方便灰度,即使出问题马上回滚就能恢复(如果涉及写数据也也有问题)。然而数据是有状态的,如果切换后发现新的写存储数据有问题,是很难修复的,也很难发现的。

任何迁移或更新,涉及到数据的,都有一个原则:要有验证比对和回滚能力。

验证比对

数据迁移后,要有办法验证这次迁移是成功的,没问题的。只是从代码上说,看,前后逻辑都一样,肯定没问题是靠不住的。我们要从结果,从用户的角度来验证,查看新老数据是否一致,是否有问题。

一般的方法是双写。老的数据库还对外服务,把写操作同步一份给新数据库,两个库一起写。把有改动的用户数据同步过来,然后再写一个同步程序,把所有用户的全量数据导过来。检测程序,能够根据每个key进行比对,定期把库里所有的数据进行新老比对,当比对率达到阈值以后。还要做一个数据比对层,用户读写的时候先走比对层,同时给新老两个逻辑层同步包,也接收回包。然后把回包进行二进制比对,保证返回给用户的数据也是一致的。

当都达到一致之后,就可以切换了,切换后以新层为主,老层为辅,也接收同步数据。

回滚数据能力

为什么验证比对里最后老层还要接收新层的同步呢,直接切换不好吗?是因为万一切换后出现bug,发现其他地方有问题,可以马上回滚回老数据。保证线上服务正常,给开发修复bug留下充足的时间,不会有很大的时间压力。如果不能马上回滚,只能在线修bug。后续的每次发布修改,对开发的个人能力和状态依赖大,不可控因素太多。很难保证服务质量。

再多说一下,由于是重构,有时会发现从前数据里的错数据,或逻辑bug。不建议马上修复,新的要先和老的逻辑数据对齐,稳定后再修复老bug。否则bug改完后就没有一个标杆来验证数据是否一致了。

有人会说,弄这么多,得多久能完成迁移啊,效率太低。考试题目做的再快,不对也是白搭,之所以做这么多,就是保证万无一失。欲速则不达,如果数据错了再去修补,时间花费的更多,而且有时是补不回来的,只能回档,那时给用户造成的损失就大了。在QQ后台,每次数据迁移都要经过几周的发布比对才能切换,重大的数据层重构,没个一年半载达到六个9的一致性,根本不会切换的。这也是为什么一次次在行动的火车上换发动机能够成功的原因!

总结

涉及到数据的变更发布,要有比对能力,有从结果出发的方法,能够验证数据迁移后是正常的才可以。只从代码逻辑层面分析是不靠谱的。

要有plan B,如果真的有问题,要能够回滚,有回旋的余地。

做到以上所说,才能立于平滑迁移数据服务的不败之地!

互联网服务线上数据迁移的原则和方法相关推荐

  1. 线上数据库迁移的几种方法

    互联网系统,经常会有数据迁移的需求.系统从机房迁移到云平台,从一个云平台迁移到另一个云平台,系统重构后表结构发生了变化,分库分表,更换数据库选型等等,很多场景都需要迁移数据. 在互联网行业,很多系统的 ...

  2. php将数据传到七牛云上,线上数据怎么热迁移到七牛云

    线上数据怎么热迁移到七牛云? 方案一:完全使用七牛镜像存储功能 注意:此方法仅针对少量数据的网站,对于数据量比较大(尤其是 UGC -- 用户产生内容)的网站,建议用下面的方案二 利用七牛提供的镜像存 ...

  3. Vue后台数据模拟以及抓取线上数据

    现在的vue里dev-server.js被替换成了webpack-dev-conf.js,以下分为本地后台数据和线上数据抓取两种情况. 数据抓取 首先 const axios = require('a ...

  4. 线上数据监测,可以监测哪些平台

    大家好,这里是小安说网控. 电商经济的繁荣,催生了一个又一个的电商平台:天猫.京东.拼多多.快手.抖音.咸鱼.美团优选--品牌进行数据监测的时候,都可以监测哪些平台呢? 一. 常规电商平台 天猫.淘宝 ...

  5. 【网上教学】实现线上签到和收批作业的方法

    实现线上签到和收批作业的方法 适用场景:小学.初高中.大学等教师线上教学中签到(点名)及数据导出.收批作业等任务的实现. 实现的方法很多,这里只介绍其中的一种 签到功能 使用腾讯文档的服务实现 发布签 ...

  6. sap服务器迁移性能问题,专家详解SAP数据迁移的六个方法

    [IT168现场报道] 以"蕴韬略 促转变"为主题的SAP商业同略会暨SAP全球技术研发者大会(以下简称大会)于2011年11月15~17日在北京国家会议中心召开. 在SAP全球技 ...

  7. app线上推广的四种主流方法

    app推广渠道从形式上分为:线上推广和线下推广.关于线下推广,只要大家用心观察周围,就能发现.这里,小编根据自己的经验,分析总结了4种主流的线上推广的渠道平台及方法. 一.应用市场推广 1.app应用 ...

  8. 关于Redis的数据迁移(三种方法)

    1.使用宝塔进行数据迁移 1.1.找到Redis的文件存储路径 点击首页软件的redis打开配置界面. 点击下面箭头指向地方就是对应的文件存储地方 其中还要RDB持久化,多久会插入一次,正常是不需要人 ...

  9. 苹果手机数据转移到新手机_怎么把旧手机的东西导入新手机?苹果手机数据迁移的几种方法...

    自从今年苹果秋季发布会以后,iPhone 11的预售又出现了之前商店排队的"盛况",按照目前的情况来看,去年苹果在iPhone上失利的局面应该会在今年被挽回,库克最近可是非常高兴了 ...

最新文章

  1. OpenSSL使用指南
  2. 首个获得FDA批准的脑机接口设备:“突破性”脑机接口设备用于造福人类
  3. idea查看项目pid_idea启动时的端口号
  4. 【代码笔记】iOS-长条蓝色button
  5. 如何使用SAP Cloud for Customer里的ABSL代码调用Web service
  6. http协议--笔记
  7. java class文件 代码_java_基础——用代码编译.java文件+加载class文件
  8. 虚实结合:无需人工标注的可泛化行人再辨识
  9. mysql 引擎 类型_MySQL(一)之存储引擎类型
  10. c语言编程n元一次方程,解n元一次方程
  11. 解决maven中ojdbc14:11.2.0.1.0错误
  12. appium使用相对坐标定位元素
  13. Android无障碍服务( Accessibility Service)应用
  14. 华为手机误删照片,除了相册恢复,还有这招能救命
  15. 二胎准生证办理流程--很有用。
  16. stm32 BKP 擦除后备寄存器存储的数据
  17. 【机器智能】双十一奇迹背后:机器智能如何构建社会的全新技术设施?
  18. rtmp断线重连_rtsp转rtmp rtsp2rtmp 同时16路视频 rtmp推流器 支持ipc dvr nvr
  19. 联想微型计算机b540,联想B540一体机升级CPU 加内存
  20. java 随机生成英文名_java随机数Reandom(简单介绍)

热门文章

  1. 学习编程过程中-->遇到的错误
  2. eclipse mysql 打包_Eclipse+Mysql+打包发布的问题......
  3. 全栈开发和web开发_全栈开发人员:这是什么,以及如何成为一个完整的开发人员...
  4. 优思学院|六西格玛DMAIC,傻傻搞不清?
  5. (油猴脚本网盘下载加速)
  6. SQL对date类型的操作
  7. html和css制作的网页设计期末大作业【小米购物商城网站制作】
  8. 互联网创业如何起步(一)
  9. 软件企业认定条件(双软企业认定条件2023)
  10. Quantopian教程系列三