并行数
是客户端可以同时执行的任务数量。每个客户端都有一个线程池,这里设置的并行数,就是你打算让客户端多少个线程来同时执行任务。
进行测试
验证并行数1
客户端代码
java@Component public class TestStaticShardingJob extends AbstractJobExecutor { @Override protected ExecuteResult doJobExecute(JobArgs jobArgs) { String jobParams = String.valueOf(jobArgs.getJobParams()); SnailJobLog.LOCAL.info("开始执行分片任务,参数:{}", jobParams); // 获得jobArgs 中传入的开始id和结束id String[] split = jobParams.split(","); Long fromId = Long.parseLong(split[0]); Long toId = Long.parseLong(split[1]); // 模拟数据库操作,对范围id,进行加密处理 try { SnailJobLog.REMOTE.info("开始对id范围:{}进行加密处理", fromId+"-"+toId); Thread.sleep(3000); SnailJobLog.REMOTE.info("对id范围:{}进行加密处理完成", fromId+"-"+toId); }catch (InterruptedException e){ return ExecuteResult.failure("任务执行失败"); } return ExecuteResult.success("执行分片任务完成"); } }
这里通过
jobArgs.getJobParams()
获得服务端分给本客户端的任务参数。服务端分片任务配置
配置项 配置内容 任务名称 静态分片任务-并行数 组名称 service_plat 状态 禁用 任务类型 静态分片 执行器类型 java 执行器名称 com.mayuanfei.test.TestStaticShardingJob 方法参数 分片参数 1 :1,10000
分片参数 2 :10001,20000
分片参数 3 :20001,30000
分片参数 4 :30001,40000最大重试次数 0 并行数 1 测试结果【手动执行】
8089端口客户端
shell2024-10-09 08:11:47 [snail-netty-server-5] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2346] 任务调度成功. 2024-10-09 08:11:47 [snail-netty-server-6] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2346] 任务调度成功. 2024-10-09 08:11:47 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:30001,40000 2024-10-09 08:11:47 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始对id范围:30001-40000进行加密处理 2024-10-09 08:11:50 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 对id范围:30001-40000进行加密处理完成 2024-10-09 08:11:50 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:10001,20000 2024-10-09 08:11:50 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始对id范围:10001-20000进行加密处理 2024-10-09 08:11:53 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 对id范围:10001-20000进行加密处理完成 2024-10-09 08:11:53 [snail-job-job-2,346-1] INFO c.a.s.c.j.c.e.JobExecutorFutureCallback - 任务执行成功 taskBatchId:[2346] [{"status":1,"result":"执行分片任务完成","message":"任务执行成功"}]
注意:
- 该客户端执行了id范围为10001-20000和30001-40000
- 每个任务执行用时3秒,总体大致花费了6秒的时间完成2个任务
8090端口客户端
shell2024-10-09 08:11:47 [snail-netty-server-6] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2346] 任务调度成功. 2024-10-09 08:11:47 [snail-netty-server-5] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2346] 任务调度成功. 2024-10-09 08:11:47 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:1,10000 2024-10-09 08:11:47 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始对id范围:1-10000进行加密处理 2024-10-09 08:11:50 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 对id范围:1-10000进行加密处理完成 2024-10-09 08:11:50 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:20001,30000 2024-10-09 08:11:50 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 开始对id范围:20001-30000进行加密处理 2024-10-09 08:11:53 [snail-job-job-2,346-1] INFO c.m.test.TestStaticShardingJob - 对id范围:20001-30000进行加密处理完成 2024-10-09 08:11:53 [snail-job-job-2,346-1] INFO c.a.s.c.j.c.e.JobExecutorFutureCallback - 任务执行成功 taskBatchId:[2346] [{"status":1,"result":"执行分片任务完成","message":"任务执行成功"}]
注意:
- 该客户端执行了id范围为1-10001和20001-30000
- 每个任务执行用时3秒,总体大致花费了6秒的时间完成2个任务
任务批次列表中执行时长
验证并行数2
客户端代码
同并行数1的代码
服务端分片任务配置
配置项 配置内容 任务名称 静态分片任务-并行数 并行数 2 这里仅仅是把并行数修改为2.
测试结果【手动执行】
8089端口客户端
shell2024-10-09 09:32:11 [snail-netty-server-9] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2347] 任务调度成功. 2024-10-09 09:32:11 [snail-netty-server-10] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2347] 任务调度成功. 2024-10-09 09:32:11 [snail-job-job-2,347-1] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:10001,20000 2024-10-09 09:32:11 [snail-job-job-2,347-2] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:30001,40000 2024-10-09 09:32:11 [snail-job-job-2,347-1] INFO c.m.test.TestStaticShardingJob - 开始对id范围:10001-20000进行加密处理 2024-10-09 09:32:11 [snail-job-job-2,347-2] INFO c.m.test.TestStaticShardingJob - 开始对id范围:30001-40000进行加密处理 2024-10-09 09:32:14 [snail-job-job-2,347-1] INFO c.m.test.TestStaticShardingJob - 对id范围:10001-20000进行加密处理完成 2024-10-09 09:32:14 [snail-job-job-2,347-1] INFO c.a.s.c.j.c.e.JobExecutorFutureCallback - 任务执行成功 taskBatchId:[2347] [{"status":1,"result":"执行分片任务完成","message":"任务执行成功"}] 2024-10-09 09:32:14 [snail-job-job-2,347-2] INFO c.m.test.TestStaticShardingJob - 对id范围:30001-40000进行加密处理完成 2024-10-09 09:32:14 [snail-job-job-2,347-2] INFO c.a.s.c.j.c.e.JobExecutorFutureCallback - 任务执行成功 taskBatchId:[2347] [{"status":1,"result":"执行分片任务完成","message":"任务执行成功"}]
注意:
- 该客户端执行了id范围为10001-20000和30001-40000
- 由于是并发数为2,虽然每个任务执行用时3秒,但是花费了3秒的时间完成2个任务
8090端口客户端
shell2024-10-09 09:32:11 [snail-netty-server-9] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2347] 任务调度成功. 2024-10-09 09:32:11 [snail-netty-server-10] INFO c.a.s.c.job.core.client.JobEndPoint - 批次:[2347] 任务调度成功. 2024-10-09 09:32:11 [snail-job-job-2,347-1] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:20001,30000 2024-10-09 09:32:11 [snail-job-job-2,347-2] INFO c.m.test.TestStaticShardingJob - 开始执行分片任务,参数:1,10000 2024-10-09 09:32:11 [snail-job-job-2,347-1] INFO c.m.test.TestStaticShardingJob - 开始对id范围:20001-30000进行加密处理 2024-10-09 09:32:11 [snail-job-job-2,347-2] INFO c.m.test.TestStaticShardingJob - 开始对id范围:1-10000进行加密处理 2024-10-09 09:32:14 [snail-job-job-2,347-2] INFO c.m.test.TestStaticShardingJob - 对id范围:1-10000进行加密处理完成 2024-10-09 09:32:14 [snail-job-job-2,347-1] INFO c.m.test.TestStaticShardingJob - 对id范围:20001-30000进行加密处理完成 2024-10-09 09:32:14 [snail-job-job-2,347-2] INFO c.a.s.c.j.c.e.JobExecutorFutureCallback - 任务执行成功 taskBatchId:[2347] [{"status":1,"result":"执行分片任务完成","message":"任务执行成功"}] 2024-10-09 09:32:14 [snail-job-job-2,347-1] INFO c.a.s.c.j.c.e.JobExecutorFutureCallback - 任务执行成功 taskBatchId:[2347] [{"status":1,"result":"执行分片任务完成","message":"任务执行成功"}]
注意:
- 该客户端执行了id范围为1-10001和20001-30000
- 由于是并发数为2,虽然每个任务执行用时3秒,但是花费了3秒的时间完成2个任务
任务批次列表中执行时长