摘要: 关于Zookeeper客户端几个注意的地方: 1. 服务器地址管理器:HostProvider; Zookeeper提供了对HostProvider的默认实现(上一篇中这两个类的源码已经列出,这里不再重复); 在获取一个可用服务器地址的时候,使用StaticHostProvider的next方法。 阅读全文
posted @ 2019-11-19 20:41 艾尔猿 阅读(297) 评论(0) 推荐(0) 编辑
摘要: Zookeeper的客户端主要由以下几个核心组件: Zookeeper实例:客户端入口; ClientWatchManager:客户端Watcher管理器; HostProvider:客户端地址列表管理器。 ClientCnxn:客户端核心线程。其内部包含两个线程:SendThread和EventT 阅读全文
posted @ 2019-11-19 19:02 艾尔猿 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 承接上一篇,接着来说通信协议部分; Zookeeper基于TCP/IP协议,实现了自己的通信协议来完成客户端与服务端,服务端与客户端之前的网络通信; Zookeeper的请求和响应的结构:(请求/响应)头+(请求/响应)体; 1. 请求部分 请求头:包含了请求的最基本信息,xid和type; mod 阅读全文
posted @ 2019-11-04 18:10 艾尔猿 阅读(228) 评论(0) 推荐(0) 编辑
摘要: Zookeeper的客户端和服务端会进行一系列的网络通信以实现数据传输,对于一个网络通信,首先要解决的就是对数据的序列化和反序列化; ZK使用jute这一序列化组件来进行数据的序列化和反序列化; 使用Jute进行序列化:看一段代码: 1 import org.apache.jute.Record; 阅读全文
posted @ 2019-11-03 19:43 艾尔猿 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 承接上一篇:继续接受最后一个特性:ACL-保障数据的安全; Zookeeper提供了一套完善的ACL(Access Control List)权限控制机制来保证数据的安全; 标识一个有效的ACL的三个维度:权限模式(Scheme),授权对象(ID),权限(Permission),通常使用 schem 阅读全文
posted @ 2019-10-28 20:36 艾尔猿 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 承接上一篇:继续介绍Watcher部分: <4> Watcher :数据变更的通知: zk提供了分布式数据的发布/订阅功能:当主题对象自身状态变化是,会通知所有订阅者; 在zk中引入Watcher机制来实现这种分布式通知功能;ZK允许客户端向服务端注册一个Watcher监听,当服务端的一些指定的事件 阅读全文
posted @ 2019-10-28 12:14 艾尔猿 阅读(204) 评论(0) 推荐(0) 编辑
摘要: Zookeeper的几个概念:(接下来将从这几个概念书写Zookeeper的内部工作流程) 数据模型 节点特性 版本 Watcher ACL <1> 数据模型: Zookeeper的视图很热Unix文件系统很像。但没有引入文件和文件目录相关概念;而是使用“数据节点”概念,称为ZNode; ZNode 阅读全文
posted @ 2019-09-14 16:23 艾尔猿 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 本题代码来自Leetcode官方,个人对其理解后,生成自己的注解,以便更好的让读者理解。如有侵权,立即删除! 阅读全文
posted @ 2019-08-06 09:40 艾尔猿 阅读(218) 评论(0) 推荐(0) 编辑