MySQL数据传输 | dtle 之 job 实现简析
爱可生 DTLE 团队成员,负责 DTLE 开发 ,日常问题处理以及相关问题的排查。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
传输过程中的高可用,又是由谁实现呢?
下面,我们就简单的介绍一下,job 实现的大体流程。
如上图所示,在 job 被传入服务器中,为了将 job 中的任务映射到客户端,job 会形成两个 allocation,task,以及 driver,而 job 实现期间的服务器分配,则是通过 evaluation 来实现。
evaluation:评估是 dtle 做出调度决策的机制。
allocation:分配是作业中的任务组和客户端节点之间的映射。分配由 dtle 服务端创建,作为评估期间的调度决策的一部分。
task:job 中声明的 task,记录了源端,或者目标端的连接信息以及所需要复制的库表信息。
-
driver:驱动,功能的具体实现,dtle 数据传输的具体实现,有 driver 进行用实现。
详解
-
评估是 dtle 做出调度决策的机制。当理想的状态(作业)或实际的状态(客户端)发生变化时,dtle 创建一个新的评估,以确定是否必须采取任何行动。在创建一个 job 后,同样会触发一次评估。
-
allocation,表示 job 的分配,它记录了 task 的详细的信息,同时,它是 dtle 进行高可用部分调度的一环,在 dtle 的官方文档中,我们可以通过对应的 api 接口,查看 allocation 的信息,并且从中查看到 task 的运行状态等等信息,报错信息等等,用户可以通过 allocation 的报错信息,确定问题来自于源端,或者目标端。
-
通过官方文档中的 job 结构,我们可知,task 被分为了源端和目标端,他们各自记载了对应的数据库信息以及所要传输的库表信息,总体来说,task 是一个任务实现的最基本单元,他指定任务的驱动、驱动的配置、约束和所需的资源。在 task 启动之后,则会调用对应的 driver。
{
{
"Name":"dtle-demo",
"Tasks":[
{
"Type":"Src",
"Config":Object{...}
},
{
"Type":"Dest",
"Config":Object{...}
}
]
}
}
-
driver: driver,执行任务的具体方法,driver 承担了数据传输的具体实现,从读取 binglog,到数据的回放,都由 driver 进行实现。 driver 只为数据传输服务。
dtle 官方手册: https://actiontech.github.io/dtle-docs-cn/
关于爱可生
爱可生成立于2003年,依托于融合、开放、创新的数据处理技术和服务能力,为大型行业用户的特定场景提供深度挖掘数据价值的解决方案。
公司持续积累的核心关键技术,覆盖到分布式数据库集群、云数据平台、数据库大体量运管平台、海量数据集成于存储、清洗与治理、人工智能分析挖掘、可视化展现、安全与隐私保护等多个领域。
公司已与多个行业内的专业公司建立了长期伙伴关系,不断促进新技术与行业知识相结合,为用户寻求新的数据驱动的价值增长点。公司已在金融、能源电力、广电、政府等行业取得了众多大型用户典型成功案例,获得了市场的认可和业务的持续增长。