You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by gi...@apache.org on 2021/08/03 02:10:22 UTC

[dolphinscheduler-website] branch asf-site updated: Automated deployment: 975ae801273c86cd8eec52480cd3f600fcdda1ff

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 48330ad  Automated deployment: 975ae801273c86cd8eec52480cd3f600fcdda1ff
48330ad is described below

commit 48330ad0555a9743b47e3e85a3f594baadbd8655
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Tue Aug 3 02:10:16 2021 +0000

    Automated deployment: 975ae801273c86cd8eec52480cd3f600fcdda1ff
---
 en-us/development/architecture-design.html         |  24 ++++++++++-----------
 en-us/development/architecture-design.json         |   2 +-
 img/architecture-design/dag_examples_ch_zn.png     | Bin 0 -> 89203 bytes
 img/architecture-design/dag_examples_en_us.png     | Bin 0 -> 89184 bytes
 img/architecture-design/distributed_lock_ch_zn.png | Bin 0 -> 179233 bytes
 img/architecture-design/distributed_lock_en_us.png | Bin 0 -> 188964 bytes
 .../distributed_lock_procss_ch_zn.png              | Bin 0 -> 345394 bytes
 .../distributed_lock_procss_en_us.png              | Bin 0 -> 363294 bytes
 img/architecture-design/fault-tolerant_ch_zn.png   | Bin 0 -> 177202 bytes
 img/architecture-design/fault-tolerant_en_us.png   | Bin 0 -> 193511 bytes
 .../fault-tolerant_master_ch_zn.png                | Bin 0 -> 156134 bytes
 .../fault-tolerant_master_en_us.png                | Bin 0 -> 169131 bytes
 .../fault-tolerant_worker_ch_zn.png                | Bin 0 -> 156743 bytes
 .../fault-tolerant_worker_en_us.png                | Bin 0 -> 164622 bytes
 img/architecture-design/grpc_en_us.png             | Bin 0 -> 68933 bytes
 img/architecture-design/lack_thread_ch_zn.png      | Bin 0 -> 173229 bytes
 img/architecture-design/lack_thread_en_us.png      | Bin 0 -> 195509 bytes
 img/architecture-design/process_priority_en_us.png | Bin 0 -> 49112 bytes
 img/architecture-design/task_priority_en_us.png    | Bin 0 -> 30544 bytes
 zh-cn/development/architecture-design.html         |  18 ++++++++--------
 zh-cn/development/architecture-design.json         |   2 +-
 21 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/en-us/development/architecture-design.html b/en-us/development/architecture-design.html
index e52e777..67762be 100644
--- a/en-us/development/architecture-design.html
+++ b/en-us/development/architecture-design.html
@@ -15,7 +15,7 @@
 <h3>1.Noun Interpretation</h3>
 <p><strong>DAG:</strong> Full name Directed Acyclic Graph,referred to as DAG。Tasks in the workflow are assembled in the form of directed acyclic graphs, which are topologically traversed from nodes with zero indegrees of ingress until there are no successor nodes. For example, the following picture:</p>
 <p align="center">
-  <img src="/img/dag_examples_cn.jpg" alt="dag示例"  width="60%" />
+  <img src="/img/architecture-design/dag_examples_en_us.png" alt="dag示例"  width="80%" />
   <p align="center">
         <em>dag example</em>
   </p>
@@ -34,7 +34,7 @@
 <h3>2.System architecture</h3>
 <h4>2.1 System Architecture Diagram</h4>
 <p align="center">
-  <img src="/img/architecture.jpg" alt="System Architecture Diagram"  />
+  <img src="/img/architecture-en.jpg" alt="System Architecture Diagram"  />
   <p align="center">
         <em>System Architecture Diagram</em>
   </p>
@@ -137,13 +137,13 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>The core process algorithm for obtaining distributed locks is as follows</li>
 </ol>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/distributed_lock.png" alt="Get Distributed Lock Process" width="50%" />
+   <img src="/img/architecture-design/distributed_lock_en_us.png" alt="Get Distributed Lock Process" width="70%" />
  </p>
 <ol start="2">
 <li>Scheduler thread distributed lock implementation flow chart in DolphinScheduler:</li>
 </ol>
  <p align="center">
