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]

Reply via email to