# job-demo **Repository Path**: fakerlove/job-demo ## Basic Information - **Project Name**: job-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-24 - **Last Updated**: 2025-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Job Scheduler Demo - 任务调度系统示例 这是一个完整的任务调度系统示例,包含调度器和执行器,支持Netty+HTTP混合架构。 ## 项目结构 ``` demo/ ├── src/ # 主项目源码 │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── admin/ # 调度器管理模块 │ │ ├── core/ # 核心模块 │ │ └── DemoApplication.java │ └── resources/ ├── java-test-demo/ # Java独立执行器示例 │ └── java-test-demo/ │ ├── src/ │ │ └── main/ │ │ ├── java/ │ │ │ ├── com/ │ │ │ │ └── joker/ │ │ │ │ └── StandaloneJobExample.java │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── core/ # 核心模块 │ │ └── resources/ │ │ └── job-executor.properties │ ├── pom.xml │ └── README.md ├── springboot-test-demo/ # Spring Boot执行器示例 │ ├── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── joker/ │ │ │ └── springboottestdemo/ │ │ │ ├── SpringbootTestDemoApplication.java │ │ │ ├── SpringbootJobExample.java │ │ │ └── controller/ │ │ │ └── JobExecutorController.java │ │ └── resources/ │ │ └── application.yml │ ├── pom.xml │ └── README.md ├── pom.xml # 主项目Maven配置 ├── README.md # 项目说明文档 └── NETTY_HTTP_ARCHITECTURE.md # 架构说明文档 ``` ## 功能特性 ### 调度器功能 - ✅ 任务调度和管理 - ✅ 执行器注册和心跳 - ✅ 任务执行状态跟踪 - ✅ HTTP接口发送任务请求 - ✅ 任务取消和超时处理 - ✅ 线程池和任务队列管理 ### 执行器功能 - ✅ 支持Java独立应用和Spring Boot应用 - ✅ 基于Netty的网络通信 - ✅ 支持方法级别和类级别的任务处理器 - ✅ 自动注册和心跳机制 - ✅ HTTP接口接收任务执行请求 - ✅ 任务执行状态管理 - ✅ 线程池和FutureTask控制 ### 架构特性 - ✅ Netty+HTTP混合架构 - ✅ 注册和心跳使用Netty - ✅ 任务执行使用HTTP - ✅ 支持多种执行器类型 - ✅ 完善的错误处理和日志记录 ## 快速开始 ### 1. 启动调度器 ```bash # 编译主项目 mvn clean compile # 启动调度器 mvn spring-boot:run ``` 调度器将在 `http://localhost:9999` 启动。 ### 2. 启动Java独立执行器 ```bash # 进入Java执行器目录 cd java-test-demo/java-test-demo # 编译 mvn clean compile # 运行 mvn exec:java -Dexec.mainClass="com.joker.StandaloneJobExample" ``` Java执行器将在 `http://localhost:8080` 启动。 ### 3. 启动Spring Boot执行器 ```bash # 进入Spring Boot执行器目录 cd job-scheduler-samples/springboot-test-demo # 运行 mvn spring-boot:run ``` Spring Boot执行器将在 `http://localhost:8081` 启动。 ### 4. 测试任务执行 ```bash # 健康检查 curl http://localhost:8080/executor/health # Java执行器 curl http://localhost:8081/executor/health # Spring Boot执行器 # 执行任务 curl -X POST http://localhost:8080/executor/execute \ -H "Content-Type: application/json" \ -d '{ "jobId": "test-job-001", "jobName": "simpleJob", "shardingParamIndex": 0, "shardingParam": "test-param" }' # 取消任务 curl -X POST http://localhost:8080/executor/cancel \ -H "Content-Type: application/json" \ -d '{ "taskId": "test-job-001", "reason": "手动取消" }' ``` ## 架构说明 ### 1. Netty+HTTP混合架构 - **Netty通信**: 用于执行器的注册和心跳机制 - **HTTP通信**: 用于任务执行和取消请求 - **优势**: 结合了Netty的高性能和HTTP的简单易用 ### 2. 调度器架构 ``` 调度器 ├── 任务管理 │ ├── 任务创建和配置 │ ├── 任务调度和分发 │ └── 任务状态跟踪 ├── 执行器管理 │ ├── 执行器注册 │ ├── 心跳检测 │ └── 健康状态监控 └── HTTP客户端 ├── 任务执行请求 ├── 任务取消请求 └── 结果回调处理 ``` ### 3. 执行器架构 ``` 执行器 ├── Netty客户端 │ ├── 注册机制 │ └── 心跳机制 ├── HTTP服务 │ ├── 任务执行接口 │ ├── 任务取消接口 │ └── 健康检查接口 ├── 任务处理器 │ ├── 方法级别处理器 │ └── 类级别处理器 └── 任务执行管理器 ├── 线程池管理 ├── 任务状态跟踪 └── 结果处理 ``` ## 执行器类型对比 | 特性 | Java独立执行器 | Spring Boot执行器 | |------|----------------|-------------------| | 启动方式 | main方法启动 | Spring Boot自动启动 | | 依赖管理 | 手动管理 | Spring Boot Starter | | 配置方式 | properties文件 | YAML配置文件 | | 组件管理 | 手动创建 | Spring IoC容器 | | 端口 | 8080 | 8081 | | 适用场景 | 轻量级应用 | 企业级应用 | ## 任务处理器示例 ### 方法级别处理器 ```java @JobHandle("simpleJob") public String simpleJob() { return "任务执行成功"; } @JobHandle("paramJob") public String paramJob(JobExecutorParams params) { return "带参数任务执行成功: " + params.getShardingParam(); } ``` ### 类级别处理器 ```java @JobHandle("serviceJob") public class MyServiceJobHandler implements JobExecutorService { @Override public JobExecutorResult execute(JobExecutorParams params) { JobExecutorResult result = new JobExecutorResult(); result.setResult("服务类任务执行成功"); return result; } } ``` ## 配置说明 ### 调度器配置 ```yaml server: port: 9999 job: scheduler: port: 9999 thread-pool-size: 10 task-queue-size: 100 ``` ### 执行器配置 #### Java执行器 (job-executor.properties) ```properties job.executor.port=8080 job.executor.admin-url=http://localhost:9999 job.executor.app-name=java-test-executor ``` #### Spring Boot执行器 (application.yml) ```yaml server: port: 8081 job: executor: port: 8081 admin-url: http://localhost:9999 app-name: springboot-test-executor ``` ## 开发指南 ### 1. 添加新的任务处理器 1. 在Java执行器中添加处理器类 2. 使用`@JobHandle`注解标记 3. 实现任务逻辑 4. 重新编译和启动 ### 2. 自定义配置 1. 修改配置文件 2. 添加自定义参数 3. 在代码中使用配置 ### 3. 扩展功能 1. 添加新的HTTP接口 2. 实现自定义的任务类型 3. 集成外部系统 ## 故障排除 ### 1. 连接问题 - 检查网络连接 - 验证端口配置 - 确认防火墙设置 ### 2. 任务执行失败 - 检查任务处理器注册 - 验证参数配置 - 查看错误日志 ### 3. 性能问题 - 调整线程池大小 - 优化任务队列 - 监控资源使用 ## 扩展功能 ### 1. 数据库集成 可以集成MySQL、PostgreSQL等数据库进行任务持久化。 ### 2. 监控和日志 可以集成Prometheus、Grafana等监控工具。 ### 3. 集群支持 可以扩展支持多节点集群部署。 ### 4. 安全认证 可以添加JWT、OAuth等安全认证机制。 ## 贡献指南 1. Fork项目 2. 创建功能分支 3. 提交代码 4. 创建Pull Request ## 许可证 本项目采用MIT许可证。