记一次数据同步方案的选择处理

  • 记一次数据同步方案的选择处理已关闭评论
  • 3 次浏览
  • A+
所属分类:.NET技术
摘要

系统的数据来源是其他系统,要么通过第三方接口拿数据,要么把数据同步过来进行处理查询


系统的数据来源是其他系统,要么通过第三方接口拿数据,要么把数据同步过来进行处理查询

两种方案选择

因为需要的数据源在其他系统里面,所以最大的阻碍其实是数据,要么和其他系统合作,两边对接api接口拿数据,要么从其他系统同步数据过来,自己去处理逻辑,两者互有利弊。综合考虑各种因素,最终选择同步数据过来自己去处理。

数据处理方案

数据情况

同步的数据量查看了一下,大概几百万条,同时一个月数据量几万条,而且是增长很快,可能到后面就是一天几万条。数据的一致性要求相对来说不太高,数据从产生到使用间隔大概三四天,但是也不排除只有一天的场景。同时数据有明显冷热分层,冷数据基本不使用,热数据使用频率非常高。

采用方案

所以基于数据量,一致性,数据增长率,以及系统的负载情况考虑,两种方案结合起来,白天增量同步,晚上全量同步。简单讲就是系统压力不大的时候采用全量同步,大的时候采用增量。同时同步的过程中还要注意错误处理机制,重试机制,以及数据的幂等性等一系列情况的处理。 同时为了进一步减少系统压力,根据业务从源头对数据进行筛减,一些明显没用的数据直接过滤掉不进行同步,只同步业务最终用得到的数据。

总结

数据同步方案需要考虑数据量,数据的一致性,数据的增长率,数据库的负载率等选择合适的方案,同时根据业务对同步方案进行深度定制,从源头到最终使用一步步减少数据的同步量,如何选择合适的同步时间点。同时还要考虑别把第三方的系统给查崩了,造成误伤,保证最后数据使用的时候没有问题。最后的最后确保别人从你接口拿出去的数据你做好了日志记录,免得出了问题找的满头大汗,因为这就不是你的锅 :)

以下是方案情况对比

第三方接口

优点 :直接调用别人的接口即可,不需要进行数据同步,减少工作量,(增加别人系统工作量),对接一下dto,参数即可

缺点:引入了第三方接口,增加了不稳定,而且是个黑盒,出了问题,逻辑都不清楚,同时需要我们做好日志的记录,以及重试的逻辑等。假如第三方接口挂了也会被牵连(深有感触),同时网络io相对来说增加了整个请求时长。

数据同步

优点 :数据同步过来在本地,处理逻辑清楚,出了问题方便排查,同时减少网络io的时长,第三方接口挂了没影响。

缺点 :要进行数据同步的开发工作,保证数据的及时性,完整性,考虑数据同步的性能问题等。

数据同步方案选择

全量同步

将数据全量从其他系统复制过来

优点:减少数据传输量,节省宽带和时间;提高同步效率,仅更新变化的部分,更少时间完成任务;对数据实时性要求的高系统比较合适;

缺点:数据较为滞后,因为有部分数据可能手动更改从而无法及时同步;容易出现数据冲突和一致性问题;实现方案较为复杂

增量同步

优点:同步简单粗暴,直接复制所有数据即可;同时数据一致性高,不用担心冲突;实现方案简单