数据传输 | dtle 之 job 实现简析

数据传输 | dtle 之 job 实现简析作者:吕海龙 爱可生 DTLE 团队成员,负责 DTLE 开发 ,日常问题处理以及相关问题的排查。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 …

数据传输 | dtle 之 job 实现简析

作者:吕海龙 爱可生 DTLE 团队成员,负责 DTLE 开发 ,日常问题处理以及相关问题的排查。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


从 job 文件到源端目标端的数据传输,dtle 到底是如何行实现的的,传输过程中的高可用,又是由谁实现呢,下面,我们就简单的介绍一下,job 的实现的大体流程。

数据传输 | dtle 之 job 实现简析

结构

如上图所示,在 job 被传入服务器中,为了将 job 中的任务映射到客户端,job 会形成两个 allocation,task,以及 driver,而 job 实现期间的服务器分配,则是通过 evaluation 来实现。

  • evaluation:评估是 dtle 做出调度决策的机制。
  • allocation:分配是作业中的任务组和客户端节点之间的映射。分配由 dtle 服务端创建,作为评估期间的调度决策的一部分。
  • task:job 中声明的 task,记录了源端,或者目标端的连接信息以及所需要复制的库表信息。
  • driver:驱动,功能的具体实现,dtle 数据传输的具体实现,有 driver 进行用实现。

详解

evaluation

  • 评估是 dtle 做出调度决策的机制。当理想的状态(作业)或实际的状态(客户端)发生变化时,dtle 创建一个新的评估,以确定是否必须采取任何行动。在创建一个 job 后,同样会触发一次评估

allocation

  • allocation,表示 job 的分配,它记录了 task 的详细的信息,同时,它是 dtle 进行高可用部分调度的一环,在 dtle 的官方文档中,我们可以通过对应的 api 接口,查看 allocation 的信息,并且从中查看到 task 的运行状态等等信息,报错信息等等,用户可以通过 allocation 的报错信息,确定问题来自于源端,或者目标端。

task

  • 通过官方文档中的 job 结构,我们可知,task 被分为了源端和目标端,他们各自记载了对应的数据库信息以及所要传输的库表信息,总体来说,task 是一个任务实现的最基本单元,他指定任务的驱动、驱动的配置、约束和所需的资源。在 task 启动之后,则会调用对应的 driver。
{
{
    "Name":"dtle-demo",
    "Tasks":[
        {
            "Type":"Src",
            "Config":Object{...}
        },
        {
            "Type":"Dest",
            "Config":Object{...}
        }
    ]
}
}

代码100分

driver

  • driver:driver,执行任务的具体方法,driver 承担了数据传输的具体实现,从读取 binglog,到数据的回放,都由 driver 进行实现。driver 只为数据传输服务。

总结

以上,便是一个 job,从请求提交,到最终实现所经历的一个简单流程。 总体来说,我们一般将 job 的实现分为两个部分,一个部分是调度,调度部分实现 job 的高可用,以及 job 转移等一系列事物。而来另外一部分,则是传输部分的具体实现,从源端目标端的连接,到数据的抽取,清洗,回放。

相关连接

dtle 官方手册: https://actiontech.github.io/dtle-docs-cn/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9398.html

(0)
上一篇 2023-02-09
下一篇 2023-02-09

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注