数据库技术  
 
  政策法规
 
hen恒峰娱乐深入数据库同步技术(3)-da-syncer介绍
/    2018-10-07    2018-10-07    被访问次

  中,我们为大家介绍了数据同步时序性的概念和重要意义,以及在da-syncer中如何利用Oracle闪回版本查询实现时序性。

  da-syncer是我们数据聚合项目中的一个数据同步工具,可以通过简单地点击鼠标完成表数据同步的工作,它包含了两个代码工程:

  mconsole:提供管理控制台,前后端分离,是一个常规的Spring Boot工程

  首先抱歉在这里澄清一下,在本系列文章的“深入数据库同步技术(1)- 基础篇”中,我们基于Java/JDBC视角做了很多用例说明,因为毕竟Java是主流编程语言,用它来做说明大家普遍更能接受一些。但实际上我们的核心同步引擎是Python做的。

  至于为什么选择Python,主要原因是Java的笨重。Python是敏捷型语言,更轻量级,在短时间内能更快速地交付项目,且大大缩减我们的代码量(注:本人无意挑起语言层面孰优孰劣的无谓争论)。

  写起来很简洁,如果换成Java实现的话,可能每一句都会拆解成十几条甚至几十条子句。目前pyworker的所有代码加起来还不到100K。

  另外,Python有众所周知的GIL锁的问题,pyworker没有使用多进程而是使用多线程,主要是因为数据同步本身是一个典型的网络I/O密集型而非CPU密集型的业务场景,所以其实影响还是比较小的。

  (3)自动化创建目的表后完成全量同步,对于有单一主键的大表,还支持大表分段同步

  (7)提供管理控制台界面,让用户可以方便地注册数据源,管理同步任务,获悉同步内部详细信息,对同步参数进行管理等

  (9)当同步出现错误时,将同步错误记录保存到单独的一张表,并在错误修复后,自动重试。比如,源端增加了字段长度,目的端感知不到,在源端插入一个长数据后,目的端不能插入,这种错误会被记录下来,在人工干预加长目的端字段长度后,同步恢复正常

  (10)在部署环境中,经常会遇到网络拥塞、抖动,以及各种中间件不稳定的情况,使用类似指数退避算法,重试直至成功为止

  (11)支持websocket信息推送,可以在管理控制台看到实时同步日志流

  (12)对于Oracle源,支持去重机制。如果只增量同步不选择全局同步机制,因为ora_rowscn默认基于Oracle数据块,这样大量无效数据被同步,可以开启去重,将真正发生改变的记录同步到目的端

  

 楼市焦点
 
 行业新闻
 
 热点信息
 
 
 
| 广告服务 | 合作伙伴 | 客服中心 | 诚征英才 | 联系我们 | 网站地图 | 版权说明
Copyright 2018 版权所有 www.g22.com