nzw921rx commented on issue #11857:
URL: https://github.com/apache/seatunnel/issues/11857#issuecomment-5779975412
## Proposed Project Structure
The external resource-manager modules should be placed at the repository
root, alongside `seatunnel-engine`.
They are responsible for deploying, scheduling, and terminating a complete
Zeta Engine application on an external resource platform. They are not internal
Engine submodules.
```text
seatunnel/
├── seatunnel-api/
│
├── seatunnel-core/
│ ├── seatunnel-core-starter/
│ ├── seatunnel-starter/
│ ├── seatunnel-flink-starter/
│ └── seatunnel-spark-starter/
│
├── seatunnel-engine/
│ ├── seatunnel-engine-common/
│ │ └── deployment/
│ │ ├── DeployType
│ │ ├── ApplicationId
│ │ ├── ApplicationStatus
│ │ ├── ApplicationResult
│ │ ├── ApplicationSpecification
│ │ └── WorkerSpecification
│ │
│ ├── seatunnel-engine-client/
│ │ └── deployment/
│ │ ├── ApplicationClient
│ │ ├── ApplicationDeployer
│ │ ├── ApplicationDeployerFactory
│ │ └── ApplicationSubmissionResult
│ │
│ ├── seatunnel-engine-server/
│ │ └── resourcemanager/
│ │ ├── ResourceManager
│ │ ├── ResourceManagerContext
│ │ ├── ResourceManagerDriver
│ │ ├── ResourceManagerDriverFactory
│ │ ├── WorkerLauncher
│ │ ├── WorkerRegistration
│ │ └── StandaloneResourceManager
│ │
│ ├── seatunnel-engine-core/
│ ├── seatunnel-engine-serializer/
│ ├── seatunnel-engine-storage/
│ └── seatunnel-engine-ui/
│
├── resource-managers/
│ ├── pom.xml
│ │
│ ├── yarn/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/java/org/apache/seatunnel/resource/yarn/
│ │ │ ├── YarnApplicationDeployer
│ │ │ ├── YarnApplicationClient
│ │ │ ├── YarnApplicationMaster
│ │ │ ├── YarnResourceManagerDriver
│ │ │ ├── YarnWorkerLauncher
│ │ │ ├── YarnArtifactStager
│ │ │ ├── YarnConfiguration
│ │ │ └── YarnResourceManagerProvider
│ │ │
│ │ ├── main/resources/META-INF/services/
│ │ │ ├── ApplicationDeployerFactory
│ │ │ └── ResourceManagerDriverFactory
│ │ │
│ │ └── test/java/org/apache/seatunnel/resource/yarn/
│ │ ├── YarnApplicationDeployerTest
│ │ ├── YarnApplicationMasterTest
│ │ └── YarnResourceManagerDriverTest
│ │
│ └── kubernetes/
│ ├── pom.xml
│ │
│ ├── core/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/java/org/apache/seatunnel/resource/kubernetes/
│ │ │ ├── KubernetesApplicationDeployer
│ │ │ ├── KubernetesApplicationClient
│ │ │ ├── KubernetesApplicationEntrypoint
│ │ │ ├── KubernetesResourceManagerDriver
│ │ │ ├── KubernetesWorkerLauncher
│ │ │ ├── KubernetesArtifactStager
│ │ │ ├── KubernetesConfiguration
│ │ │ └── KubernetesResourceManagerProvider
│ │ │
│ │ ├── main/resources/META-INF/services/
│ │ │ ├── ApplicationDeployerFactory
│ │ │ └── ResourceManagerDriverFactory
│ │ │
│ │ └── test/java/org/apache/seatunnel/resource/kubernetes/
│ │ ├── KubernetesApplicationDeployerTest
│ │ ├── KubernetesApplicationEntrypointTest
│ │ └── KubernetesResourceManagerDriverTest
│ │
│ └── integration-tests/
│ └── KubernetesApplicationModeIT
│
├── seatunnel-e2e/
│ ├── seatunnel-engine-yarn-e2e/
│ │ └── YarnApplicationModeIT
│ │
│ └── seatunnel-engine-k8s-e2e/
│ └── KubernetesApplicationModeIT
│
├── seatunnel-dist/
│
└── docs/
├── en/engines/zeta/
│ ├── yarn-application-mode.md
│ └── kubernetes-application-mode.md
│
└── zh/engines/zeta/
├── yarn-application-mode.md
└── kubernetes-application-mode.md
```
## Dependency Direction
```text
seatunnel-engine-common
↑
seatunnel-engine-client seatunnel-engine-server
↑ ↑
└──────── resource-managers ───┘
├── yarn
└── kubernetes
```
The dependency must remain one-way:
- YARN and Kubernetes implementations may depend on Engine contracts.
- Engine modules must not directly depend on YARN or Kubernetes SDKs.
- Platform implementations should be discovered through SPI and assembled by
`seatunnel-dist`.
- The existing top-level `seatunnel-core` keeps its current responsibility
for command processing, plugin discovery, and engine starters.
- No additional `resource-manager-common` module is needed. Shared contracts
belong to the existing Engine modules that own and consume them.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]