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

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记录. 解决类似主表+副表的业务设计

相关推荐

    otter源码包

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

    基于java的开发源码-网络电视源代码TV-Browser.zip

    【标题】"基于Java的开发源码-网络电视源代码TV-Browser.zip" 提供的是一份使用Java语言编写的网络电视应用的源代码。TV-Browser是一款开源的网络电视客户端,它允许用户浏览和观看来自全球各地的网络电视频道。 ...

    otter分布式数据库同步系统 v4.2.18.zip

    Otter的源代码对于学习数据库同步原理和技术实现非常有价值。通过对源码的阅读和研究,可以深入理解分布式系统的设计思路,掌握如何处理数据库变更事件、如何保证数据的一致性以及如何进行错误处理等关键技术。 ...

    深入浅出Otter与Canal.zip

    Otter支持双向同步,即可以从源数据库到目标数据库,也可以从目标数据库回溯到源数据库,这在多数据中心的部署中非常有用。 Canal是阿里巴巴开源的一款轻量级数据库实时变更数据订阅与消费组件,同样专注于MySQL的...

    aria2-1.19.0.tar.gz

    标题"aria2-1.19.0.tar.gz"指的是一个名为"aria2"的软件的版本1.19.0的源代码包,它被存储在一个`.tar.gz`格式的压缩文件中。`.tar.gz`是Unix/Linux系统中常见的文件打包和压缩格式,它首先使用`tar`命令将多个文件...

    服务器框架

    - **简介**:Otter 是一个分布式数据库同步系统,基于数据库增量日志解析,能够准实时地同步数据到本地或远程数据库。 - **特点**: - **实时性**:Otter 支持准实时的数据同步,能够在短时间内完成数据传输。 - *...

Global site tag (gtag.js) - Google Analytics