96 lines
2.8 KiB
Markdown
96 lines
2.8 KiB
Markdown
## 整体设计
|
||
|
||
### 1、设计图
|
||
|
||

|
||
|
||
### 2、代码模块简介
|
||
|
||
1. deploy:
|
||
1. 工程打包方式
|
||
2. 程序运维脚本:启动、停止、重启
|
||
3. web端配置文件 application.properties
|
||
|
||
2. docs:
|
||
1. 项目运行数据库初始化sql
|
||
2. sql样例
|
||
3. 使用文档等
|
||
|
||
3. flink-streaming-common: flink流计算相关公共类
|
||
|
||
4. flink-streaming-core: flink流计算核心模块
|
||
1. 流计算任务提交、配置等.
|
||
|
||
5. flink-streaming-valication: sql校验模块
|
||
|
||
6. flink-streaming-web: web平台模块
|
||
1.
|
||
2. 用户管理
|
||
3. 日志管理
|
||
4. 系统配置等.
|
||
|
||
7. flink-streaming-web-alarm: web平台报警接口
|
||
|
||
8. flink-streaming-web-common: web平台模块公共类
|
||
1. 各种bean类
|
||
2. 各种工具类
|
||
3. 各种枚举等.
|
||
|
||
9. flink-streaming-web-config: web平台配置类
|
||
1. 报警、任务、savepoint、等待 各个队列的配置
|
||
|
||
### 3、各代码模块详细设计思路及流程
|
||
|
||
1. 任务提交启动流程代码片段.
|
||
|
||
```java
|
||
/**
|
||
* Controller 层.
|
||
* 加载任务详情
|
||
* 加载任务报警配置
|
||
* 确定任务运行模式,使用对应的实现类启动任务.接口类:JobServerAO
|
||
*/
|
||
JobConfigApiController.start(Long id,Long savepointId);
|
||
```
|
||
|
||
```java
|
||
/**
|
||
* 任务提交主流程
|
||
*/
|
||
JobYarnServerAOImpl.start(Long id,Long savepointId,String userName){
|
||
//1、检查jobConfigDTO 状态等参数
|
||
jobBaseServiceAO.checkStart(jobConfigDTO);
|
||
|
||
//2、将配置的sql 写入本地文件并且返回运行所需参数
|
||
JobRunParamDTO jobRunParamDTO=jobBaseServiceAO.writeSqlToFile(jobConfigDTO);
|
||
|
||
//3、插一条运行日志数据
|
||
Long jobRunLogId=jobBaseServiceAO.insertJobRunLog(jobConfigDTO,userName);
|
||
|
||
//4、变更任务状态(变更为:启动中) 有乐观锁 防止重复提交
|
||
jobConfigService.updateStatusByStart(jobConfigDTO.getId(),userName,jobRunLogId,jobConfigDTO.getVersion());
|
||
|
||
String savepointPath=savepointBackupService.getSavepointPathById(id,savepointId);
|
||
|
||
//异步提交任务
|
||
jobBaseServiceAO.aSyncExecJob(jobRunParamDTO,jobConfigDTO,jobRunLogId,savepointPath);
|
||
}
|
||
```
|
||
|
||
```java
|
||
/**
|
||
* 异步提交任务
|
||
*/
|
||
JobBaseServiceAOImpl.aSyncExecJob(JobRunParamDTO jobRunParamDTO,JobConfigDTO jobConfigDTO,Long jobRunLogId,String savepointPath){
|
||
// 以yarn-per-job为例
|
||
case YARN_PER:
|
||
//1、构建执行命令
|
||
command=CommandUtil.buildRunCommandForYarnCluster(jobRunParamDTO,jobConfigDTO,savepointPath);
|
||
//2、提交任务
|
||
appId=this.submitJobForYarn(command,jobConfigDTO,localLog);
|
||
break;
|
||
}
|
||
//提交完成后更新状态.
|
||
this.updateStatusAndLog(jobConfigDTO,jobRunLogId,jobStatus,localLog.toString(),appId);
|
||
```
|