From c5973de015b9bb2c81ff68f72a2a9daaeefd1582 Mon Sep 17 00:00:00 2001 From: escheduler Date: Thu, 7 Mar 2019 19:52:27 +0800 Subject: [PATCH] use gitbook for doc --- pages/guide-architecture.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pages/guide-architecture.html b/pages/guide-architecture.html index 47c4464296..10feec1e00 100644 --- a/pages/guide-architecture.html +++ b/pages/guide-architecture.html @@ -799,7 +799,7 @@

EasyScheduler大数据调度系统架构分析

架构设计

-

PNG

+

PNG

EasyScheduler设计围绕四个服务展开,UI、Web、Server和Alert。

3. 去中心化

-

PNG

+

PNG

       去中心化设计里,通常没有Master/Slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。

       去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。

       实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行"会议"选举新的"管理者"主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。

@@ -844,11 +844,11 @@

EasyScheduler使用Zookeeper分布式锁来实现同一时刻只有一台Master执行Scheduler,或者只有一台Worker执行任务的提交。

1. 获取分布式锁的核心流程算法如下:

-

PNG

+

PNG

2. EasyScheduler中Scheduler线程分布式锁实现流程图:

-

PNG

+

PNG

线程不足循环等待问题