`
鳄鱼旭
  • 浏览: 76054 次
文章分类
社区版块
存档分类
最新评论

Otter源代码解析(八)

 
阅读更多

全部文档索引:

Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894

Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518

Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519

Otter源代码解析(四): http://eyuxu.iteye.com/blog/1942521

Otter源代码解析(五): http://eyuxu.iteye.com/blog/1942522

Otter源代码解析(六): http://eyuxu.iteye.com/blog/1942549

Otter源代码解析(七): http://eyuxu.iteye.com/blog/1942578

Otter源代码解析(八): http://eyuxu.iteye.com/blog/1942780

Otter源代码解析(九): http://eyuxu.iteye.com/blog/1942786

 

相对于其他的过程,Transform实在是比较简单,所以本节把Tansform和Load放在一起说明了:

 

Transform实际上解决的就是异构数据的映射,在Transform这个节点做相应的转换:



 结构比较清楚,再说就啰嗦了。

 

 

. Load过程相对有点复杂的,其结构如下:



 

 

值得说明的地方:

1)Load过程是并发执行的,但是受Weight的控制(并非全局的);

2)在Load过程中包含了打标记的过程(与Select过程是呼应的,即Load打的标记会被Select过程所识别,然后不会同步回去了,这一点官方文档有相关说明,不过我看了代码之后才最终理解,所以做下补充说明)

3)FileLoadAction没有展开来解析,比较容易理解,读者可自行阅读相关的逻辑。

  • 大小: 68.9 KB
分享到:
评论
2 楼 chenchangqun 2017-02-20  
Load过程是串行的,请看官方文档
https://github.com/alibaba/otter/wiki/Otter%E8%B0%83%E5%BA%A6%E6%A8%A1%E5%9E%8B
,和仲裁器中的源代码MemoryStageController-single()中 TRANSFORM和Load部分。
不知道这个问题的原因是不是这段时间 有了更新。
1 楼 agapple 2013-09-18  
Weight的控制,主要解决类事务的需求. 因为otter在Load的时候使用了pk hash的机制打散了原先的数据事务. 业务原本在A地,先插入了t1表,后插入t2表. 同步到目标库后,顺序如果没有保证,业务上在B地看到t2表有数据,立即去join t1表,发现无数据,就可能会出错.

针对这种case,引入weight来解决,otter在同步的时候定义了t1的优先级低于t2,就可以保证t2插入成功,一定可以join出t1记录. 解决类似主表+副表的业务设计

相关推荐

    QT开源网页浏览器otter-browser的源代码

    Otter Browser 水獭浏览器 水獭浏览器 - 模仿opera12界面, 基于qt5的webkit浏览器. 等于个人制作山寨版Safari, 支持二代半引擎, 苹果WebEngine/谷歌Blink. 作者: 波兰 Emdek 恩德克 代码可用,本人亲测,qt5.5+vs...

    基于QT开发的浏览器源代码(otter-browser).zip

    【基于QT开发的浏览器源代码(otter-browser)】是一个开放源码的项目,它使用了流行的跨平台应用程序开发框架Qt来构建一个功能完备的网络浏览器。Qt是一个强大的C++库,提供了丰富的图形用户界面(GUI)工具和系统...

    otter源码包

    在`otter-master`这个压缩包中,你将找到Otter的源代码,包括了项目的结构、模块划分、核心类的实现等。通过阅读源码,你可以了解到以下内容: 1. **代码结构**:了解Otter的模块划分,如manager、node、common、...

    otter 资料PDF(深入理解otter (偏向技术层面)、otter使用介绍 (偏向使用层面) )

    otter 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。 深入理解otter (偏向技术层面).pdf otter使用介绍 (偏向使用层面) .pdf

    深入浅出Otter与Canal.pdf

    Otter通过解析数据库的增量日志来实现数据的迁移与同步。 2. Canal开源产品: Otter系统基于Canal开源产品,Canal主要用于获取MySQL数据库的增量日志数据。Canal的设计初衷是为了满足阿里巴巴在杭州和美国双机房...

    otter部署使用手册.zip

    Otter,作为一款强大的分布式数据库同步管理系统,主要用于实现数据库增量日志解析,从而实现实时或准实时的数据同步,无论是本机房内的数据库还是跨地域的异地机房,Otter都能高效地完成任务。在本文中,我们将深入...

    数据同步利器--otter搭建使用说明

    Otter 是阿里巴巴开源的一款强大的数据同步工具,特别适合在分布式环境中进行实时的数据迁移和同步。它解决了传统数据库主从复制的局限性,提供了更高效、灵活的解决方案。本篇文章将详细介绍Otter的主要功能、架构...

    otter-使用、维护说明.doc

    Canal 是 Otter 内部用于捕获和解析数据库变更的日志组件。内存存储的 buffer 大小(例如 1024M)是配置的关键,因为它决定了 Otter 可以暂存多少数据变更。此外,可以根据系统的资源调整并行度和批次大小,例如 2...

    otter部署文档说明

    - **Otter**是一种用于实现跨数据中心或跨地域数据库同步的解决方案,主要基于阿里巴巴开源项目Canal来捕获MySQL实例的Binlog日志,并对这些日志进行解析处理后发送至目标数据库。 - **工作原理**: - **基于Canal...

    七锋otter_otter_

    2. **架构原理**:Otter采用主从复制的架构,通过binlog解析,将源数据库的变更事件转化为可以跨网络传输的格式,然后将这些事件发送到目标数据库,进行应用。Otter还包含一个中央协调服务器,负责管理任务配置和...

    深入理解otter.pptx

    - **Canal**:作为数据源,捕获MySQL的Binlog日志。 ##### 设计关注要点 - **数据不可丢失**:确保所有变更的数据都能成功应用于目标数据库。 - **数据最终一致性**:即使在网络不稳定的情况下,也应确保最终数据的...

    Otter配置教程,otter从入门配置到高级配置

    Otter配置教程,otter从入门配置到高级配置,适合入门学习以及配置参考

    alibaba-otter

    项目背景 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出...定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统

    otter4使用介绍.pdf

    - 反方向的Pipeline会获取变更数据,并通过解析事务的开始和结束标记来判断是否是Otter系统内部产生的变更,从而避免回环同步的问题。 以上就是Otter4的主要内容介绍,Otter4以其强大的功能和出色的性能成为了解决...

    otter4使用介绍

    ### Otter4 使用介绍 #### 一、Otter4 概述 Otter4是一款用于实现数据同步的强大工具,主要用于解决复杂的企业级数据同步需求,包括但不限于不同地理位置间的数据中心同步、异构数据库间的同步等问题。Otter4的...

    linux安装otter需要用到的安装包,与otter的介绍

    压缩包里面有:aria2-1.17.1.tar.gz,jdk-7u79-linux-x64.tar.gz,manager.deployer-4.2.13.tar.gz,node.deployer-4.2.13.tar.gz,zookeeper-3.4.5-cdh4.3.0.tar.gz,深入理解otter.pptx,otter4使用介绍.pptx

    otter集群配置.docx

    ### Otter集群配置详解 #### 一、概述 Otter是一款高效的数据库同步工具,它能够实现MySQL数据库之间的数据同步,并支持多种同步模式。本文档旨在详细介绍如何基于Otter搭建一个完整的集群配置,包括其原理、所需...

    otter打包及配置开发文档

    Otter采用基于事务的复制策略,保证数据在源库和目标库之间的强一致性。通过记录源库的binlog(MySQL)或redo log(Oracle),并基于这些日志实现增量同步,确保数据变更的完整性和顺序。 五、高效同步数据 Otter...

Global site tag (gtag.js) - Google Analytics