zoukankan      html  css  js  c++  java
  • 数据同步功能梳理

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

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

    同步功能点梳理:

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

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

    后话:

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

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

  • 相关阅读:
    【LeetCode】3Sum Closest 解题报告
    LOJ#6277. 数列分块入门 1
    洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
    LOJ #108. 多项式乘法
    快速傅里叶变换(FFT)详解
    HDU 5536 Chip Factory
    洛谷P4093 [HEOI2016/TJOI2016]序列
    洛谷P2633 Count on a tree
    HDU 4825 Xor Sum
    洛谷T21778 过年
  • 原文地址:https://www.cnblogs.com/WangHuaiSheng/p/7687931.html
Copyright © 2011-2022 走看看