This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ac585f9 Update alpha.en.md (#7514)
ac585f9 is described below
commit ac585f900c6e51f44e9e47dc39a9b32fccec7b01
Author: yang-7777 <[email protected]>
AuthorDate: Fri Sep 18 08:52:30 2020 -0400
Update alpha.en.md (#7514)
* Update alpha.en.md
* Update alpha.en.md
---
docs/blog/content/material/alpha.en.md | 187 ++++++++++++++++++++++++++++++++-
1 file changed, 186 insertions(+), 1 deletion(-)
diff --git a/docs/blog/content/material/alpha.en.md
b/docs/blog/content/material/alpha.en.md
index 09e90c4..b903a99 100644
--- a/docs/blog/content/material/alpha.en.md
+++ b/docs/blog/content/material/alpha.en.md
@@ -3,4 +3,189 @@ title = "After years of stagnation, ElasticJob is back with
the first Apache ver
weight = 1
chapter = true
+++
-## TODO
+## After years of stagnation, ElasticJob is back with the first Apache version
3.0.0-alpha
+
+Within a few months ElasticJob as the subproject of Apache ShardingSphere has
fixed and merged 535 issues and pull requests. More importantly, the ElasticJob
community released the first official version: 3.0.0-alpha after joined Apache
Software Foundation.
+
+### Background
+ElasticJob (https://github.com/apache/shardingsphere-elasticjob) is a
distributed scheduling solution for internet ecology and massive tasks.
ElasticJob consisting of two separate subprojects, ElasticJob-Lite and
ElasticJob-Cloud. It was born in 2015, at that time the industry had
outstanding job scheduling library such as QuartZ, but lacked of exploration at
distributed field. The lack of distributed scheduling cloud platform products
has caused ElasticJob to attract attention from the [...]
+
+In the technology selection for ElasticJob, it chose to stand on the shoulders
of giants instead of reinvent the wheel. It perfectly combines the standard job
scheduling library QuartZ, , and ZooKeeper, a weapon for distributed
coordination, to quickly and stably build a new concept of distributed
scheduling framework.
+
+### ElasticJob scheduling model
+The scheduling model of ElasticJob is divided into in-process scheduling
ElasticJob-Lite, which supports thread-level scheduling, and ElasticJob-Cloud,
which supports process-level scheduling.
+
+**In-process scheduling**
+
+ElasticJob-Lite is a thread-level scheduling framework for in-process. It can
be used in conjunction with Java frameworks such as Spring, Dubbo and
Spring-injected Beans can be used freely in operations, such as data source
connection pools, Dubbo remote services, etc. It fits business developement
well and make development more conveniently.
+
+ElasticJob-Lite is deployed with business applications, and its life cycle is
same as the business applications. It is a typical embedded lightweight
architecture. ElasticJob-Lite is very suitable for ordinary Java applications
with stable resource usage and simple deployment architecture. It can be
understood as a Java development framework.
+
+ElasticJob-Lite itself is a non-centralized architecture and does not require
an independent centralized scheduling node. Each task node under the
distributed system is a self-scheduled scheduling job in a timely manner. Only
one registry is needed between tasks to coordinate task status in distributed
scenarios, ZooKeeper is supported as a registry currently.
+
+The architecture diagram is shown below:
+
+
+
+It can be seen from the figure that the distributed job node of
ElasticJob-Lite obtains the master node through election, and shards through
the master node. After the fragmentation is completed, the master node and the
slave node are the same, and both execute tasks in a self-scheduled manner.
+
+**Process level scheduling**
+
+ElasticJob-Cloud has two methods: in-process scheduling and process-level
scheduling. Since ElasticJob-Cloud can control the resources of the job server,
its job types can be divided into permanent tasks and transient tasks. Resident
tasks like ElasticJob-Lite, which is in-process scheduling has completely
different instantaneous tasks. It makes full use of the peak-clipping and
valley-filling capabilities of resource allocation. It is process-level
scheduling, each task starts a new process.
+
+ElasticJob-Cloud needs to control resources through Mesos, and allocate tasks
and resources through the scheduler deployed in Mesos Master. Cloud adopts a
centralized architecture to transfer the high availability of the dispatch
center to Mesos.
+
+Its architecture diagram is shown below:
+
+
+
+It can be seen from the figure that ElasticJob-Cloud not only has all the
capabilities of Lite, but also has the ability to allocate resources and
distribute tasks. It fully manages a series of life cycles of job development,
packaging, distribution, scheduling, governance, and sharding. It is a true job
cloud scheduling system.
+
+Compared with the simplicity and ease of use of ElasticJob-Lite,
ElasticJob-Cloud's strong dependence on Mesos increases the complexity of
system deployment, making it more suitable for large-scale operating systems.
+
+### Function list
+
+ElasticJob functions mainly include flexible scheduling, resource allocation,
job management, and visual control.
+
+**Flexible scheduling**
+
+Elastic scheduling is the most important function of ElasticJob, and it is
also the origin of the product name. It is a task processing system that allows
tasks to be scaled horizontally through sharding.
+
+The concept of task sharding items in ElasticJob enables tasks to run in a
distributed environment, and each task server only runs the shards assigned to
that server. With the increase or downtime of servers, ElasticJob will sense
the changes in the number of servers in near real-time, thus it could
re-allocate more reasonable task fragmentation items for distributed task
servers, so that tasks can increase efficiency as resources increase.
+
+**Resource allocation**
+
+Scheduling refers to assigning suitable resources to tasks at suitable times
and making them effective. ElasticJob has the ability to allocate resources, it
can schedule tasks like a distributed operating system. Resource allocation is
realized by Mesos. Mesos is responsible for allocating the required resources
(CPU and memory) declared by the task and isolating the allocated resources.
ElasticJob will execute the task after obtaining the resource.
+
+Considering the relatively complex deployment of the Mesos system, ElasticJob
split this part into the ElasticJob cloud for advanced users. With the strong
development of Kubernetes, ElasticJob will also complete the connection of the
Cloud part with it in the future.
+
+**Job governance**
+
+Governance and coordination of high availability, failover, and re-execution
of missed jobs in distributed scenarios.
+
+**Visual control terminal**
+
+Mainly include operation life cycle management and control, execution history
query, configuration center management, etc.
+
+### 3.0.0-alpha features a sneak peek
+
+**Build & dependencies**
+
+1. Upgrade to Java 8
+
+2. Upgrade the minimum supported ZooKeeper version to 3.6.x
+
+**API changes**
+
+1. Change the groupId of Maven coordinates to
org.apache.shardingsphere.elasticjob
+
+2. Change the package name to org.apache.shardingsphere.elasticjob
+
+3. Change the Spring namespace name to
http://shardingsphere.apache.org/schema/elasticjob
+
+4. Brand new job API, you can use SPI to customize job types
+
+5. Use SPI to reference configuration strategies, such as task fragmentation,
thread pool usage, and error handling strategies
+
+6. Separate the console code from the job core module
+
+**New function**
+
+1. Multiple schedulers, adding one-time task scheduler
+
+2. Provide the official Spring Boot Starter of the ElasticJob-Lite project
+
+3. Support the use of multiple database types to store job history track data
+
+4. Allow users to specify a suitable IP address through environment variables
+
+5. Brand new console interface
+
+### 3.x version design interpretation
+
+It can be seen from the Release Notes that ElasticJob 3.x is not a patched
version of 2.x, but a set of new products implemented through innovative design
concepts.
+
+The most intuitive change in ElasticJob 3.x is to split the original
single-digit number of modules into dozens of micro-modules with
responsibilities for cleaning up.
+
+The keywords of the new version are microkernel, scalability and ecological
docking.
+
+**Microkernel**
+
+ElasticJob 3.x abstracts API and infrastructure modules, and separates all
modules such as registry, historical execution trajectory, console, job
executor, Lite and Cloud.
+
+The height of kernel module is extensible, but does not rely on the
implementation of the extensible module itself. It inherits the previous
capabilities of ElasticJob, while continuing to provide developers with a
toolkit of distributed services, while opening up a scaffolding that can be
freely customized and extended to developers.
+
+**Scalable**
+
+ElasticJob 3.x defines a wealth of extensible interfaces on the basis of the
microkernel, including extensible interfaces such as job types, configuration
strategies, historical execution trajectory storage, and registry storage to be
done.
+
+Developers can weave customized functions without modifying the ElasticJob
source code, which is truly closed for modification and open for extension.
+
+**Ecological docking **
+
+ElasticJob 3.x provides the official Spring Boot Starter, and has started to
develop automatic probes based on Apache SkyWalking, making it more convenient
to integrate into the existing technology system.
+
+In addition, what can be read from the Release Notes is that ElasticJob 3.x
has not significantly updated Cloud, and its main changes are concentrated in
the kernel and Lite modules.
+
+For Mesos, which is complex to deploy, it is no longer popular. ElasticJob 3.x
will gradually weaken its dependence on it, and plans to provide more
generalized resource isolation APIs in the future, so that the Cloud product
line can be connected to Mesos, Kubernetes, and even independent independent
Deployment and use.
+
+### 3.0.0-beta feature preview
+
+After adjusting the project and package structure, ElasticJob 3.0.0-beta will
focus on the development of new functions and standardization of operational
APIs.
+
+**New feature preview**
+
+1. Job dependency
+
+Supports job dependency based on directed acyclic graph (DAG). Dependency
includes dependencies based on the overall dimensions of the job, as well as
dependencies based on job shards, to create a more flexible job governance
solution.
+
+2. HTTP job type
+
+Support HTTP job type, and provide another cross-language job type besides
Script.
+
+**Operation API standardization**
+
+1. Provide a unified API interface based on RESTful operations
+
+2. Simplify SDK-based operation API interface
+
+### Future plan
+
+In the future, ElasticJob will keep moving forward. The main plans are as
follows:
+
+**Scheduling execution separation**
+
+Completely separate the scheduler and executor. The scheduler can be deployed
together with the executor, which is a decentralized lightweight version of
ElasticJob lite; the scheduler can be deployed separately from the executor,
which is a one-stop distributed scheduling system for ElasticJob cloud resource
management and control.
+
+**To be a Cloud management products that are easier to use**
+
+The ElasticJob cloud, which currently only supports Mesos, is built into a job
cloud management platform that supports Mesos and Kubernetes, and provides a
pure job management and control platform that can be used independently without
Mesos and Kubernetes without resource control.
+
+**Pluggable ecology**
+
+In the same vein as Apache ShardingSphere, ElasticJob will also provide a more
pluggable and modular architecture to provide developers with infrastructure.
It is convenient for developers to develop secondary development based on
ElasticJob and add various customized functions, including but not limited to
job types (such as big data jobs, HTTP jobs, etc.), registry types (such as
Eureka, etc.), execution track storage media (such as Other database types)
etc.
+
+
+ElasticJob will eventually make Lite and Cloud available to development
engineers and operation and maintenance engineers in a closer way, sharing
their scheduling, execution, and job libraries. The overall plan is as follows:
+
+
+
+### About the ElasticJob community
+
+The ElasticJob community has stagnated in the previous few years, mainly
because the author's personal energy is limited and snowed under with work.
After receiving the demand for the scheduling infrastructure for the flexible
migration of Apache ShardingSphere, the ElasticJob community decided to restart
and continued to shine as a sub-project of Apache ShardingSphere. The current
ElasticJob has officially moved the project source code into Apache's GitHub
repository, and has been very [...]
+
+ElasticJob is a sub-project of Apache ShardingSphere
(https://github.com/apache/shardingsphere). The goal is to become an
independent top-level Apache project and provide the cornerstone of data
scheduling for the elastic migration of Apache ShardingSphere.
+
+### About the Author
+
+Zhang Liang, JD Digital Technology Center Architecture Expert, Apache
ShardingSphere PMC Chair.
+
+Love open source, be good at Java-based distributed architecture, and respect
elegant code.
+
+At present, the main energy is devoted to building the distributed database
middleware Apache ShardingSphere into the industry's first-class
financial-grade data solution.
+
+Apache ShardingSphere (https://github.com/apache/shardingsphere) is the first
top-level project of the Apache Software Foundation led by JD. It is also the
first distributed database middleware of the Apache Software Foundation.
+
+Published the book "Future Architecture-From Servicing to Cloud Native".
+
+GitHub: https://github.com/terrymanu, technical exchanges and corrections are
always welcome.