初识Zookeeper

zookeeper的官网

zookeeper搭建

什么是zookeeper?

zookeeper 是一个分布式协调组件,主要解决了分布式一致性问题和分布式锁。

什么是分布式一致性问题?

一个分布式系统中多节点提出一个请求,但只有一个是可用的。要保证所有发起请求都收到结果。

zookeeper节点有哪些特性?

永久节点:节点创建后会被持久化,只有主动调用delete方法的时候才可以删除节点。

临时节点:节点创建后在创建者超时连接或失去连接的时候,节点会被删除。临时节点下不能存在字节点。

排序节点:创建的节点名称后自动添加序号

临时排序节点:顺序自动编号持久化节点

zookeeper 集群角色

Leader角色是zookeeper集群的核心,主要负责

  1. 事务请求的唯一调度和处理者,保证集群事务处理的顺序

  2. 集群内部各服务器的调度者

Follower角色

  1. 处理客户端非事务请求、转发事务请求给leader服务器

  2. 参与事务请求的Proposal投票(需要半数以上服务器通过才能通知 leader commit)

  3. 参与Leader选举的投票

Observer角色

  1. 充当zk集群的最新状态并同步到Observer服务器上,只提供非事务的请求,不参与任何投票

集群组成


        通常 zookeeper 是由2n+1台server组成,每个server都知道彼此的存在。对于2n+1台server,只要有n+1台(大多数)server可用,整个系统保持可用。 我们已经了解到,一个 zookeeper 集群如果要对外提供可用的服务,那么集群中必须要有过半的机器正常工作并且彼此之间能够正常通信。

        基于这个特性,如果要搭建一个能够允许F台机器down掉的集群,那么就要部署2*F+1台服务器构成的 zookeeper 集群。因此3台机器构成的 zookeeper 集群,能够在挂掉1台机器后依然正常工作。一个5台机器集群的服务,能够对2台机器挂掉的情况下进行容灾。如果一个由6台服务器构成的集群,同样只能挂掉2台机器。因此,5台和6台在容灾能力上并没有明显优势,反而增加了网络通信负担。系统启动时,集群中的server会选举出一台server为 Leader,其它的就作为 follower(这里不考虑 observer 角色)。

结论:之所以要满足这样一个等式,是因为一个节点要成为集群中的 leader,需要有超过集群中过半数的节点支持,这个涉及到 leader 选举算法。同时也涉及到事务请求的提交投票。

你可能感兴趣的:(zookeeper)