数据同步功能梳理

在分布式的环境中,数据同步是一个经常会碰到的问题,在内网中可以通过数据库发布订阅或Always On实现主从复制 ,读写分离。但是在.net平台中没有现成的跨网夸机房的数据同步方案。数据同步是一个复杂的过程,特别是涉及到双向同步,要保证同步的数据一致性、同步的高可用性,是需要良好设计和仔细权衡的一个事情。

一个良好的同步框架必须保证数据的正确同步,同时异常重试、异常监控通知、同步状态反馈等都是需要考虑的方面,以下是关于同步功能的简单梳理和基于CDC单向同步的同步流程梳理。通过变通的方式可以将单向同步扩展为双向同步(不考虑同表同字段双向同步,实际在业务设计时可以规避相同字段的双向同步问题)。

同步功能点梳理:

 中心直接调用子节点服务的方式,中心为执行调度方,子节点只负责接收任务执行同步并反馈执行结果。

 异步方式处理同步,中心分解同步任务,传递同步任务,子节点拉取任务,执行同步,推送同步状态,中心轮询同步状态,对同步成功的任务进行后续移除记录等操作。采用异步的方式会增加数据同步程序的复杂程度,但是系统的吞吐量会有一定程度的增加。在同步各个节点之间可以加入消息队列,通过队列对同步任务,同步状态反馈进行统一分发。隔离各个节点之间的强关联。

后话:

针对同一张表的同步操作出现异常时,同一个子库相同表的同步操作会挂起,异常任务会不断重试,阻塞后续同步任务,但不同表,不同库之间不受影响。在同步任务不是幂等操作的情况下,阻塞是唯一能保证数据一致性的方式。实际的情况中,抛开断网,程序崩溃的特殊情况,实际通过健壮测试和有序发布的系统,是基本可以规避同步问题出现的。

 

本文为作者原创,转载请注明出处。

posted @ 2017-10-18 17:41  读喜爱  阅读(733)  评论(0编辑  收藏  举报