人大金仓KFS实时同步模块关键技术之断点解析

文章介绍了KFS如何通过断点解析技术实现实时数据同步,确保数据完整性。通过记录oldestLCN(未提交事务起点)和commitLCN(已提交事务终点),在异常中断后重新启动时,仅解析未处理过的事务,避免数据重复解析。
摘要由CSDN通过智能技术生成

关键字:

KFS,实时同步,断点解析

概述

Kngbase Flysync是一种能够在异构数据平台间实现实时、增量数据同步的产品。面向异地容灾、数据集中共享与分发、数据分析平台建设、云迁移等业务场景。帮助用户实现数据在不同数据平台间可任意流转,并保证数据不丢失,状态可监控,流转数据量可统计,同步结果可校验,本文将介绍实时同步模块的关键技术:断点解析。

断点概念

我们都知道断线这一概念,断线有几种常见情况:网络不好、网络切换、程序切后台等等,通俗地讲,断点就是断线的那一时刻,能够正确记录断点,就能够保证发生一些意外情况导致断线后,保证能够正常恢复,在数据库领域的具体体现就是保证数据的完整性,避免事务遗漏或重复读取。

KFS中断点解析的实现

下面将以KFS对KES的断点解析实现为例,介绍断点解析的实现,kingbase复制槽(用来进行增量读取,本文不做详细介绍)在进行增量读取时只能读取到已经提交的事务,如下图所示,当读取到下标为8的点时,此时事务1事务2,还未提交,因此只读取了事务3、事务4以及事务5,如果此时KFS异常停止,当KFS再次启动时如何保证数据的完整性?

针对上述问题,我们解决方案是:首先需要记录断点,用来标记一个我们再次启动时开始读取的位置。上图这种情况,如果我们将断点记录为标记1,我们可以将所有的事务都读取到,但是会导致事务3、事务4、事务5的重复解析。若断点记录标记8,那么就无法完整的读取事务1和事务2。将断点形式记录为oldestLCN:commitLCN。oldestLSN代表上次解析时还未提交的事务开始的位置,如上图的标记1,commitLCN代表上次解析时已经提交的最新事务的最后位置,如上图的标记8,所以上图的oldestLCN:commitLCN为1:8。当KFS异常停止再次上线后,从标记为1的点开始读取数据,读取到标记6时,完整的读取了事务4,判断6小于等于8,表明事务4已经解析过一次,所以直接丢弃,事务3和事务5同理,当读取到标记7和标记8时,表明事务3和事务5已经解析过,直接丢弃。当读取到标记9时,完整读取了事务1,9大于8,因此该事务保留。采用这种处理方式,成功规避了重复解析数据这一问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值