赞
踩
目录
十五、 Zookeeper对节点的watch监听是永久的嘛? 为什么不是永久的?
十六、chubby 是什么,和 zookeeper 比你怎么看?
答:
Zookeeper是一个开放源码的分布式协调服务。它是集群的管理者并监视着各节点的状态以及根据节点的反馈进行下一步操作。
最终将简单和性能高效、功能稳定的系统提供给用户。
分布式应用可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁、分布式队列等功能。
答:
答:
客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由Zookeeper来处理的。 对于写请求,这些请求会转发给其他Zookeeper机器并且达成一致后,请求才会返回成功。因此,随着zookeeper的集群机器增多,读的吞吐量会增大,但写的请求吞吐会下降。
答:
有序性是Zookeeper中非常重要的一个特性,所有的更新都是有序的。并且每一个更新都会有一个时间戳,这个时间戳称为Zxid,全名为Zookeeper Transaction id ,而读请求只会相对于个更新有序,也就是读请求的返回结果为最新的zxid。
答:
文件系统。
通知机制。
答:
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不 同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放 数据而目录节点不行。 Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这 种特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为 1M。
答:
答:
1、PERSISTENT-持久节点 除非手动删除,否则节点一直存在于 Zookeeper 上
- <dependency>
- <groupId>org.apache.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- <version>3.4.13</version>
- </dependency>
答:
有4种状态。 looking,following,leading,observing。
答:
在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行。其他机器可以共享这个计算结果,这样就大大减少了重复计算,提高性能。于是就需要进行leader选举,leader的作用为了给folower完成数据同步。
答:
Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。
如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;
如果是一个Leader宕机,Zookeeper会选举出新的Leader。
ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务,即过半可使用原则。只有在ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。
所以3个节点的cluster可以挂掉1个节点(leader可以得到2票>1.5)。
2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<=1)。
答:
2N+1台,N>0,即最少为3台。
答:
支持,主要包含2种方式,如下:
全部重启:关闭所有Zookeeper服务,修改配置之后启动。不影响之前客户端的会话。
逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。3.5版本开始支持动态扩容。
答:
不是永久监听的。 如果每个客户端对服务器的信息变动是永久监听的,那么当有很多客户端的时候,服务器的数据发生频繁更新时,所有的客户端将会收到通知。那么服务器和网络的压力也因此会变大。
如果客户端没有设置watch事件,那么服务器的数据发生更新时,不会通知该客户端。
在实际的应用中,客户端不需要了解服务器的内部的数据变更,只需要得到最新的数据即可。
这个原则就是:在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。
十八、Paxos算法解决的什么问题呢?
解决的就是保证每个节点执行相同的操作序列,master维护一个全局写队列,所有写操作都必须放入这个队列编号,那么无论我们写多少个节点,只要写操作是按编号来的,就能保证一致性。
Paxos算法通过投票来对写操作进行全局编号,同一时刻,只有一个写操作被批准,同时并发的写操作要去争取选票,只有获得过半数选票的写操作才会被批准(所以永远只会有一个写操作得到批准),其他的写操作竞争失败只好再发起一轮投票,就这样,在日复一日年复一年的投票中,所有写操作都被严格编号排序。编号严格递增,当一个节点接受了一个编号为100的写操作,之后又接受到编号为99的写操作(因为网络延迟等很多不可预见原因),它马上能意识到自己数据不一致了,自动停止对外服务并重启同步过程。任何一个节点挂掉都不会影响整个集群的数据一致性(总2n+1台,除非挂掉大于n台)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。