源代码编译,Apache DolphinScheduler前后端分离部署解决方案

file

转载自神龙大侠

生产环境部署方案

在企业线上生产环境中,普遍的做法是至少实施两套环境。

  1. 测试环境
  2. 线上环境

测试环境用于验证代码的正确性,当测试环境验证ok后才会部署线上环境。

鉴于CI/CD应用的普遍性,源代码一键部署是必要的。

本文是探索对DolphinScheduler源代码改造,构建测试,线上双环境一键部署和上线。

同时,我对dolphinscheduler-api进行改造,使得前端管理系统前后端分离,以使得部署更贴近生产环境,方便生产环境组件横向部署,这也让前后端并行代码开发更加便利。

如果熟悉DolphinScheduler的同学可以前面的介绍,直接跳到部署方案那里看起。

DolphinScheduler介绍

Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

工作流定义启动流程

很丝滑有木有(这里面没有alert-server的位置,不过这个也不负责具体的任务执行)

file

DolphinScheduler核心模块

在二进制文件部署方案中,DolphinScheduler主要是有4个核心server如下:

  • alert-server 提供告警服务,通过告警插件的方式实现丰富的告警手段。

  • master-server MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。 MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。 MasterServer基于netty提供监听服务。

该服务内主要包含: DistributedQuartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作;

MasterSchedulerService是一个扫描线程,定时扫描数据库中的t_ds_command表,根据不同的命令类型进行不同的业务操作;

WorkflowExecuteRunnable主要是负责DAG任务切分、任务提交监控、各种不同事件类型的逻辑处理;

TaskExecuteRunnable主要负责任务的处理和持久化,并生成任务事件提交到工作流的事件队列;

EventExecuteService主要负责工作流实例的事件队列的轮询;

StateWheelExecuteThread主要负责工作流和任务超时、任务重试、任务依赖的轮询,并生成对应的工作流或任务事件提交到工作流的事件队列;

FailoverExecuteThread主要负责Master容错和Worker容错的相关逻辑;

  • worker-server WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。 WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。 WorkerServer基于netty提供监听服务。

  • api-server API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。

从严格意义上来讲,api-server包含了两个模块,一个是后端接口api-server,一个是api-ui前端页面。在dolphinscheduler的二进制部署方案中ApiServer和ui是合并打包的。

在实际的生产环境中一般前后端是分离部署,一个是缩小上线改动的影响范围,上线效率更快,一个是前端和后端的部署机器没必要都保持一样的数量,分离部署更灵活,这个博文是使用最新的release版本3.2.1进行部署的。(2024年7月22日)

  • api-ui

系统的前端页面,提供系统的各种可视化操作界面。

部署方案

DolphinScheduler部署主要有四种:

  • 单机部署(Standalone)
  • 伪集群部署(Pseudo-Cluster)
  • 集群部署(Cluster)
  • 快速试用 Kubernetes 部署

其中单机部署主要是用于操作体验,并不能执行工作流调度。

官网部署指南:https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E9%83%A...

DolphinScheduler官网提供了二进制文件部署,这种我也试了一下,安装流程很流畅,不过还是没有采用这种部署方案,主要考虑后面产品或者业务会提一些需求,需要这边基于最新的版本做一些开发。

最终决定采用如下两套部署方案:

  • 伪集群部署方案 作为测试环境(stag)
  • 集群部署方案 作为线上环境(prod)

下文用stag和prod作为测试环境和线上环境标志。

源代码开发pom管理有两种方案:

  1. 升级版本信息3.2.1到3.2.2
  2. 使用snapshot版本

为了不跟主线混淆主版本,也是致敬经典,我就使用snapshot作为后续的开发迭代版本了。

修改pom版本

本文基于3.2.1版本统一改成了snapshot版本,这样我自己修改的代码,重新编译之后可以在测试或者生产环境生效。

<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler</artifactId>
<version>3.2.100-SNAPSHOT</version>

备注:需要修改所有子模块的pom版本信息。

修改通用环境配置

目前环境需要的依赖或者配置信息目录在根目录下的script/env下,/script/env下保存了测试环境和线上环境都要求一致的配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值