terrymanu opened a new issue #1690:
URL: https://github.com/apache/shardingsphere-elasticjob/issues/1690
1. Production Design
The current ElasticJob is an distributed job scheduler middleware and
support resource management in ElasticJob-Cloud.
The new ElasticJob may split the feature into 3 independent modules: Job
Trigger, Resource Management and Job Governance.
**Job Trigger** is required module, other two are optional. It just like a
standard QuartZ if use Job Trigger only.
**Job Trigger + Job Governance** can be understood as current ElasticJob.
There are sharding and HA features in scheduled job, we can add job
orchestration such as DAG into this module in future.
**Job Trigger + Resource Management** can be understood as mechanism of
operation system's scheduler. It will rebalance jobs and resources, it the
resources is not enough, the job should be in queue. Resource Management can
integrate with Kubernetes and Apache Mesos. The current ElasticJob-Cloud is
Job Trigger + Resource Management (with Apache Mesos only).
**Job Trigger + Job Governance + Resource Management** is all abilities for
ElasticJob in future. ElasticJob-Lite and ElasticJob-Cloud is for different
deploy architect only.
2. Architect Design
ElasticJob hope to build a `Flexible & Embeddable & Extensible` architect,
which can permit developers weave their own implementation via SPI. For the 3
main modules, the details are:
**Job Trigger: ** Based on CRON expression and One-Off job for now. It is
better to adjust as Trigger SPI + Trigger Impl (CRON, One-Off and so on).
**Resource Management: ** There is no independent resource management domain
abstraction for now. It is better to add Resource Management SPI, and add
Apache Mesos, Kubernetes and NoDep's implementation in the meanwhile.
**Job Governance: ** There are sharding and HA modules for now. It is better
to add Job Governance SPI, and adapt the current modules as sub-modules, and
add DAG module in future. The sub-modules of Job Governance should be overlying
and isolated each other.
3. Adjust of ElasticJob-Lite and ElasticJob-Cloud
The only different of ElasticJob-Lite and ElasticJob-Cloud are deploy
architect.
ElasticJob-Lite is centre-less jar with spring integration, it is suitable
for lightweight applications.
ElasticJob-Cloud deploy a clustered job-server , it is suitable for job
cloud management platform.
4. Module Planing
Job Trigger
- Trigger API
- Trigger SPI
- Trigger Kernel
- CRON Trigger
- One-Off Trigger
- Customized Trigger
Resource Management
- Resource Management API
- Resource Management SPI
- Resource Management Kernel
- NoDep Resource Management
- Mesos Resource Management
- Kubernetes Resource Management
Job Governance
- Job Governance API
- Job Governance SPI
- Job Governance Kernel
- Sharding Job
- HA Job
- DAG Job
Production
— ElasticJob-Lite Adjustment
— ElasticJob-Cloud Adjustment
— Remove Apache Mesos dependency from ElasticJob-Cloud
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]