-   <img src="/img/distributed_lock_procss.png" alt="Get Distributed Lock Process" width="50%" />
+   <img src="/img/architecture-design/distributed_lock_procss_en_us.png" alt="Get Distributed Lock Process" />
  </p>
 <h5>Third, the thread is insufficient loop waiting problem</h5>
 <ul>
@@ -151,7 +151,7 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>If a large number of sub-processes are nested in a large DAG, the following figure will result in a &quot;dead&quot; state:</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/lack_thread.png" alt="Thread is not enough to wait for loop" width="50%" />
+   <img src="/img/architecture-design/lack_thread_en_us.png" alt="Thread is not enough to wait for loop" width="70%" />
  </p>
 <p>In the above figure, MainFlowThread waits for SubFlowThread1 to end, SubFlowThread1 waits for SubFlowThread2 to end, SubFlowThread2 waits for SubFlowThread3 to end, and SubFlowThread3 waits for a new thread in the thread pool, then the entire DAG process cannot end, and thus the thread cannot be released. This forms the state of the child parent process loop waiting. At this point, the scheduling cluster will no longer be available unless a new Master is started to add threads to brea [...]
 <p>It seems a bit unsatisfactory to start a new Master to break the deadlock, so we proposed the following three options to reduce this risk:</p>
@@ -167,21 +167,21 @@ Interfaces include workflow creation, definition, query, modification, release,
 <h6>1. Downtime fault tolerance</h6>
 <p>Service fault tolerance design relies on ZooKeeper's Watcher mechanism. The implementation principle is as follows:</p>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant.png" alt="DolphinScheduler Fault Tolerant Design" width="40%" />
+   <img src="/img/architecture-design/fault-tolerant_en_us.png" alt="DolphinScheduler Fault Tolerant Design" width="70%" />
  </p>
 <p>The Master monitors the directories of other Masters and Workers. If the remove event is detected, the process instance is fault-tolerant or the task instance is fault-tolerant according to the specific business logic.</p>
 <ul>
 <li>Master fault tolerance flow chart:</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_master.png" alt="Master Fault Tolerance Flowchart" width="40%" />
+   <img src="/img/architecture-design/fault-tolerant_master_en_us.png" alt="Master Fault Tolerance Flowchart" width="70%" />
  </p>
 <p>After the ZooKeeper Master is fault-tolerant, it is rescheduled by the Scheduler thread in DolphinScheduler. It traverses the DAG to find the &quot;Running&quot; and &quot;Submit Successful&quot; tasks, and monitors the status of its task instance for the &quot;Running&quot; task. You need to determine whether the Task Queue already exists. If it exists, monitor the status of the task instance. If it does not exist, resubmit the task instance.</p>
 <ul>
 <li>Worker fault tolerance flow chart:</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_worker.png" alt="Worker Fault Tolerance Flowchart" width="40%" />
+   <img src="/img/architecture-design/fault-tolerant_worker_en_us.png" alt="Worker Fault Tolerance Flowchart" width="70%" />
  </p>
 <p>Once the Master Scheduler thread finds the task instance as &quot;need to be fault tolerant&quot;, it takes over the task and resubmits.</p>
 <p>Note: Because the &quot;network jitter&quot; may cause the node to lose the heartbeat of ZooKeeper in a short time, the node's remove event occurs. In this case, we use the easiest way, that is, once the node has timeout connection with ZooKeeper, it will directly stop the Master or Worker service.</p>
@@ -211,13 +211,13 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>
 <p>The priority of the process definition is that some processes need to be processed before other processes. This can be configured at the start of the process or at the time of scheduled start. There are 5 levels, followed by HIGHEST, HIGH, MEDIUM, LOW, and LOWEST. As shown below</p>
 <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/process_priority.png" alt="Process Priority Configuration" width="40%" />
+   <img src="/img/architecture-design/process_priority_en_us.png" alt="Process Priority Configuration" width="40%" />
  </p>
 </li>
 <li>
 <p>The priority of the task is also divided into 5 levels, followed by HIGHEST, HIGH, MEDIUM, LOW, and LOWEST. As shown below</p>
