面试题:上级给你一个业务,你会怎么做,要求数据迁移怎么办?

一、给你一个业务,如何处理,你的想法是什么?

不需要特别详细,说说你的想法,逻辑思路就行,这是楼主在面试众安保险实习时技术面问楼主的。

  • 首先,我会和业务方进行沟通,包括这个业务的细节,这个业务的实际需求是什么?这个业务做完之后,对项目会有什么好处
  • 其次,我会去分析这个业务,是使用什么方式去实现比较好,就比如考虑实现一个功能是使用抽象类还是接口去实现
  • 之后我会去考虑业务的规范,就比如我要去实现一个接口的话,我回去查看使用什么样的参数类型,是Integer,还是Long又或者是Double,再去考虑它的返回值什么类型等等
  • 如果这个业务给用户使用,看看是不是需要考虑异常处理啊,如何给用户提供功能,是否需要记录该业务的使用次数(例如统计一个接口何时被调用,调用多少次,可以使用动态代理记录开始运行的时间和结束的时间,添加一个计数器记录执行次数)
  • 最后,查看自己编写的一个业务实际运行的结果好坏,好的话如何进行后续优化,不好的话如何改进业务

二、随着业务的发展,有一些场景需要进行数据迁移,有哪些方案?比如迁移数据到其他数据库或者分库分表后的数据迁移

1.停机迁移

       就是在数据迁移前,在网站或者App上发送一个公告,某某时间段需要对系统进行维护,不能访问。在这个时间段将系统停掉,就没有流量写入了,这时候旧表就不会数据进行写入,就可以使用迁移的工具,将旧库的数据读出来,写到新库中。迁移完之后,修改系统的数据库连接配置,再去重新部署,上线之后,再去验证一下,没问题就结束了;

       缺点在于必须停机一顿时间,如果没迁移成功,就必须切回原来的库,再次去发公告,而且有的项目上线不能停止运行,这种方案就无法实施了。

2.双写迁移,将数据写入两个数据库

       就是在业务代码中,在数据写入的时候,不仅要写入旧库也要写入一个新库,考虑性能的问题,新库可以异步写入,保证旧库写入成功就行。保证两个库的数据一致性:将新库写入失败的数据记录在单独的一个日志中。只需要将旧库中的数据读取,需要新库中没有的,或者最后这个数据修改的时间比新库数据新,再去写入到新库,之后抽样比较数据,进而保证数据一致。

       之后将流量灰度的进行迁移,比如开始切换10%的流量,之后逐渐切换到100%,因为两个库,有任何的问题都可以随时切换到旧的库中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值