人大金仓KFS实时同步-目标端性能原因定位方案

关键字:

KFS,实时同步,性能定位

概述

程序的性能是指计算机程序在执行任务时所表现出的速度、效率和稳定性等方面的度量。性能的好坏直接影响到程序的用户体验和开发成本。优化程序性能通常包括提高代码质量、减少资源消耗、采用更高效的算法和技术等方面。本文将简要介绍KFS实时同步目标端的性能定位方案。

实时同步流程概述

2021-05-13_160527

KFS源端的工作流分为两个阶段:binlog-to-q, q-to-kufl.

binlog-to-q阶段,KFS从源端的数据库日志中抽取增量数据,经过extractor模块解析封装后,以DBMSEvent的形式在内存队列queue中暂存,此阶段的主要工作是将数据库的元组信息抽取转化为DBMSEvent,我们称此阶段为“解析”阶段。

q-to-kufl阶段,将队列中的DBMSEvent取出,封装为KUFLEvent,经过序列化成为KUFL持久化在外存文件中,此阶段主要是将内存中的数据转化为外存文件持久化,我们称此阶段为“存储”阶段。

2021-05-13_160909

KFS目标端工作流分为三个阶段:remote-to-kufl, kufl-to-q, q-to-dbms.

remote-to-kufl阶段,KFS目标端通过主动访问源端的监听,建立TCP连接,从源端的KUFL文件中反序列化按顺序将KUFLEvent获取,获取完成后序列化成为KUFL存储在本地,此阶段的主要任务是将源端的文件发送到目标端,我们将此阶段称为“传输”阶段。

kufl-to-q阶段,KFS将本地的KUFL中反序列化成为KUFLEvent,同时解析为DBMSEvent存储在内存队列queue中。

q-to-dbms阶段,applier将内存中的DBMSEvent取出,同时将其翻译成为SQL语句,应用到目标端数据库中,此阶段的主要目的是将数据入库,因此我们将此阶段称为“入库”阶段。

简要来说,各个阶段所进行的活动如下:

源端

binlog-to-q:1.从事务日志获取增量数据 2.将增量数据放入内存队列

q-to-kufl:1.从内存队列中获取增量数据 2.将增量数据写入KUFL文件持久化 3.更新数据库中间表中的断点位置。

目标端

remote-to-kufl:1.通过网络从源端获取增量数据 2.将增量数据写入KUFL文件持久化

kufl-to-q:1.从本地KUFL文件获取增量数据 2.将增量数据放入内存队列

q-to-dbms:1.从内存队列中获取增量数据2.将增量数据加载到目标数据库

KFS中的性能诊断工具

KFS提供了fsrepctl perf命令来进行同步过程中各阶段的性能监控。

源端:

C:\Users\weiqian\AppData\Roaming\Ktalk\localfiles\media\9df3e212c88841c01104d528a5ea0258.png

目标端:

C:\Users\taoxinyu\Desktop\通过fsrepctl perf命令查看每个阶段的主要动作.png

目标端性能原因定位方案

根据KFS的实现原理以及经验来看,Filtering和Other通常不会存在瓶颈,因此我们着重关注Extraction和Applying动作。目前KFS同步程序不会自动识别和记录是否出现性能问题以及出现问题时的相关信息,通过分析,确定主要围绕Extraction和Applying动作来实现入库性能原因自动定位,可以通过设置基准值的方式来判断是否出现性能问题,判断阶段耗时,定位性能瓶颈的阶段。

参考fsrepctl perf逻辑,获取remote-to-kufl,kufl-to-q,q-to-dbms 里面的每个小阶段的延迟时间做参考比较,以定位具体的性能瓶颈在哪个阶段;

设定latency的基准值,在各阶段(remote-to-kufl,kufl-to-q,q-to-dbms)判断latency与基准值的关系;当latency大于基准值时,认为出现性能问题,收集相关信息并存储,内部判断后打印并提供优化建议,以下为内部判断流程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值