服务重构,老版系统为php代码,新版系统改为Java。 数据层面沿用之前老版服务的数据库结构,部分库字段进行修改。
最终目的:服务实现切换,数据实现切换(老库到新库),不能停机升级,尽量减小对用户影响。
实现方案:日志追加 下面具体说一下自己的实现方案,可能会有纰漏的地方,仅做参考。
4,步骤四 开发一个compare-service,进行数据校验
5,步骤五 数据没有问题后切换为new-db,用户执行的新增、修改、删除 双写到日志和new_db中。
6,步骤六 兜底策略:如果发现数据有大规模不一致或者大规模数据丢失的情况,可以通过日志回写到old_db中,然后切换服务到old_server。
大致步骤如上所示,可能有考虑不周全的地方,这里只是短时间的牺牲了用户的体验来完整数据同步的一致性。 步骤六是我多加的一个步骤,做任何事情都要想一个兜底策略,这也是我最近感触最深的一点体验。用于不要过分相信依赖的调用方,做好plan b。