以提问的方式来发起对zookeeper基本认识的思考
(1)集群中每个zookeeper服务器上的dataDir都一样,还是只有leader才有?znode也提出同样的疑惑
每个zk节点上的dataDir都基本相同,只是myid文件不同,其中保存了zk的id值
每个zk上的znode目录结构都是一样的,没有leader与follower的区别
(2)zk上的znode包含的信息有哪些?
znode创建时的zxid即czxid
znode最后一次修改是的zxid即mzxid
znode数据提交的次数即dataVersion
(3)数据的zxid是谁分配的,Follower还是Leader?
这个应该是由Leader来分配的,Follower没有办法分配
(4)在zk上所有的写的操作都是需要经过leader?
在zk上建立、删除znode,删除和修改数据都需要经过严格的决策过程
(5)假定同时有2个zk的客户端提起请求,zk是怎么控制谁先响应的呢?
zookeeper对外提供服务的本质
对外提供的服务基本可以分成2类
一类是具体的服务提供者需要在zk上保存资源信息
如:配置服务,缓存服务,这类算是zk提供的资源类服务,节点类型一般是永久节点
另一类是具体的服务提供者需要在保存资源标识
类似互斥锁、二阶段提交,这类算是zk提供的控制类服务,节点类型一般是临时节点和序列节点
zookeeper适合的使用场景
zk只适合在服务内部提供协议类和资源类的服务,不适合直接对普通的客户端提供直接服务器,它的znode的资源不可能提供很多,服务的节点尽量少。
zookeeper提供的服务的本质
就是将一个决策的系统独立出来了,由几个专有的节点去完成这个决策,可以说zk的follower就是代表服务器来选举
这个被代表的服务器的数目有限,不能太多,相当于说将这个决策过程交给了第三方了。
阅读(1516) | 评论(0) | 转发(0) |