海豚调度 dolphinscheduler SQL 脚本初始化流程
海豚调度 dolphinscheduler 目前是 Apache 顶级项目,作为国内优秀的开源项目,它的架构设计理念会有很多值得我们学习和借鉴。
海豚调度dolphinscheduler是分布式易扩展的可视化 DAG 工作流任务调度系统
本文会包含如下内容:
dolphinscheduler 部署时,如何进行数据库脚本初始化
dolphinscheduler 如何维护不同版本的数据库脚本
本篇文章适合人群:架构师、技术专家以及对任务调度非常感兴趣的高级工程师
本文以海豚 1.3.5 的源代码,分析数据库脚本初始化流程。
1. 数据库脚本初始化流程
在第一次部署海豚调度或针对已有的海豚调度进行升级时,需要初始化数据库脚本,执行的命令是: sh script/create-dolphinscheduler.sh
对应的代码入口是:org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler

实现了如下功能:
1.1 初始化 schema
检查版本表是否存在(t_escheduler_version、t_ds_version、t_escheduler_queue 中的一个是否存在)
如果不存在,则根据数据库类型(目前支持 MySQL、PostgreSQL 两种),初始化海豚的元数据定义及初始化语句, 如果存在,则跳过此步

1.2 升级 schema
在如下目录,获取所有升级需要的 schema 列表

获取海豚调度当前的版本
循环 schema 列表,只要待升级的 schema 的版本大于当前版本,则执行升级脚本
1.3 初始化流程

2. 如何维护数据库版本
海豚的元数据定义,请参见: https://dolphinscheduler.apache.org/zh-cn/docs/1.3.5/user_doc/metadata-1.3.html
在 sql/create 中,定义海豚的元数据 schema 及数据初始化语句
在 sql/upgrade 中,定义每次版本升级中,修改的 schema 及增加的初始化语句
注意:
如果涉及到修改升级前版本的数据,则使用 JAVA 实现,如升级到 1.3.4 版本,需要修改原流程中的 sqoop 任务的参数配置。

升级脚本是基于上一版本的 schema 调整的。升级时,依次升级,则从版本 1.3.1 升级到 1.3.5,则需要依次先升级到 1.3.2, 再升级 1.3.3, 再升级 1.3.4, 最后升级到 1.3.5

版权声明: 本文为 InfoQ 作者【cloudcoder】的原创文章。
原文链接:【http://xie.infoq.cn/article/e4602f08af30b431b9a475d00】。文章转载请联系作者。
评论