Skip to content

并行数

是客户端可以同时执行的任务数量。每个客户端都有一个线程池,这里设置的并行数,就是你打算让客户端多少个线程来同时执行任务。

进行测试

验证并行数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端口客户端

      shell
      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-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端口客户端

      shell
      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-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端口客户端

      shell
      2024-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端口客户端

      shell
      2024-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个任务
    • 任务批次列表中执行时长