diff --git a/common/attach/主备倒换实现流程图.eddx b/common/attach/主备倒换实现流程图.eddx new file mode 100644 index 0000000..4e82d22 Binary files /dev/null and b/common/attach/主备倒换实现流程图.eddx differ diff --git a/common/zk_failover.md b/common/zk_failover.md new file mode 100644 index 0000000..7daff69 --- /dev/null +++ b/common/zk_failover.md @@ -0,0 +1,56 @@ + + +# 简介 + +HDFS的NameNode、Yarn的ResourceManager都是依靠ZK实现主备倒换的。核心的类为:ZKFailoverController.java, +选举的核心类为ActiveStandbyElector.java + +## 主备选举 + +主备选举的核心类是ActiveStandbyElector。在初始化的时候需要创建zk连接并且尝试在zk上面创建文件。在创建连接或者创建文件的时候都会有回调事件。 + +回调处理的函数主要包含: + + +### 创建node节点回调 + +入口函数如下: +```java +public synchronized void processResult(int rc, String path, Object ctx, + String name) { +// ..... +} +``` + +处理流程图如下: + +![zk_failver_001](https://pan.zeekling.cn//zeekling/hadoop/common/zk_failover_001.png) + + + +### 监控回调 + +入口函数如下: +```java +public synchronized void processResult(int rc, String path, Object ctx, + Stat stat) { +// ... +} +``` + +处理流程如下: + +![zk_failver_003](https://pan.zeekling.cn//zeekling/hadoop/common/zk_failover_003.png) + +### 事件回调 + +入口函数如下: + +```java +synchronized void processWatchEvent(ZooKeeper zk, WatchedEvent event) { + // .. +} +``` + +![zk_failver_002](https://pan.zeekling.cn//zeekling/hadoop/common/zk_failover_002.png) +