BCTSP 大数据任务调度平台
一、系统概述
| 项目 | 说明 |
|---|---|
| Artifact | cn.webank.cnc.tsp:zctsp-parent |
| GroupId | cn.webank.cnc.tsp |
| Parent POM | cn.webank.cnc.sdk:zcnc-sdk-starter-parent:3.35.0-SNAPSHOT |
| 版本 | pace_replacement_version-SNAPSHOT |
| Java版本 | Java 8 (source/target 1.8) |
| 编码 | UTF-8 |
| 打包方式 | 多模块聚合POM |
| SCM | git@git.webank.io:cnc/zctsp.git |
| CI | Jenkins (http://jenkins.webank.oa.com:8080/jenkins) |
| Maven仓库 | http://maven.weoa.com/nexus/ (yak) |
| 核心框架 | Spring Boot + Spring MVC + MyBatis + Quartz |
| 系统定位 | 大数据批处理任务调度与执行平台(Big Data Task Scheduling Platform),服务于微众银行多个业务线的数据加工、ETL、数据质量监控等场景 |
技术栈总览
- Web框架: Spring Boot + Embedded Tomcat + Spring MVC
- 调度引擎: Quartz + 自研分布式调度分发引擎
- 持久层: MyBatis + MyBatis-Spring + 多数据源(MySQL/TDSQL)
- 消息中间件: RMB(Webank消息总线)+ WeService(WeRPC/WeMQ)
- 大数据组件: Hive 3.1.3 + Hadoop 3.3.4 + HBase + Elasticsearch 6.8.13
- 计算引擎: Apache Linkis 1.6.1-wds + BDP-TSS
- 图数据库: Neo4j 4.0.1 (血缘分析)
- 文件传输: FPS (File Propagation Service) + Exchangis 0.7.12
- 日志: Log4j2 + SLF4J
- 分布式锁: zcnc-sdk-starter-distributed-lock
- 限流: zcnc-sdk-starter-flowcontrol
- 安全: Spring Security + SSO + UM + ESAPI + 数据脱敏
- 国际化: zcnc-sdk-starter-i18n
- 微信企业号: weixin-java-cp 2.6.0 (移动端推送)
- 邮件: EWS Java API 2.0 (Exchange Web Services)
- Excel报表: Apache POI 4.1.1 + JXLS 2.14.0
- 图表: JFreeChart 1.5.0
- 中文分词: Jieba Analysis 1.0.0
二、模块结构(10个模块)
模块依赖关系图
zctsp-parent (pom)
|-- ctsp-zinfrastructure (基础设施/DAO生成)
|-- ctsp-common-sdk (公共SDK, 供外部系统使用)
|-- ctsp-zcommon (公共模块, 依赖 zinfrastructure)
|-- ctsp-udf (Hive UDF函数)
|-- ctsp-rmb-agent (RMB消息代理, 独立轻量模块)
|-- bctsp-schedule (调度服务, 依赖 zcommon/udf/zinfrastructure)
|-- bctsp-executor (执行服务, 依赖 zcommon/udf/zinfrastructure)
|-- bctsp-app (Web控制台WAR, 依赖 zcommon/zinfrastructure)
|-- ctsp-analysis (分析服务WAR, 独立运行)
|-- ctsp-mobile (移动端报表, 独立运行)2.1 bctsp-app (WAR -- Web管理控制台)
| 属性 | 值 |
|---|---|
| ArtifactId | bctsp-app |
| Packaging | war |
| 名称 | ctsp we2000作业调度web |
| 主类 | cn.webank.cnc.bdp.ZappApplication |
| Java文件数 | ~532个 |
| 包根路径 | cn.webank.cnc.bdp.* + cn.webank.cnc.zctsp.* |
核心职责:
- 提供Web管理界面(JSP/前端页面)
- 任务配置管理(CRUD)
- 任务运行监控与运维操作
- 图形化依赖关系展示
- REST API接口供前端调用
- 报表导出(Excel/PDF)
- 批量任务配置上传
- 角色菜单权限管理
关键依赖: Spring MVC, MyBatis, Quartz, Hadoop/Hive, CLES-Client(ES), ESB-SDK, iTextPDF, POI, JXLS, nimbus-jose-jwt
2.2 bctsp-schedule (JAR -- 调度服务)
| 属性 | 值 |
|---|---|
| ArtifactId | bctsp-schedule |
| Packaging | jar |
| 名称 | ctsp we2000作业调度服务 |
| 主类 | cn.webank.cnc.zctsp.ScheduleApplication |
| 包根路径 | cn.webank.cnc.zctsp.* |
核心职责:
- Quartz定时调度驱动
- 任务实例生成与分发
- 依赖关系计算(上下游依赖 + 自依赖)
- RMB消息接收与处理
- 任务状态流转控制(WAIT -> WAIT_BASE -> WAIT_TIME -> READY -> RUNNING)
- 50+种任务模块的实例化(创建组件运行实例)
- 数据质量检查规则引擎
- 文件信号检测
- 跨DCN依赖调度
- Spring Batch任务管理
关键依赖: Quartz, RMB, Linkis, BDP-TSS, FlowControl, Hutool
2.3 bctsp-executor (JAR -- 执行服务)
| 属性 | 值 |
|---|---|
| ArtifactId | bctsp-executor |
| Packaging | jar |
| 名称 | ctsp we2000作业执行服务 |
| 主类 | cn.webank.cnc.zctsp.ExecutorApplication |
| 包根路径 | cn.webank.cnc.zctsp.* |
核心职责:
- 实际执行ETL作业
- Hive SQL提交(通过Linkis/BDP-TSS)
- Shell脚本执行
- 数据质量检查执行
- 列监控检查执行
- HBase BulkLoad执行
- TDSQL数据同步(Sqoop/Calc方式)
- Elasticsearch数据写入
- FPS文件传输
- 数据脱敏执行
- HQL语法检查与Explain分析
- 血缘解析(Hive SQL Lineage)
关键依赖: Exchangis-Client, FPS-Client, Hadoop, Hive-Exec, Linkis, BDP-TSS, Distributed-Lock
2.4 ctsp-analysis (WAR -- 分析服务)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-analysis |
| Packaging | war |
| 名称 | zctsp作业分析 |
| 主类 | cn.webank.cnc.zctsp.AnalysisApplication |
核心职责:
- Neo4j图数据库血缘分析
- 任务影响分析(上游/下游链路追踪)
- SQL血缘解析(Hive SQL Lineage解析)
- 邮件报告生成与推送(Exchange Web Services)
- 任务异常检测与分析
- 任务周期检查(环依赖检测)
- 3小时报告(Tsp3hReport)
- 发布单管理(ReleaseForm/PublishFile)
- 数据质量规则统计
- 缓存信息管理
- 子系统表单管理
关键依赖: Neo4j JDBC/Bolt/HTTP, Jieba分词, EWS-Java-API, POI, JFreeChart, BouncyCastle
2.5 ctsp-mobile (JAR -- 移动端报表)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-mobile |
| Packaging | jar |
| 名称 | zctsp移动端报表 |
| 主类 | cn.webank.cnc.bdp.mobile.CtspMobilApplication |
核心职责:
- 移动端任务运行报表
- 半小时报告(HalfHour Report)
- 任务失败率统计
- 任务依赖关系图展示
- 微信企业号消息推送(weixin-java-cp)
- HR系统对接(员工信息查询)
- UM权限上传
- 多数据源切换
关键依赖: weixin-java-cp, Freemarker, Spring Boot Tomcat
2.6 ctsp-rmb-agent (JAR -- RMB代理)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-rmb-agent |
| Packaging | jar |
核心职责:
- 轻量级RMB消息发送工具包
- 封装RMB消息序列化/反序列化
- 独立于主应用,供外部系统直接引用
- 提供JSON映射和序列号生成
关键类: SendRmbTools, JsonMapper, SeqNoUtil, JsonSerializeUtil, DateUtil
关键依赖: weservice-werpc, weservice-wemq, rmb-api
2.7 ctsp-udf (JAR -- Hive UDF)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-udf |
| 名称 | zctsp任务调度平台udf函数 |
核心职责:
- 自定义Hive UDF函数
- 供Hive SQL在执行时直接调用
- 作为依赖包打入executor模块
关键依赖: commons-lang3, Jackson, Log4j2
2.8 ctsp-zcommon (JAR -- 公共模块)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-zcommon |
| 名称 | zctsp任务调度平台公共服务 |
核心职责:
- 全系统共享的模型定义(Model/DTO/Entity)
- 枚举定义(任务类型、模块类型、规则类型等)
- 常量定义(BdpBatchConstants等)
- 自定义注解(AutoIncrement自增主键、LogContext等)
- 异常体系(BusinessException等)
- BDP SDK客户端配置
- RMB公共工具
- 变量展开工具(VariableExpander)
包结构: cn.webank.cnc.zctsp.annotation, config, constant, enums, exp, log, model, utils
2.9 ctsp-zinfrastructure (JAR -- 基础设施/DAO)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-zinfrastructure |
| Packaging | jar |
核心职责:
- MyBatis代码自动生成(通过zcnc-sdk-starter-mybatisplugin)
- 从ERM/SQL文件自动生成DAO、DTO、Mapper XML
- JPA注解支持
- 自动生成的Mapper基类
代码生成配置:
- SQL源文件:
ctsp.sql - 目标包:
cn.webank.cnc.zctsp.infrastructure - JPA开关:
Y
2.10 ctsp-common-sdk (JAR -- 公共SDK)
| 属性 | 值 |
|---|---|
| ArtifactId | ctsp-common-sdk |
| Packaging | jar |
核心职责:
- 供外部系统集成的轻量SDK
- 任务信息生成工具(TaskGenerateUtil)
- 数据质量检查规则信息(GenerateDataCheckRuleInfo)
- HQL检查信息(GenerateHqlCheckInfo)
- 公共枚举定义
- MD5/日期/字符串工具类
- 业务异常定义
三、包架构
3.1 bctsp-app 包结构
cn.webank.cnc.bdp
|-- ZappApplication.java (Spring Boot启动类)
|-- aop/ (AOP切面: LogUtilAspect)
|-- config/
| |-- configuration/ (配置类)
| | |-- ComConfiguration (通用配置)
| | |-- EmbeddedTomcatConfiguration (内嵌Tomcat)
| | |-- TspDataSourceConfiguration (数据源)
| | |-- TspPubDataSourceConfiguration (公共数据源)
| | |-- WebConfiguration (Web MVC配置)
| | |-- FilterConfiguration (过滤器)
| | |-- EsbSdkConfig (ESB SDK配置)
| | |-- ItsmConfig (ITSM配置)
| | |-- PubTdsqlProperty (TDSQL属性)
| |-- LifeCycleListener (生命周期监听)
| |-- ZappConfig (应用配置)
| |-- TspFullDcnInfoCfg (全DCN信息配置)
|-- constant/ (常量)
|-- generatemybatis/ (自动生成的MyBatis DAO/DTO)
|-- task/
| |-- analysis/ (分析相关)
| |-- common/ (公共常量/工具)
| | |-- exception/ (异常定义)
| | |-- util/ (工具类)
| | |-- json/ (JSON序列化)
| |-- controller/ (控制器)
| |-- dao/ (DAO层)
| | |-- mapper/ (MyBatis Mapper接口)
| | |-- constant/ (DAO常量)
| |-- model/ (数据模型)
| |-- enums/ (枚举)
| |-- service/ (服务层)
| | |-- view/ (视图服务/Controller)
| |-- util/ (工具类)3.2 bctsp-schedule 包结构
cn.webank.cnc.zctsp
|-- ScheduleApplication.java (Spring Boot启动类)
|-- aop/ (AOP切面)
|-- config/
| |-- configuration/
| | |-- QuarzConfiguration (Quartz配置)
| | |-- ScheduleConfiguration (调度配置)
| | |-- TspDataSourceConfiguration
| |-- BdpBatchConfig (批处理配置)
| |-- SystemVariable / ExtSystemVariable (系统变量)
|-- constant/ (常量/枚举)
|-- dao/
| |-- face/ (DAO接口)
| |-- impl/ (DAO实现)
| |-- mapper/ (MyBatis Mapper)
|-- model/ (数据模型)
|-- rmb/
| |-- face/ (RMB接口)
| |-- handler/ (RMB处理器)
| |-- param/ (RMB参数)
| |-- testPlaform/ (测试平台RMB)
|-- service/
| |-- schedule/ (Quartz定时任务)
| | |-- TaskSchedule.java (核心调度引擎)
| | |-- TaskManageSchedule (任务管理)
| | |-- TaskMoniterSchedule (任务监控)
| | |-- TaskReportSchedule (报表调度)
| | |-- TaskRunHstSchedule (运行历史)
| | |-- TaskCrossLineDependSchedule (跨线依赖)
| | |-- TaskHiveTmpTableSchedule (临时表调度)
| | |-- TaskOneTime (一次性任务)
| | |-- TaskTemplateExpansionSchedule (模板扩展)
| | |-- TaskServiceIdleRecordSchedule (服务空闲记录)
| | |-- TaskServiceStatusIntervalSchedule (服务状态间隔)
| |-- impl/ (RMB消息处理实现, TspServiceImplXXXX)
| |-- rule/
| | |-- base/ (规则接口)
| | |-- handler/ (规则处理器)
| |-- api/ (RMB API服务)
| |-- dataclean/ (数据清理)
| |-- expansion/ (批处理扩展)
| |-- springbatch/ (Spring Batch集成)
| |-- taskExec/ (任务执行器)
| |-- DateSwitch/ (日期切换)
| |-- AbstractModuleService.java (模块服务抽象基类)
| |-- ITaskModuleService.java (模块服务接口)
| |-- TaskRunService.java (任务运行服务)
| |-- TaskRunModuleService.java (任务运行模块服务)
| |-- TaskPlanService.java (任务计划服务)
| |-- TaskTemplateService.java (任务模板服务)
| |-- 50+个TaskXxxModuleService (各类型模块服务)
|-- util/ (工具类)3.3 bctsp-executor 包结构
cn.webank.cnc.zctsp
|-- ExecutorApplication.java (Spring Boot启动类)
|-- aop/ (AOP切面)
|-- config/
| |-- ExchangisConfig (Exchangis配置)
| |-- QualitisConfig (Qualitis配置)
|-- constant/
|-- dao/ (同schedule类似结构)
|-- dto/ (数据传输对象)
|-- model/ (数据模型)
|-- service/
| |-- rule/ (数据质量规则引擎)
| |-- springbatch/ (Spring Batch)
| |-- param/ (执行参数)
| |-- quartz/ (Quartz任务)
| |-- AbstractModuleService.java (模块抽象基类)
| |-- TaskSchedule.java (执行调度)
| |-- TaskRunService.java (任务运行)
| |-- QualitisService.java (Qualitis数据质量平台)
| |-- CdaService.java (CDA服务)
| |-- EtlGrayCtlService.java (ETL灰度控制)
| |-- TaskHQLExplainService.java (HQL Explain分析)
| |-- TaskHiveTmpTableService.java (Hive临时表管理)
| |-- 50+个TaskXxxModuleService (各类型执行模块)
|-- util/ (工具类)3.4 ctsp-analysis 包结构
cn.webank.cnc.zctsp
|-- AnalysisApplication.java (Spring Boot启动类)
|-- common/
| |-- cache/ (缓存)
| |-- constant/ (常量: 血缘来源/任务类型/信号类型等)
| |-- exception/ (异常)
|-- config/ (配置)
|-- dao/
| |-- mapper/
| | |-- mysql/ (MySQL Mapper: 14个)
| | |-- neo4j/ (Neo4j Mapper: 12个)
|-- model/
| |-- lineAge/ (血缘模型, ~30个类)
| |-- pace/ (PACE发布模型)
| |-- task/ (任务分析模型)
|-- protocol/ (协议/响应对象)
|-- service/
| |-- api/ (RMB API: ServiceCode2001-3006)
| |-- function/ (业务功能)
| | |-- LineAgeAnalyzeService (血缘分析核心)
| | |-- MailService (邮件服务)
| | |-- TaskCycleCheckService (环检测)
| | |-- TaskEffectResultService (任务影响分析)
| | |-- TaskExceptionService (任务异常分析)
| | |-- CapabilityCheckService (能力检查)
| | |-- IMSService (IMS告警)
| |-- impl/ (Neo4j实现)
| |-- view/ (视图服务)
|-- util/ (工具类: 血缘解析/邮件/图表等)四、核心类详解
4.1 ScheduleApplication (调度服务启动类)
- 路径:
bctsp-schedule/.../ScheduleApplication.java - 类型: Spring Boot Application
- 注解:
@SpringBootApplication,@EnableAspectJAutoProxy,@EnableTransactionManagement(ASPECTJ),@EnableAsync - ComponentScan:
cn.webank.cnc.zctsp.*(排除cn.webank.cnc.bdp.sdk.*) - 本地调试: 支持
cncLocalRunJVM参数加载本地配置 - 配置加载:
{confPath}/bctsp-schedule.properties,bctsp-schedule-env.properties,rmb-client.properties
4.2 ExecutorApplication (执行服务启动类)
- 路径:
bctsp-executor/.../ExecutorApplication.java - 类型: Spring Boot Application
- 注解: 与ScheduleApplication相同
- ComponentScan:
cn.webank.cnc.zctsp.* - 额外配置:
bctsp-executor.properties,bctsp-executor-env.properties
4.3 ZappApplication (Web控制台启动类)
- 路径:
bctsp-app/.../ZappApplication.java - 类型: Spring Boot Application
- 注解: 与上面类似
- ComponentScan:
cn.webank.cnc.bdp.*+cn.webank.cnc.zctsp.* - 注意: 扫描两个包前缀,因为app模块同时包含 bdp 和 zctsp 包的代码
4.4 TaskSchedule (核心调度引擎)
- 路径:
bctsp-schedule/.../service/schedule/TaskSchedule.java - 类型:
@Service - 核心方法:
taskRunSchedule()-- 由Quartz定时触发
调度流程详解:
- 停批检查: 检查
threadPoolManager.isBatchServiceStopped() - 分布式锁: 通过
dao.updateTaskLockByValueAndTime()获取调度锁(单节点执行),超时1分钟自动释放 - 加载任务实例:
getRunTaskList()分页读取近30天的运行中任务实例(每页2000条),按 taskSeq 范围分页 - 加载配置:
getAllTaskCfgList()获取所有任务配置,getAllTaskReferList()获取依赖关系 - 依赖计算:
- 构建任务间依赖图 (
mapTaskIdRef,mapTaskSeqRef) - 计算自依赖(同taskId不同batch_date的前后依赖)
- 处理多参数任务的聚合状态
- 构建任务间依赖图 (
- 状态流转: 对每个任务实例判断:
TASK_WAIT-> 等待上游 + 等待时间TASK_WAIT_BASE-> 仅等待上游依赖TASK_WAIT_TIME-> 仅等待调度时间TASK_READY-> 可以执行(依赖完成 + 时间到达)
- 二次确认: 可选的依赖任务再次检查(
isDoubleCheckTaskReferSwitch) - 乐观锁:
dao.updateTaskRunLock(entity)锁定任务由本实例调度 - 释放锁: 调度完成后释放分布式锁
排序策略: 按优先级降序 + taskSeq升序排序,高优先级任务优先调度
4.5 TaskRunService (任务运行服务)
- 路径:
bctsp-schedule/.../service/TaskRunService.java - 类型:
@Service("taskRunService") - 核心方法:
addMsgTaskToRun()-- 响应RMB消息创建任务实例
流程:
- 判断任务类别(分钟级/天级)
- 分钟级任务: 根据执行时间窗口和间隔生成多个实例
- 天级任务: 处理单参数/多参数
- 多参数任务: 按
param_group_ids展开参数组合 - 写入
task_run表(dao.copyTaskToRun()) - 处理
need_ack(需确认)标记 - 记录任务日志
- 调用
taskRunModuleService.expandTaskModule()扩展模块实例
4.6 AbstractModuleService (模块服务抽象基类)
- 路径:
bctsp-schedule(bctsp-executor)/.../service/AbstractModuleService.java - 职责: 所有模块服务的基类
- 关键设计:
- 持有
TaskBasicModuleInstance(模块实例) - 持有
IBdpDao(数据访问) - 提供
record(msg)方法记录日志 - 内部类
ModuleFileWriter继承FileWriter,在写入文件的同时缓存日志内容,最终写入DB
- 持有
4.7 ITaskModuleService (模块服务接口)
- 路径:
bctsp-schedule(bctsp-executor)/.../service/ITaskModuleService.java - 方法:
createTaskInstance(moduleID, taskId, taskSeq, taskBasicModuleInstance) - 注解:
@ITaskModuleServiceProductRule(moduleType=...)-- 通过自定义注解标识模块类型
4.8 TaskHive2ESModuleService (Hive到ES同步模块)
- 路径:
bctsp-schedule/.../service/TaskHive2ESModuleService.java - 注解:
@ITaskModuleServiceProductRule(moduleType = BdpBatchConstants.MODULE_TYPE_HIVE2ES) - 职责: 创建Hive到Elasticsearch同步的任务实例
- 流程:
- 获取
TaskHive2ESModuleCfg配置 - 检查是否已有实例
- 不存在则创建新实例
- 计算配置签名(signature)用于变更检测
- 获取
4.9 TaskColumnMonitorModuleService (列监控模块)
- 路径:
bctsp-schedule/.../service/TaskColumnMonitorModuleService.java - 注解:
@ITaskModuleServiceProductRule(moduleType=BdpBatchConstants.MODULE_TYPE_COLUMN_MONITOR) - 职责: 创建列级数据质量监控任务实例
- 流程:
- 获取
TaskColumnMoniModuleCfg(列监控配置) - 获取
TaskColumnMoniRuleCfg(监控规则) - 创建
TaskColumnMoniModuleInstance(监控实例) - 支持多种检查规则类型
- 获取
4.10 TaskHiveCalculateModuleService (Hive计算模块)
- 路径:
bctsp-schedule/.../service/TaskHiveCalculateModuleService.java - 注解:
@ITaskModuleServiceProductRule(moduleType=BdpBatchConstants.MODULE_TYPE_HIVE_CALCULATE) - 职责: Hive SQL计算任务
- 配置模型:
TaskHiveCalculateModuleCfg,TaskHiveCalculateModuleInstance
4.11 TaskShellModuleService (Shell脚本模块)
- 路径:
bctsp-schedule/.../service/TaskShellModuleService.java - 注解:
@ITaskModuleServiceProductRule(moduleType=BdpBatchConstants.MODULE_TYPE_SHELL) - 职责: Shell脚本执行任务
- 配置模型:
TaskShellModuleCfg,TaskShellModuleInstance
五、数据模型(107个Mapper XML)
5.1 Mapper XML 统计
| 模块 | Mapper XML数 |
|---|---|
| bctsp-app | ~93个 (mappers/ + pubmapper/ + mybatis-mappers/) |
| bctsp-schedule | ~8个 (dao/mapper/) |
| bctsp-executor | ~5个 (dao/mapper/ + dao/pubmapper/) |
| ctsp-analysis | ~26个 (14 MySQL + 12 Neo4j) |
| 合计 | ~107+ |
5.2 核心数据表(通过Mapper命名推断)
任务配置相关:
| 表/实体 | 说明 |
|---|---|
| TaskCfg / TaskRun | 任务配置表 / 任务运行实例表 |
| TaskRefer / TaskCfgRefer / TaskCfgReferRelate | 任务依赖关系 |
| TaskParam / TaskParamGroup | 任务参数 / 参数组 |
| TaskGroup | 任务分组 |
| TaskBasicModuleCfg / TaskBasicModuleInstance | 基础模块配置 / 实例 |
| TaskSubject | 任务主题 |
| TaskTag / TaskTagCfg | 任务标签 |
| TaskLock | 任务分布式锁 |
| TaskProduct | 任务产品 |
| TaskVariable | 任务变量 |
| TaskShell / TaskShellModule | Shell脚本配置 |
运行监控相关:
| 表/实体 | 说明 |
|---|---|
| TaskRunBak | 任务运行备份 |
| TaskLog / TaskModuleLog | 任务日志 / 模块日志 |
| TaskRmbLog | RMB消息日志 |
| TaskRmbResend | RMB重发记录 |
| TaskBatchSchedule | 批次调度 |
| TaskScheduleActiveQueue / TaskScheduleQueueCtrl | 调度活跃队列 / 队列控制 |
| TaskServiceStatus | 服务状态 |
| TaskServiceReport | 服务报表 |
| TaskWarnAdjust | 告警调整 |
| TaskBypassVerify | 旁路验证 |
| TaskRecChangeOpLog | 记录变更操作日志 |
| TaskDependency | 任务依赖图 |
| TaskGraph / TaskGraphElement | 图形/图形元素 |
模块配置相关:
| 表/实体 | 说明 |
|---|---|
| TaskModuleColumnMoniCfg / TaskTspColumnMonitor | 列监控配置 |
| TaskTspColumnMoniRule / TaskTspColumnMonitorRuleList | 列监控规则 |
| TaskModuleCrossLineDependCfg | 跨线依赖配置 |
| TaskModuleDataReturnPullCfg | 数据回拉配置 |
| TaskModuleFeatureProcessCfg | 特征处理配置 |
| TaskModuleFpsToHiveCfg | FPS到Hive配置 |
| TaskModuleHiveCalBranchCfg | Hive计算分支配置 |
| TaskModuleHiveFilesToFpsCfg | Hive文件到FPS配置 |
| TaskModuleHiveMaskCfg | Hive脱敏配置 |
| TaskModuleHiveToJsonCfg | Hive转JSON配置 |
| TaskModuleRmsProcessCfg | RMS处理配置 |
| TaskModuleSplitTable | 分表配置 |
| TaskModuleTdSqlSalveMoniCfg | TDSQL从库监控配置 |
| TaskModuleTspShell | TSP Shell配置 |
| TaskModuleZipperArchiveCfg | 拉链归档配置 |
| TaskModuleZipperRecoverCfg | 拉链恢复配置 |
| TaskModuleFileExportRmbNoticeCfg | 文件导出RMB通知配置 |
| TaskColumnTransRowModuleCfg | 列转行配置 |
| TaskRowTransColumnModuleCfg | 行转列配置 |
| TaskIncreaseCompareModuleCfg | 增量比较配置 |
| TaskJson2TableModuleCfg | JSON转表配置 |
| TaskDataClean | 数据清理配置 |
| TaskMergeTable | 合并表配置 |
| TaskRowDynamicColumnCfg | 行动态转列配置 |
| TaskETLModuleCfg | ETL模块配置 |
| TaskHive2FpsModuleCfg | Hive到FPS配置 |
| TaskHive2TdSqlSqoodModuleCfg | Hive到TDSQL Sqoop配置 |
| TaskHive2hbaseBulkloadCfg | Hive到HBase BulkLoad配置 |
| TaskHbase2HiveSnapshotCfg | HBase到Hive快照配置 |
模板与计划:
| 表/实体 | 说明 |
|---|---|
| TaskTemplate / TaskTemplateGroup | 任务模板 / 模板组 |
| BdpTaskPlan / BdpTaskPlanDetail / BdpTaskPlanRun / BdpTaskPlanRunDetail | 任务计划 / 计划明细 / 计划运行 |
| TaskDateSwitchService / TaskDateSwitchServiceOpLog | 日期切换服务 / 操作日志 |
其他:
| 表/实体 | 说明 |
|---|---|
| BatchTagCfg | 批次标签配置 |
| CriticalPathCfg | 关键路径配置 |
| DataExtract / DataExtractTaskCfg | 数据抽取 |
| EtlGrayCtl | ETL灰度控制 |
| SystemRecover / TaskBackupTable | 系统恢复 / 备份表 |
| BdpTaskJobServerInfo | JobServer信息 |
| BdpVariable | 系统变量 |
| LogSatatics | 日志统计 |
| TaskFastRerunBatch | 快速重跑批次 |
| TaskEditItsmRecord | ITSM变更记录 |
| TmAdpResource | ADP资源 |
| TaskExceptionCheck | 异常检查 |
| Organization | 组织机构 |
| TspSpringBatchStepStatus / TspSpringBatchSystem | Spring Batch步骤状态/系统表 |
5.3 Neo4j图模型(ctsp-analysis)
节点类型:
SimpleTask-- 简单任务节点StaticTask-- 静态任务节点DBTable-- 数据库表节点ReleaseForm-- 发布单节点PublishFile-- 发布文件节点SubSystemForm-- 子系统表单节点BdpTask-- BDP任务节点BdpDBTable-- BDP数据库表节点
关系类型:
StaticTaskRelation-- 静态任务关系TasksRelationship-- 任务间关系TaskLineAge/LineAges-- 血缘关系ReleaseSubSystemRelation-- 发布-子系统关系SubSystemPublishFileRelation-- 子系统-文件关系PublishFileSimpleTaskRelation-- 文件-任务关系
六、任务调度机制(Quartz + 自定义分发引擎)
6.1 整体架构
+------------------+
| Quartz Scheduler |
| (定时触发) |
+--------+---------+
|
+--------v---------+
| TaskSchedule |
| (调度引擎核心) |
| - 依赖计算 |
| - 状态流转 |
| - 分布式锁 |
+--------+---------+
|
+--------------+--------------+
| |
+---------v---------+ +----------v--------+
| bctsp-schedule | | bctsp-executor |
| (任务分发/实例化) | | (任务执行) |
+---------+---------+ +----------+--------+
| |
+---------v---------+ +----------v--------+
| RMB消息总线 | | Linkis/BDP-TSS |
| (消息驱动) | | (提交Hive/Shell) |
+-------------------+ +-------------------+6.2 调度流程
- Quartz触发:
TaskSchedule.taskRunSchedule()由Quartz按cron表达式定时触发 - 获取分布式锁: 通过数据库行锁实现单节点调度
- 加载任务实例: 分页查询近30天的运行任务(状态非终态)
- 加载依赖关系: 读取所有任务配置和依赖关系,构建内存依赖图
- 计算状态流转:
- 遍历所有任务实例
- 检查上游依赖是否全部完成(SUCCESS/SKIP)
- 检查调度时间是否到达
- 检查自依赖(前一批次是否完成)
- 处理多参数任务的聚合状态
- 设置合适的状态:TASK_WAIT / TASK_WAIT_BASE / TASK_WAIT_TIME / TASK_READY
- 二次依赖确认: 可选的开关控制
- 乐观锁抢占:
updateTaskRunLock防止多实例重复调度 - 释放锁: 调度完成释放分布式锁
6.3 其他Quartz定时任务
| 定时类 | 职责 |
|---|---|
| TaskSchedule | 核心调度引擎 |
| TaskManageSchedule | 任务管理(清理、状态维护) |
| TaskMoniterSchedule | 任务监控(超时检测、告警) |
| TaskReportSchedule | 报表生成调度 |
| TaskRunHstSchedule | 运行历史归档 |
| TaskCrossLineDependSchedule | 跨业务线依赖调度 |
| TaskHiveTmpTableSchedule | Hive临时表清理 |
| TaskOneTime | 一次性任务处理 |
| TaskTemplateExpansionSchedule | 模板扩展调度 |
| TaskServiceIdleRecordSchedule | 服务空闲记录 |
| TaskServiceStatusIntervalSchedule | 服务状态间隔检测 |
| TaskRefreshSchedule (executor) | 执行器任务刷新 |
| TspBussinessJob (executor) | 业务Job |
6.4 RMB消息驱动的任务创建
Schedule模块通过RMB接收外部消息,按ServiceCode路由到不同的处理实现:
| ServiceCode范围 | 处理类 | 说明 |
|---|---|---|
| 0001-0006 | TspServiceImpl000x | 任务基础操作(创建/查询/修改/删除) |
| 1003-1004 | TspServiceImpl100x | 计划相关操作 |
| 2001-2005 | TspServiceImpl200x | 任务运行控制(触发/重跑/暂停/恢复) |
| 2103-2109 | TspServiceImpl210x | 扩展运行操作 |
| 3001-3003 | TspServiceImpl300x | 批量操作 |
| 3100 | TspServiceImpl3100 | 旁路验证 |
| 4001-4002 | TspServiceImpl400x | 日期切换 |
| 5001 | TspServiceImpl5001 | 模板操作 |
| 6001-6002 | TspServiceImpl600x | 其他操作 |
| 9999 | TspServiceImpl9999 | 系统级操作 |
七、ETL执行器(50+ 模块类型)
7.1 完整模块类型列表
通过分析 bctsp-schedule/service/ 和 bctsp-executor/service/ 目录下的 Task*ModuleService 类,系统支持以下模块类型:
| 模块类型 | 类名 | 说明 |
|---|---|---|
| Hive SQL计算 | TaskHiveCalculateModuleService | Hive SQL执行(核心ETL) |
| Hive分支计算 | TaskHiveCalBranchModuleService | Hive分支SQL执行 |
| Hive Check | TaskHiveCheckModuleService | Hive数据检查 |
| Hive2ES | TaskHive2ESModuleService | Hive到Elasticsearch同步 |
| Hive2Fps | TaskHive2FpsModuleService | Hive到FPS文件推送 |
| Hive2TdsqlCalc | TaskHive2TdsqlCalcModuleService | Hive到TDSQL(Calc方式) |
| Hive2TdsqlSqoop | TaskHive2TdsqlSqoopModuleService | Hive到TDSQL(Sqoop方式) |
| Hive2HbaseBulkload | TaskHive2HbaseBulkloadModuleService | Hive到HBase BulkLoad |
| HiveFiles2Fps | TaskHiveFiles2FpsModuleService | Hive文件到FPS |
| HiveMask | TaskHiveMaskModuleService | Hive数据脱敏 |
| HiveToJson | TaskHiveToJsonModuleService | Hive到JSON转换 |
| Hbase2Hive | TaskHbase2HiveSnapshotModuleService | HBase到Hive快照 |
| Es2Hive | TaskEs2HiveModuleService | ES到Hive同步 |
| FpsToHive | TaskFpsToHiveLoadModuleService | FPS到Hive加载 |
| ETL | TaskETLModuleService | 通用ETL模块 |
| Shell | TaskShellModuleService | Shell脚本执行 |
| TspShell | TaskTspShellModuleService | TSP Shell执行 |
| Signal | TaskSignalModuleService | 信号检测模块 |
| FileSignal | TaskFileSignalModuleService | 文件信号检测 |
| SpringBatch | TaskSpringBatchJobModuleService | Spring Batch任务 |
| DataCheck | TaskDataCheckModuleService | 数据质量检查 |
| DataCheckNewValue | TaskDataCheckNewValueModuleService | 新值检查 |
| DataCheckVolatility | TaskDataCheckVolatilityModuleService | 波动率检查 |
| ColumnMonitor | TaskColumnMonitorModuleService | 列级监控 |
| HQLCheck | TaskHQLCheckModuleService | HQL语法检查 |
| ParaCheck | TaskParaCheckModuleService | 参数检查 |
| CrossLineDepend | TaskCrossLineDependModuleService | 跨线依赖 |
| MergeTable | TaskMergeTableModuleService / TaskMergeTableInitModuleService | 合并表 |
| SplitTable | TaskSplitTableModuleService | 分表 |
| ZipperArchive | TaskZipperArchiveModuleService | 拉链表归档 |
| ZipperRecover | TaskZipperRecoverModuleService | 拉链表恢复 |
| Json2Table | TaskJson2TableModuleService | JSON转表 |
| ColumnTransRow | ColumnTransRowModuleService | 列转行 |
| RowTransColumn | RowTransColumnModuleService | 行转列 |
| RowDynamicTransCol | TaskRowDynamicTransColModuleService | 行动态转列 |
| IncrementCompare | TaskIncreCompareModuleService | 增量比较 |
| DataClean | TaskDataCleanModuleService | 数据清理 |
| DataReturnPull | TaskDataReturnPullModuleService | 数据回拉 |
| FeatureProcess | TaskFeatureProcessModuleService | 特征处理 |
| IndexTagCal | TaskIndexTagCalModuleService | 指标标签计算 |
| IndexTagJson | TaskIndexTagJsonModuleService | 指标标签JSON |
| RmsProcess | TaskRmsProcessModuleService | RMS处理 |
| BdapPush | TaskBdapPushModuleService | BDAP推送 |
| TDSqlSlaveMonitor | TaskTDSqlSlaveMonitorModuleService | TDSQL从库监控 |
| TiETL | TaskTiETLModuleService | TiDB ETL |
| Run | TaskRunModuleService | 直接运行 |
7.2 数据质量检查规则引擎
规则处理器(Schedule模块 - 调度阶段):
| 处理器 | 规则 |
|---|---|
| EmptyTableCheckRuleHandler | 空表检查 |
| NullFieldCheckRuleHandler | 空字段检查 |
| PrimaryCheckRuleHandler | 主键检查 |
| FieldBoundaryCheckRuleHandler | 字段边界检查 |
| FieldEnumCheckRuleHandler | 字段枚举检查 |
| FieldLengthCheckRuleHandler | 字段长度检查 |
| SumCheckRuleHandler | 总和检查 |
| SumRelativeCheckHqlRuleHandler | 总和相对检查 |
| NullRateCheckHqlRuleHandler | 空值率检查 |
| BoundRegionCheckHqlRuleHandler | 边界范围检查 |
| DayCycleRelativeCheckHqlRuleHandler | 日周期相对检查 |
| FieldEnumNewValueCheckRuleHandler | 字段枚举新值检查 |
| FieldLengthNewValueCheckRuleHandler | 字段长度新值检查 |
| NumberRangeNewValueCheckRuleHandler | 数值范围新值检查 |
规则处理器(Executor模块 - 执行阶段):
| 处理器 | 规则 |
|---|---|
| CountRelativeCheckRuleHandler | 计数相对检查 |
| CountRelativeRateCheckRuleHandler | 计数相对率检查 |
| CountRelative7DayCheckRuleHandler | 7天计数相对检查 |
| SumRelativeCheckRuleHandler | 总和相对检查 |
| SumRelativeRateCheckRuleHandler | 总和相对率检查 |
| SumRelative7DayCheckRuleHandler | 7天总和相对检查 |
| NullRateCheckRuleHandler | 空值率检查 |
| EnumRelativeCheckRuleHandler | 枚举相对检查 |
| NewEnumCheckRuleHandler | 新枚举检查 |
| BoundRegionCheckRuleHandler | 边界范围检查 |
| DayCycleRelativeCheckRuleHandler | 日周期相对检查 |
| CountDayCycleRelativeCheckRuleHandler | 计数日周期相对检查 |
| NewValueCheckFieldEnumRuleHandler | 新值枚举检查 |
| NewValueCheckFieldLengthRuleHandler | 新值长度检查 |
| NewValueCheckNumberRangeRuleHandler | 新值数值范围检查 |
| TaskVolatilityCheckRuleHandler | 波动率检查 |
7.3 模块工厂模式
通过 @ITaskModuleServiceProductRule(moduleType=...) 注解 + TaskModuleServiceProductFactory 工厂类实现模块的动态创建。每个模块服务类通过注解声明自己处理的模块类型,工厂根据模块类型自动查找并实例化对应的服务。
八、分析服务(Neo4j血缘分析, 任务影响分析, 邮件报告)
8.1 血缘分析
核心服务类: LineAgeAnalyzeService, LineAgeAnalyzePublicService, LineAgeAnalyzeViewService
数据源:
- MySQL血缘:
MySQLLineAgeMapper-- 从MySQL数据库读取任务配置中的SQL,解析血缘 - Neo4j血缘:
Neo4jLineAgeMapper等12个Neo4j Mapper -- 在Neo4j图数据库中存储和查询血缘关系 - Hive SQL解析:
HqlLineageParse,HiveParseUtil-- 使用Hive SemanticAnalyzer解析SQL中的表级血缘
血缘分析流程:
- 定时加载任务配置(
LineAgeLoadDataSchedule) - 解析任务SQL,提取输入/输出表
- 在Neo4j中创建Task和DBTable节点及关系
- 提供上下游血缘查询API
- 支持任务影响分析(上游变更影响哪些下游任务)
血缘模型层次:
BdpTaskLineAges-- 任务级血缘BdpDBTableLineAges-- 表级血缘TaskLineAge/LineAges/LineAgesData-- 具体血缘关系TaskRunTime/TaskModuleRunTime-- 运行时间信息
8.2 任务影响分析
核心服务: TaskEffectResultService, TaskEffectResultSchedule
功能:
- 分析某个任务变更后影响的下游任务链路
- 基于Neo4j图遍历实现
- 生成影响分析报告
8.3 邮件报告
核心服务: MailService, MailBaseService, MailTspViewService
功能:
- Exchange Web Services (EWS) 集成
- 定时生成任务运行报告
- 支持HTML/Excel附件
- 可配置邮件模板
- JFreeChart生成趋势图
- 支持可配置邮件(
ConfigurableMail)
8.4 其他分析功能
| 服务 | 功能 |
|---|---|
| TaskCycleCheckService | 任务依赖环检测(Tarjan算法实现) |
| TaskExceptionService | 任务异常分析与统计 |
| TaskIncrementAnalyzeService | 增量任务分析 |
| CapabilityCheckService | 任务能力检查 |
| Tsp3hReportService | 3小时报告 |
| CacheInfoService | 缓存信息管理 |
| TaskCfgCheckService | 任务配置检查 |
8.5 PACE发布管理
ctsp-analysis还集成了PACE(发布管理)相关功能:
PaceHelpService-- PACE辅助服务Neo4PublishFileImpl-- 发布文件管理Neo4ReleaseFormImpl-- 发布单管理Neo4SubSystemFormImpl-- 子系统表单管理
九、Controller层(REST API)
9.1 bctsp-app Controller列表
| Controller | 路径 | 说明 |
|---|---|---|
| TspCommonController | cn.webank.cnc.bdp.task.controller | 通用请求处理(通过handle_type参数路由),支持动态方法调用 |
| TspJsonAjaxController | cn.webank.cnc.bdp.task.controller | JSON Ajax请求处理,继承自SDK的JsonAjaxController |
| FileController | cn.webank.cnc.bdp.task.controller | 文件上传/下载 |
| SqlController | cn.webank.cnc.bdp.task.controller | SQL查询执行 |
| UploadBatchTaskCfgExcelController | cn.webank.cnc.bdp.task.controller | 批量任务配置Excel上传 |
| TspTaskDateSwitchServiceController | cn.webank.cnc.bdp.task.service.view | 日期切换服务控制器 |
9.2 TspCommonController 详解
该Controller采用传统的Spring MVC AbstractController 模式,通过 handle_type 参数进行请求路由:
getMaxTaskId-- 获取最大任务IDgenerateTaskIds-- 批量生成任务IDproductKey-- 获取产品Keyproperty-- 获取配置属性findTaskIdListForAutoComplete-- 任务ID自动补全- 其他方法通过反射调用
9.3 视图服务Controller
bctsp-app中存在大量的视图服务类(在 service/view/ 包下),它们充当MVC的Controller角色,处理页面请求和返回视图。这些类通常继承自框架的基类Controller。
9.4 移动端API
ctsp-mobile模块提供移动端REST API:
- 任务运行状态查询
- 半小时报告数据
- 任务依赖关系图
- 任务搜索
- 任务失败率统计
- 数据源选择
十、RMB集成
10.1 RMB架构
RMB (Reliable Message Bus) 是微众银行的内部消息总线,基于WeService(WeRPC/WeMQ)框架:
外部系统 --> RMB消息 --> bctsp-schedule (接收/处理)
|
AppRmbService (异步)
AppSyncRmbService (同步)
|
ITspRequestHandler (路由)
|
TspServiceImplXXXX (业务处理)10.2 RMB组件
| 组件 | 模块 | 说明 |
|---|---|---|
| ctsp-rmb-agent | 独立模块 | 轻量级RMB发送工具,供外部系统使用 |
| AppRmbService | bctsp-schedule | 异步RMB消息处理 |
| AppSyncRmbService | bctsp-schedule | 同步RMB消息处理 |
| AnalysisSyncRmbService | ctsp-analysis | 分析服务同步RMB |
| RmbRequestHandlerRegister | ctsp-mobile | 移动端RMB注册 |
| RmbCommonUtil / RmbSendUtils | 共用 | RMB发送工具 |
| SendRmbWithXMLContentTools | 共用 | XML格式RMB消息发送 |
| SendTssRmbWithXMLContentTools | 共用 | TSS格式RMB消息发送 |
10.3 RMB消息处理(ServiceCode路由)
Schedule模块RMB处理:
ServiceCode 0001-9999 对应不同的业务操作。每个 TspServiceImplXXXX 类实现 ITspRequestHandler 接口,通过ServiceCode注册到 HandlerHolderServiceImpl 进行路由分发。
Analysis模块RMB处理:
ServiceCode 2001-3006 对应分析相关的操作,如血缘查询、任务信息查询等。
10.4 RMB测试工具
SendRmbTools(ctsp-rmb-agent) -- 独立RMB发送工具SendRmbWithXMLContentTools-- XML内容RMB发送- executor模块还额外打包了一个
RmbSendclassifier的JAR,主类为SendRmbTools
十一、业务流程
11.1 任务配置流程
用户在bctsp-app Web界面配置任务
|
v
选择任务类型 (Hive计算/Shell/ETL等)
|
v
配置任务基本信息 (调度时间/依赖关系/重试策略)
|
v
配置任务模块 (选择模块类型并配置参数)
|
v
配置参数组 (可选, 用于多参数任务)
|
v
保存到数据库 (task_cfg / task_*_module_cfg 表)11.2 任务调度流程
Quartz定时触发
|
v
TaskSchedule.taskRunSchedule()
|
+-- 获取分布式锁
+-- 加载近30天任务实例
+-- 计算依赖关系图
+-- 状态流转判断
| |-- 检查上游依赖
| |-- 检查自依赖
| |-- 检查调度时间
| |-- 检查重试间隔
| |-- 检查系统停批状态
| v
+-- 更新状态: TASK_WAIT -> TASK_WAIT_BASE -> TASK_WAIT_TIME -> TASK_READY
|
v
TaskReady任务被Executor拉取执行11.3 任务执行流程
Executor检测到TASK_READY任务
|
v
加载任务模块配置
|
v
通过TaskModuleServiceProductFactory创建模块实例
|
v
按模块类型执行:
|-- HiveCalculate: 提交Hive SQL (via Linkis/BDP-TSS)
|-- Shell: 执行Shell脚本
|-- Hive2ES: Hive数据写入ES (via CLES-Client)
|-- Hive2Tdsql: 数据同步到TDSQL (via Sqoop/Exchangis)
|-- ColumnMonitor: 执行列级数据质量检查
|-- DataCheck: 执行数据质量检查规则
|-- ...
|
v
更新任务状态 (SUCCESS/FAIL)
|
v
记录运行日志和模块日志
|
v
触发下游任务调度11.4 RMB消息触发流程
外部系统发送RMB消息
|
v
bctsp-schedule接收消息
|
v
根据ServiceCode路由到TspServiceImplXXXX
|
v
TaskRunService.addMsgTaskToRun()
|
+-- 创建task_run记录
+-- 展开多参数任务
+-- 创建模块实例
+-- 记录任务日志
|
v
任务进入调度队列11.5 数据质量检查流程
任务配置数据检查模块
|
v
Schedule阶段:
|-- 创建检查实例
|-- 加载检查规则 (DataCheckRule/ColumnMoniRule)
|-- 生成检查SQL
|
v
Executor阶段:
|-- 执行检查SQL
|-- 通过规则引擎评估结果
| |-- SumRelativeCheck: 总和相对偏差检查
| |-- NullRateCheck: 空值率检查
| |-- EnumCheck: 枚举值检查
| |-- BoundRegionCheck: 边界范围检查
| |-- VolatilityCheck: 波动率检查
| |-- ...
|-- 记录检查结果
|-- 不合格则告警 (IMS告警)十二、配置与部署(50+ 配置变体, 多DCN)
12.1 配置目录结构
conf/ (生产配置)
|-- bctsp-app/ (Web控制台配置)
| |-- bctsp-app.properties
| |-- bctsp-app-env.properties
| |-- bctsp-app-nodes.env
| |-- rmb-client.properties
| |-- rmb-system-bctsp-app.properties
| |-- weservice.properties
| |-- cas.client.properties
| |-- sso.client.properties
| |-- um_client.properties
| |-- log4j.properties / log4j2.xml
|-- bctsp-schedule/ (调度服务配置, 同上结构)
|-- bctsp-executor/ (执行服务配置, 同上结构 + fps-client.properties)
|-- ccctsp-app/ (信用卡版本Web控制台)
|-- ccctsp-schedule/ (信用卡版本调度服务)
|-- ccctsp-executor/ (信用卡版本执行服务)
|-- ctsp-analysis/ (分析服务配置)
|-- ctsp-mobile/ (移动端配置)
conf-local/ (本地开发配置, 结构同上)12.2 多DCN部署
系统支持多DCN(Data Center Node)部署:
bctsp-*系列: 零售/通用版本(b = batch, ctsp = common task scheduling platform)ccctsp-*系列: 信用卡版本(cc = credit card)- 配置中包含
TspFullDcnInfoCfg(全DCN信息配置) - 数据源配置支持多DCN切换(
TspDataSourceConfiguration,TspPubDataSourceConfiguration) - conf目录下为每个DCN维护独立的配置文件
12.3 配置文件数量统计
| 配置类型 | 数量 |
|---|---|
| 生产环境配置 (conf/) | ~50+ 个properties文件 |
| 本地开发配置 (conf-local/) | ~50+ 个properties文件 |
| Mapper XML文件 | ~107个 |
| Spring上下文XML (biz/) | ~6个 |
| DDL/DML脚本 | ~100+ 个SQL文件 |
| 配置变体总计 | 450+ |
12.4 关键配置项
bctsp-schedule.properties (推断):
logFilePath-- 日志文件路径(默认/data/cnc_nfs/data/ctsp_zschedule/)- Quartz相关配置
- 数据源配置
- RMB消息队列配置
- BDP-TSS/Linkis连接配置
bctsp-executor.properties (推断):
- 执行线程池配置
- Linkis/BDP-TSS连接配置
- FPS客户端配置
- Exchangis连接配置
- Qualitis连接配置
rmb-client.properties:
- RMB消息总线连接配置
- 消息队列消费组配置
- ServiceCode注册
weservice.properties:
- WeRPC/WeMQ服务端点
- 服务注册配置
12.5 部署模式
每个服务模块支持独立部署:
- bctsp-app: WAR包部署到Tomcat或Spring Boot内嵌Tomcat运行
- bctsp-schedule: Spring Boot JAR,支持多实例部署(通过数据库分布式锁保证单节点调度)
- bctsp-executor: Spring Boot JAR,支持多实例并行执行
- ctsp-analysis: WAR包,独立部署
- ctsp-mobile: Spring Boot JAR,独立部署
十三、外部系统集成
13.1 集成系统总览
| 外部系统 | 集成方式 | 模块 | 说明 |
|---|---|---|---|
| Hive | JDBC/Linkis/BDP-TSS | schedule/executor | 大数据SQL计算引擎 |
| Hadoop HDFS | HDFS Client | app/executor | 分布式文件系统 |
| HBase | BulkLoad API | schedule/executor | NoSQL数据库 |
| Elasticsearch | CLES-Client | schedule/executor/app | 搜索引擎(通过cles代理) |
| TDSQL | JDBC/Sqoop/Exchangis | schedule/executor | 分布式数据库 |
| Linkis | Linkis Computation Client | schedule/executor | 计算中间件 |
| BDP-TSS | TSS Client | schedule/executor | 任务提交服务 |
| RMB | rmb-api + WeService | 全部 | 消息总线 |
| FPS | fps-client | schedule/executor | 文件传输服务 |
| Exchangis | exchangis-client | executor | 数据交换服务 |
| Neo4j | Neo4j JDBC/Bolt | analysis | 图数据库(血缘) |
| Qualitis | HTTP API | executor | 数据质量平台 |
| ESB | esb-sdk | app | 企业服务总线 |
| Exchange Mail | EWS Java API | analysis | 邮件服务 |
| 企业微信 | weixin-java-cp | mobile | 企业微信推送 |
| SSO/UM | zcnc-sdk-starter-um | app/mobile/analysis | 统一认证/用户管理 |
| IMS | HTTP API | schedule/executor/analysis | 监控告警 |
| ITSM | HTTP API | app | IT服务管理 |
| HR系统 | HTTP API | mobile | 人力资源系统 |
| GNS | gns-client | 全部 | 全局命名服务 |
| BDAP | HTTP API | schedule/executor | 大数据分析平台 |
| Qualitis | HTTP API | executor | 数据质量管理平台 |
| Zookeeper | ZK Client | 全部 | 分布式协调服务 |
13.2 数据库支持
- MySQL / TDSQL: 主数据库(任务配置、运行实例、日志等)
- Neo4j: 图数据库(血缘关系存储)
- H2: 单元测试数据库
- Derby: 嵌入式数据库(特定场景)
13.3 SDK集成
系统大量使用微众银行CNC SDK(zcnc-sdk-starter-*):
| SDK模块 | 用途 |
|---|---|
| zcnc-sdk-starter-core | 核心框架(优雅重启等) |
| zcnc-sdk-starter-db | 数据库访问 |
| zcnc-sdk-starter-web-mvc | Web MVC框架 |
| zcnc-sdk-starter-rmb | RMB消息集成 |
| zcnc-sdk-starter-seq | 序列号生成 |
| zcnc-sdk-starter-um | 用户管理 |
| zcnc-sdk-starter-trace | 分布式追踪 |
| zcnc-sdk-starter-msgtools | 消息工具 |
| zcnc-sdk-starter-security | 安全框架 |
| zcnc-sdk-starter-systemstatus | 系统状态 |
| zcnc-sdk-starter-flowcontrol | 限流控制 |
| zcnc-sdk-starter-distributed-lock | 分布式锁 |
| zcnc-sdk-starter-task-exec | 任务执行框架 |
| zcnc-sdk-starter-io | IO工具 |
| zcnc-sdk-starter-simpletester | 测试框架 |
| zcnc-sdk-starter-data-clean | 数据清理 |
| zcnc-sdk-starter-i18n | 国际化 |
| zcnc-sdk-starter-mybatisplugin | MyBatis代码生成 |
附录:关键数据统计
| 指标 | 数量 |
|---|---|
| Maven模块数 | 10 |
| Java源文件总数(main) | ~1,936 |
| bctsp-app Java文件 | ~532 |
| Mapper XML文件 | ~107 |
| ETL模块类型 | 45+ |
| 数据质量检查规则类型 | 30+ |
| RMB ServiceCode处理类 | 20+ |
| Quartz定时任务类 | 13 |
| Neo4j Mapper | 12 |
| Controller类 | 6 |
| 配置properties文件 | 100+ |
| DDL/DML脚本 | 100+ |
| 外部系统集成 | 20+ |
报告生成时间: 2026-06-05分析工具: Claude Code (Automated Static Analysis)