人大金仓KFS-Tungsten Replicator 7.0 JDBC落库解析

关键字:

KFS, Tungsten Replicator

Tungsten Replicator概述

Tungsten Replicator™ is a replication engine supporting a variety of different extractor and applier modules. Data can be extracted from MySQL, Amazon RDS MySQL, Amazon Aurora and Google Cloud SQL, and applied to a variety of transactional stores, NoSQL stores and datawarehouse stores.

During replication, Tungsten Replicator assigns data a unique global transaction ID, and enables flexible statement and/or row-based replication of data. This enables data to be exchanged between different databases and different database versions. During replication, information can be filtered and modified, and deployment can be between on-premise or cloud-based databases. For performance, Tungsten Replicator™ provides support for parallel replication, and advanced topologies such as fan-in, star and multi-master, and can be used efficiently in cross-site deployments.

JDBC落库

在目标端应用变更本质上是重组对应行为的statement,交之由JDBC执行。除了组建statement之外,还要建立statement运行的对应环境。

2.1 架构

架构的基础是使用JDBC连接目标数据库,对于每个接收到的合适的建立合适的statement和操作,并通过JDBC应用于数据库。建立一个合适的statement相对简单,例如:

  • INSERT INTO table (collist) VALUES (values)
  • UPDATE table SET column = value WHERE column = oldvalue
  • DELETE table WHERE column = value

除了构建一个合适的statement之外,replicator还会构建一个适合statement运行的环境。Applier还会把当前的状态信息存储在一个跟踪表中。

一个常规的applier应用流程是:

  1. 开启事务
  2. 建立合适的数据库环境和设置
  3. 根据模式的不同运行或重建statement
  4. 提交事务
  5. 在trep_commit_seqno中记录目标节点进度

这个过程是由一个又一个的事务为单位执行的。

2.2 并行落库

因为有JDBC的支持,replicator可以支持并行应用数据到数据库的能力(通过使用多线程,在以事务为单位的基础上),在利用线程RR算法调度。

例如有来自源端的6个事务对应不同的schema,数据将由三个线程应用入库:

Transaction 1 (Schema A, Table A) applied on thread 1

Transaction 2 (Schema C, Table A) applied on thread 2

Transaction 3 (Schema A, Table B) applied on thread 1

Transaction 4 (Schema B, Table C) applied on thread 3

为了保证事务的前后一致性,并且避免由于顺序或者隔离导致的问题,事务由schema为界限分发给不同的thread,在保证事务按照原顺序执行的同时尽可能的提高效率。

上述例子中的1,2,4事务可以同时执行,虽然他们顺序不一样,但replicator可以识别应用于同一模式或者表中的语句。

在使用并行时,需要注意以下事项:

  1. 数据库中得模式数量,如果只有一个模式,那么即使开启并行也没有意义。
  2. 事务的压力需要平均的分配在多个schema中
  3. 线程数量需要被调整来适配最大事务数量,压力,模式数量等

参考资料

Tungsten Replicator 7.0 Manual

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值