-<p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/task_priority.png" alt="task priority configuration" width="35%" />
+<p align="center">`
+   <img src="/img/architecture-design/task_priority_en_us.png" alt="task priority configuration" width="35%" />
  </p>
 </li>
 </ul>
@@ -236,7 +236,7 @@ Interfaces include workflow creation, definition, query, modification, release,
 <li>Considering the lightweightness of DolphinScheduler as much as possible, gRPC was chosen to implement remote access log information.</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png" alt="grpc remote access" width="50%" />
+   <img src="/img/architecture-design/grpc_en_us.png" alt="grpc remote access" width="50%" />
  </p>
 <ul>
 <li>We use a custom Logback FileAppender and Filter function to generate a log file for each task instance.</li>
diff --git a/en-us/development/architecture-design.json b/en-us/development/architecture-design.json
index c5043ba..745368a 100644
--- a/en-us/development/architecture-design.json
+++ b/en-us/development/architecture-design.json
@@ -1,6 +1,6 @@
 {
   "filename": "architecture-design.md",
-  "__html": "<h2>Architecture Design</h2>\n<p>Before explaining the architecture of the schedule system, let us first understand the common nouns of the schedule system.</p>\n<h3>1.Noun Interpretation</h3>\n<p><strong>DAG:</strong> Full name Directed Acyclic Graph,referred to as DAG。Tasks in the workflow are assembled in the form of directed acyclic graphs, which are topologically traversed from nodes with zero indegrees of ingress until there are no successor nodes. For example, the fol [...]
+  "__html": "<h2>Architecture Design</h2>\n<p>Before explaining the architecture of the schedule system, let us first understand the common nouns of the schedule system.</p>\n<h3>1.Noun Interpretation</h3>\n<p><strong>DAG:</strong> Full name Directed Acyclic Graph,referred to as DAG。Tasks in the workflow are assembled in the form of directed acyclic graphs, which are topologically traversed from nodes with zero indegrees of ingress until there are no successor nodes. For example, the fol [...]
   "link": "/dist/en-us/development/architecture-design.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/img/architecture-design/dag_examples_ch_zn.png b/img/architecture-design/dag_examples_ch_zn.png
new file mode 100644
index 0000000..95134b3
Binary files /dev/null and b/img/architecture-design/dag_examples_ch_zn.png differ
diff --git a/img/architecture-design/dag_examples_en_us.png b/img/architecture-design/dag_examples_en_us.png
new file mode 100644
index 0000000..15848da
Binary files /dev/null and b/img/architecture-design/dag_examples_en_us.png differ
diff --git a/img/architecture-design/distributed_lock_ch_zn.png b/img/architecture-design/distributed_lock_ch_zn.png
new file mode 100644
index 0000000..f2e2337
Binary files /dev/null and b/img/architecture-design/distributed_lock_ch_zn.png differ
diff --git a/img/architecture-design/distributed_lock_en_us.png b/img/architecture-design/distributed_lock_en_us.png
new file mode 100644
index 0000000..5c34fc4
Binary files /dev/null and b/img/architecture-design/distributed_lock_en_us.png differ
diff --git a/img/architecture-design/distributed_lock_procss_ch_zn.png b/img/architecture-design/distributed_lock_procss_ch_zn.png
new file mode 100644
index 0000000..78b87df
Binary files /dev/null and b/img/architecture-design/distributed_lock_procss_ch_zn.png differ
diff --git a/img/architecture-design/distributed_lock_procss_en_us.png b/img/architecture-design/distributed_lock_procss_en_us.png
new file mode 100644
index 0000000..469128b
Binary files /dev/null and b/img/architecture-design/distributed_lock_procss_en_us.png differ
diff --git a/img/architecture-design/fault-tolerant_ch_zn.png b/img/architecture-design/fault-tolerant_ch_zn.png
new file mode 100644
index 0000000..5da473c
Binary files /dev/null and b/img/architecture-design/fault-tolerant_ch_zn.png differ
diff --git a/img/architecture-design/fault-tolerant_en_us.png b/img/architecture-design/fault-tolerant_en_us.png
new file mode 100644
index 0000000..45dadf7
Binary files /dev/null and b/img/architecture-design/fault-tolerant_en_us.png differ
diff --git a/img/architecture-design/fault-tolerant_master_ch_zn.png b/img/architecture-design/fault-tolerant_master_ch_zn.png
new file mode 100644
index 0000000..56c3500
Binary files /dev/null and b/img/architecture-design/fault-tolerant_master_ch_zn.png differ
diff --git a/img/architecture-design/fault-tolerant_master_en_us.png b/img/architecture-design/fault-tolerant_master_en_us.png
new file mode 100644
index 0000000..a9901ce
Binary files /dev/null and b/img/architecture-design/fault-tolerant_master_en_us.png differ
diff --git a/img/architecture-design/fault-tolerant_worker_ch_zn.png b/img/architecture-design/fault-tolerant_worker_ch_zn.png
new file mode 100644
index 0000000..c8b5cd5
Binary files /dev/null and b/img/architecture-design/fault-tolerant_worker_ch_zn.png differ
diff --git a/img/architecture-design/fault-tolerant_worker_en_us.png b/img/architecture-design/fault-tolerant_worker_en_us.png
new file mode 100644
index 0000000..e7f379d
Binary files /dev/null and b/img/architecture-design/fault-tolerant_worker_en_us.png differ
diff --git a/img/architecture-design/grpc_en_us.png b/img/architecture-design/grpc_en_us.png
new file mode 100644
index 0000000..633b837
Binary files /dev/null and b/img/architecture-design/grpc_en_us.png differ
diff --git a/img/architecture-design/lack_thread_ch_zn.png b/img/architecture-design/lack_thread_ch_zn.png
new file mode 100644
index 0000000..31263cd
Binary files /dev/null and b/img/architecture-design/lack_thread_ch_zn.png differ
diff --git a/img/architecture-design/lack_thread_en_us.png b/img/architecture-design/lack_thread_en_us.png
new file mode 100644
index 0000000..0dc5a7b
Binary files /dev/null and b/img/architecture-design/lack_thread_en_us.png differ
diff --git a/img/architecture-design/process_priority_en_us.png b/img/architecture-design/process_priority_en_us.png
new file mode 100644
index 0000000..c6cd600
Binary files /dev/null and b/img/architecture-design/process_priority_en_us.png differ
diff --git a/img/architecture-design/task_priority_en_us.png b/img/architecture-design/task_priority_en_us.png
new file mode 100644
index 0000000..3470260
Binary files /dev/null and b/img/architecture-design/task_priority_en_us.png differ
diff --git a/zh-cn/development/architecture-design.html b/zh-cn/development/architecture-design.html
index 242ade5..b93b58d 100644
--- a/zh-cn/development/architecture-design.html
+++ b/zh-cn/development/architecture-design.html
@@ -15,7 +15,7 @@
 <h3>1.名词解释</h3>
 <p><strong>DAG:</strong> 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:</p>
 <p align="center">
-  <img src="/img/dag_examples_cn.jpg" alt="dag示例"  width="60%" />
+  <img src="/img/architecture-design/dag_examples_ch_zn.png" alt="dag示例"  width="80%" />
   <p align="center">
         <em>dag示例</em>
   </p>
@@ -34,7 +34,7 @@
 <h3>2.系统架构</h3>
 <h4>2.1 系统架构图</h4>
 <p align="center">
-  <img src="/img/architecture.jpg" alt="系统架构图"  width="70%" />
+  <img src="/img/architecture.jpg" alt="系统架构图"  />
   <p align="center">
         <em>系统架构图</em>
   </p>
@@ -137,13 +137,13 @@ MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeepe
 <li>获取分布式锁的核心流程算法如下</li>
 </ol>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/distributed_lock.png" alt="获取分布式锁流程"  width="50%" />
+   <img src="/img/architecture-design/distributed_lock_ch_zn.png" alt="获取分布式锁流程"  width="70%" />
  </p>
 <ol start="2">
 <li>DolphinScheduler中Scheduler线程分布式锁实现流程图:</li>
 </ol>
  <p align="center">
-   <img src="/img/distributed_lock_procss.png" alt="获取分布式锁流程"  width="50%" />
+   <img src="/img/architecture-design/distributed_lock_procss_ch_zn.png" alt="获取分布式锁流程" />
  </p>
 <h5>三、线程不足循环等待问题</h5>
 <ul>
@@ -151,7 +151,7 @@ MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeepe
 <li>如果一个大的DAG中嵌套了很多子流程,如下图则会产生“死等”状态:</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/lack_thread.png" alt="线程不足循环等待问题"  width="50%" />
+   <img src="/img/architecture-design/lack_thread_ch_zn.png" alt="线程不足循环等待问题"  width="70%" />
  </p>
 上图中MainFlowThread等待SubFlowThread1结束,SubFlowThread1等待SubFlowThread2结束, SubFlowThread2等待SubFlowThread3结束,而SubFlowThread3等待线程池有新线程,则整个DAG流程不能结束,从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。
 <p>对于启动新Master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:</p>
@@ -167,21 +167,21 @@ MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeepe
 <h6>1. 宕机容错</h6>
 <p>服务容错设计依赖于ZooKeeper的Watcher机制,实现原理如图:</p>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant.png" alt="DolphinScheduler容错设计"  width="40%" />
+   <img src="/img/architecture-design/fault-tolerant_ch_zn.png" alt="DolphinScheduler容错设计"  width="70%" />
  </p>
 其中Master监控其他Master和Worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。
 <ul>
 <li>Master容错流程图:</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_master.png" alt="Master容错流程图"  width="40%" />
+   <img src="/img/architecture-design/fault-tolerant_master_ch_zn.png" alt="Master容错流程图"  width="70%" />
  </p>
 ZooKeeper Master容错完成之后则重新由DolphinScheduler中Scheduler线程调度,遍历 DAG 找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断Task Queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。
 <ul>
 <li>Worker容错流程图:</li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/fault-tolerant_worker.png" alt="Worker容错流程图"  width="40%" />
+   <img src="/img/architecture-design/fault-tolerant_worker_ch_zn.png" alt="Worker容错流程图"  width="70%" />
  </p>
 <p>Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。</p>
 <p>注意:由于” 网络抖动”可能会使得节点短时间内失去和ZooKeeper的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和ZooKeeper发生超时连接,则直接将Master或Worker服务停掉。</p>
@@ -244,7 +244,7 @@ ZooKeeper Master容错完成之后则重新由DolphinScheduler中Scheduler线程
 </li>
 </ul>
  <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png" alt="grpc远程访问"  width="50%" />
+   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png" alt="grpc远程访问"  width="60%" />
  </p>
 <ul>
 <li>我们使用自定义Logback的FileAppender和Filter功能,实现每个任务实例生成一个日志文件。</li>
diff --git a/zh-cn/development/architecture-design.json b/zh-cn/development/architecture-design.json
index e68d1b8..4bcbf7b 100644
--- a/zh-cn/development/architecture-design.json
+++ b/zh-cn/development/architecture-design.json
@@ -1,6 +1,6 @@
 {
   "filename": "architecture-design.md",
-  "__html": "<h2>系统架构设计</h2>\n<p>在对调度系统架构说明之前,我们先来认识一下调度系统常用的名词</p>\n<h3>1.名词解释</h3>\n<p><strong>DAG:</strong> 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:</p>\n<p align=\"center\">\n  <img src=\"/img/dag_examples_cn.jpg\" alt=\"dag示例\"  width=\"60%\" />\n  <p align=\"center\">\n        <em>dag示例</em>\n  </p>\n</p>\n<p><strong>流程定义</strong>:通过拖拽任务节点并建立任务节点的关联所形成的可视化<strong>DAG</strong></p>\n<p><strong>流程实例</strong>:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成, [...]
+  "__html": "<h2>系统架构设计</h2>\n<p>在对调度系统架构说明之前,我们先来认识一下调度系统常用的名词</p>\n<h3>1.名词解释</h3>\n<p><strong>DAG:</strong> 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:</p>\n<p align=\"center\">\n  <img src=\"/img/architecture-design/dag_examples_ch_zn.png\" alt=\"dag示例\"  width=\"80%\" />\n  <p align=\"center\">\n        <em>dag示例</em>\n  </p>\n</p>\n<p><strong>流程定义</strong>:通过拖拽任务节点并建立任务节点的关联所形成的可视化<strong>DAG</strong></p>\n<p><strong>流程实例</strong>:流程实例是流程 [...]
   "link": "/dist/zh-cn/development/architecture-design.html",
   "meta": {}
 }
\ No newline at end of file