【zookeeper(13)源码分析-请求处理链(3)】教程文章相关的互联网学习教程文章

【Zookeeper】源码分析之请求处理链(二)【代码】【图】

一、前言  前面学习了请求处理链的RequestProcessor父类,接着学习PrepRequestProcessor,其通常是请求处理链的第一个处理器。二、ZooKeeper源码分析2.1 类的继承关系publicclass PrepRequestProcessor extends Thread implements RequestProcessor {}  说明:可以看到PrepRequestProcessor继承了Thread类并实现了RequestProcessor接口,表示其可以作为线程使用。2.2 类的属性publicclass PrepRequestProcessor extends Thread...

zookeeper(13)源码分析-请求处理链(3)【代码】

FinalRequestProcessor是请求处理链中最后的一个处理器。 public class FinalRequestProcessor implements RequestProcessor {ZooKeeperServer zks; }FinalRequestProcessor只实现了RequestProcessor接口,需要实现process Request方法和shutdown方法。核心属性为zks,表示Zookeeper服务器,可以通过zks访问到Zookeeper内存数据库。我们看一下核心方法process Request代码:同步代码块synchronized (zks.outstandingChanges) {// N...

storm操作zookeeper源码分析-cluster.clj

storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中)。backtype.storm.cluster定义了两个重要protocol:ClusterState和StormClusterState。clojure中的protocol可以看成java中的接口,封装了一组方法。ClusterState协议中封装了一组与zookeeper进行交互的基础函数,如获取子节点函数,获取子节点数据函数等,ClusterState协议定义如下:ClusterState协议(defprotocol ClusterState (se...

zookeeper(10)源码分析-事件监听Watcher(3)【代码】

今天继续源码分析,分析一下org.apache.zookeeper.server下的WatchManager类。 WatcherManager类用于管理watchers和相应的触发器。 类的属性 //watchTable表示从节点路径到watcher集合的映射private final HashMap<String, HashSet<Watcher>> watchTable =new HashMap<String, HashSet<Watcher>>();//watch2Paths则表示从watcher到所有节点路径集合的映射private final HashMap<Watcher, HashSet<String>> watch2Paths =new HashMa...

Giraph源码分析启动ZooKeeper服务【图】

说明: (1) 实验环境. 三台服务器:test165、test62、test63。test165同时是JobTracker和TaskTracker. 测试例子:官网自带的SSSP程序,数据是自己模拟生成。 运行命令:hadoop jar giraph-examples-1.0.0-for-hadoop-0.20.203.0-jar-with-dependencies.jar o说明: (1) 实验环境. 三台服务器:test165、test62、test63。test165同时是JobTracker和TaskTracker. 测试例子:官网自带的SSSP程序,数据是自己模拟生成。 运行命令:hado...

Zookeeper源码分析【代码】

download:Zookeeper源码分析 Zookeeper作为阿里系与Dubbo完美搭配的注册中心,其江湖地位毋容置疑。本课程以最开始图解Zookeeper框架的架构和组件作为课程总起,进而“分而治之”各个击破Zookeeper框架的各个组件源码,如:序列化,数据模型,持久化,Client和Server架构、选举流程等,最后通过总结快速梳理所得。适合人群有代码洁癖的中高级Java工程师从事分布式系统设计和开发的极客认可“源码驱动式”学习方式的学生党技术储备要...

Zookeeper学习之ZooKeeper源码分析【代码】【图】

一、宏观分析ZooKeeper源码结构ZooKeeper宏观分析源码,如下图所示: 要想分析源码,首先需要宏观分析整个ZooKeeper结构,要知道ZooKeeper分为两部分:服务端集群、客户端。其中服务端:每台ZooKeeper服务器都有三个状态:初始化、运行中、结束关机。因此当服务器都处于运行时,构成一个zookeeper集群,那么就能够对外提供服务(单机也可以运行); 服务端启动服务后,进行初始化构成可用集群;对于客户端:客户端封装出API操作层,...

zookeeper(15)源码分析-服务器(2)【代码】

LearnerZooKeeperServer是所有Follower和Observer的父类,在LearnerZooKeeperServer里有2个重要的属性://提交请求处理器protected CommitProcessor commitProcessor;//同步处理器protected SyncRequestProcessor syncProcessor; FollowerZooKeeperServer和ObserverZooKeeperServer都继承了LearnerZooKeeperServer服务器。 1、FollowerZooKeeperServer 1.1、类属性//待同步的请求ConcurrentLinkedQueue<Request> pendingSyncs;//待...

zookeeper(14)源码分析-服务器(1)【代码】

ZooKeeperServer,为所有服务器的父类。QuorumZooKeeperServer,其是所有参与选举的服务器的父类,是抽象类,其继承了ZooKeeperServer类。LeaderZooKeeperServer,Leader服务器,继承了QuorumZooKeeperServer类,也会继承ZooKeeperServer中的很多方法。LearnerZooKeeper,其是Learner服务器的父类,为抽象类,也继承了QuorumZooKeeperServer类。FollowerZooKeeperServer,Follower服务器,继承了LearnerZooKeeper。ObserverZooKeep...

zookeeper(11)源码分析-请求处理链(1)【代码】

对于请求处理链而言,所有请求处理器的父接口为RequestProcessor。 RequestProcessor内部类RequestProcessorException,用来表示处理过程中的出现的异常,而proce***equest和shutdown方法则是核心方法,是子类必须要实现的方法,处理的主要逻辑在proce***equest中,通过proce***equest方法可以将请求传递到下个处理器。而shutdown表示关闭处理器,其意味着该处理器要关闭和其他处理器的连接。 public interface RequestProcessor {...

zookeeper(7)源码分析-集群Leader选举FastLeaderElection【代码】【图】

一、Election接口 选举的父接口为Election,其定义了lookForLeader和shutdown两个方法,lookForLeader表示寻找Leader,shutdown则表示关闭,如关闭服务端之间的连接。Election接口的实现类1、AuthFastLeaderElection,同FastLeaderElection算法基本一致,只是在消息中加入了认证信息,在3.4.0版本后已经被弃用。2、FastLeaderElection,是标准的fast paxos算法的实现,基于TCP协议进行选举。3、LeaderElection,在3.4.0版本后已经被...

Zookeeper源码分析【代码】

zookeeper简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 使用案例 dubbo、disconf、elastic-job、分布式锁、leader选举 客户端代码解析 接下来的代码可以从的github项目找到https://github.com/yaojf/zookeeper-learn。这里我从Client的m...