Zookeeper全参数构造函数:
- public Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPWD,boolean canBeReadOnly)
F1 Zookeeper实例整体过程
F2 内部原理
- 如果server端开启了”readonlymode.enabled”,即允许当前server可以readonly方式运行,
- 当server端尚未加入集群(处于LOOING状态),或者集群处于”危险状态”(大多数机器已经失效),那么此时server将会readonly模式,即只能接受read,不能接受write.因为此时write将无法保证在整个集群中是”一致性成功”的.
- 处于LOOKING状态的server,会将实例化一个ReadOnlyZookeeper实例来为当前server上的所有请求服务.
- 如果client允许连接readonly server(当然也可以连接R/W server),那么在实例化ZK时,传递canReadonly = true即可.在client与server建立链接时(其他请求时也会),将会把此参数交付给server,server会回馈自己的模式是不是readonly.如果client和一个”只读”模式的server建立了链接,那么client在SendThread的处理体中,开启一个pingRW的分支,通过ping的方式查找server列表中是否有server已经处于R/W模式,如果找到,那么将以异常的方式(RWServerFoundException)结束当前socket,并和R/W server建立链接.这些过程,将对Client不可见.
- Client通过将请求/响应队列化来确保所有交互的有序性,xid是client维护的唯一性id.server端也会做类似的全序性控制.如果发现交互中次序不符合约定,将会导致异常.
- connectString即为客户端可以连接的Server列表,此列表必须和server配置的列表一致。即使不一致,也能工作,比如client交付了server配置列表的一部分;不过如果client交付的列表不在server配置中或许不能工作。
源码参考:
1) Zookeeper:面向client服务类,通过此类可以创建ZK client实例,以及向server提交请求,此类还间接的负责Watcher的注册和跟踪.
2) ClientCnxn:client与server交互处理类,负责根据请求类型/数据信号,封装请求内容;负责根据server响应的内容/error信号,封装响应内容或者触发本地事件;根据链接状态或者server响应内容,转换client状态.
3) ReadOnlyZookeeperServer:只读模式下,Server将会实例化一个临时的此实例,为client服务.
4) ServerCnxn/NIOServerCnxn:server端处理请求的handle类,通过工厂模式为每个client绑定一个.注意,它只是handle类,仍然会在单线程模式下被使用,被相应的ZookeeperServer实例所调度.
相关推荐
apache-zookeeper-3.7.0-bin.tar.gz
apache-zookeeper-3.5.7-bin.tar.gz 。
最新版linux apache-zookeeper-3.7.0-bin.tar.gz最新版linux apache-zookeeper-3.7.0-bin.tar.gz
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性...window下先解压为apache-zookeeper-3.6.1-bin.tar.gz
apache-zookeeper-3.5.9-bin.tar.gz
最新版 apache-zookeeper-3.6.2-bin.tar.gz最新版 apache-zookeeper-3.6.2-bin.tar.gz
apache-zookeeper-3.7.1-bin.tar.gz 内容概要:通过带着读者手写简化版Spring框架,了解Spring核心原理。在手写Spring源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC, AOP、 Bean...
最新版windows apache-zookeeper-3.5.7-bin.tar.gz
apache-zookeeper分布式框架,压缩包内容:(apache-zookeeper-3.7.1-bin.tar.gz、apache-zookeeper-3.7.1.tar.gz、apache-zookeeper-3.6.4-bin.tar.gz、apache-zookeeper-3.6.4.tar.gz、apache-zookeeper-3.5.10-...
apache-zookeeper-3.6.0.tar.gz
apache-zookeeper-3.5.5.tar.gz,zookeeper的安装文件,解压后配置集群即可
zookeeper,linux系统3.5.8版本
zookeeper 3.5.5版本 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将...
LInux sed部署Zooker集群
zookeeper-3.5.2-alpha.tar.gzzookeeper-3.5.2-alpha.tar.gz
zookeeper-3.4.5-cdh5.16.2.tar.gz 资源包,之前的原网站上无法下载,后经多种途径下载到该资源包,上传到博客上供大家使用。
apache-zookeeper-3.6.3-bin.tar的压缩包,解压到本地即可使用,还有zk.sh的脚本以及zoo.cfg和xsync。ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护。ZooKeeper 可以视为一个高可用的文件系统。ZooKeeper ...
zookeeper-3.5.8 版本, ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
zookeeper-3.4.10.tar.gz 安装包
zookeeper-3.4.5-cdh5.10.0.tar.gz工具包用于支持hadoop的高可用热备管理