Spring Cloud Task - 远程分区问题

Spring Cloud Task - Remote Partitioning Concerns

我们有 Spring 云数据流本地设置,任务是 运行 Spring 从数据库读取并写入 AWS S3 的批处理作业,所有这些工作正常.

  1. 当谈到停止作业时,任务停止但无法恢复作业,因为状态处于 "STARTED",我认为我们可以通过将批处理状态设置为 'STOPPED'触发止损时,如果不能处理请指正?
  2. 另外当尝试停止单个从属任务时,出现错误:

    2020-03-27 10:48:48.140 信息 11258 --- [nio-9393-exec-7] .s.c.d.s.s.i.DefaultTaskExecutionService : 任务执行停止请求 已提交平台默认的 id 192 2020-03-27 10:48:48.144 错误 11258 --- [nio-9393-exec-7] o.s.c.d.s.c.RestControllerAdvice : 捕获异常 处理请求

    java.lang.NullPointerException: 空于 org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService.cancelTaskExecution(DefaultTaskExecutionService.java:669) ~[spring-cloud-dataflow-server-core-2.3.0.RELEASE.jar!/:2.3.0.RELEASE] 在 org.springframework.cloud.dataflow.server.service.impl.DefaultTaskExecutionService.lambda$stopTaskExecution$0(DefaultTaskExecutionService.java:583) ~[spring-cloud-dataflow-server-core-2.3.0.RELEASE.jar!/:2.3.0.RELEASE]

  3. 我们如何在分布式环境中实现这一点,我们有一个主服务器,可以在主服务器上启动主服务器,并在各自的从服务器上启动工作人员?

1) 你是对的,你需要将你的状态从 STARTED 更改为 FAILED。

2) 由于远程分区使用 Spring Cloud Deployer(而非 Spring Cloud Data Flow)来启动工作任务,因此 SCDF 无法确定平台信息以正确停止工人任务。我添加了 GH Issue spring-cloud/spring-cloud-dataflow#3857 来解决这个问题。

3) 当前的实现阻止用户在多个服务器上启动,而是让平台(Kubernetes、Cloud Foundry)分配工作任务。您可以实现自己的部署程序来添加此功能。