为什么服务器数量必须是奇数?zookeeper工作原理再思考

举报
老卫 发表于 2020/07/08 11:50:25 2020/07/08
【摘要】 在泰山服务器上测试zookeeper时,感慨万千。一来感慨居然用上了国产的硬件体系,二来也是盼望什么时候有国人提出的类似Paxos这样基石性质的算法一、zookeeper工作原理ZooKeeper是一个典型的分布式数据一致性的解决方案。分布式应用可借助Zookeeper它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等服务管理功...

在泰山服务器上测试zookeeper时,感慨万千。

一来感慨居然用上了国产的硬件体系,二来也是盼望什么时候有国人提出的类似Paxos这样基石性质的算法


一、zookeeper工作原理

ZooKeeper是一个典型的分布式数据一致性解决方案。分布式应用可借助Zookeeper它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等服务管理功能。

  • 顺序一致性
    从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。

  • 原子性
    所有事务请求的结果在集群中所有机器上的应用情况是一致的,也就是说要么整个集群所有集群都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。

  • 单一视图
    无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。

  • 可靠性
    一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来,除非有另一个事务又对其进行了变更。

  • 实时性
    通常人们看到实时性的第一反应是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。这里需要注意的是,ZooKeeper仅仅保证一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。


二、过半机制

zookeeper集群中所有的操作都必须遵从过半机制,即必须保证一半以上的Server同意这个proposal,这个提议才会成功。

zookeeper中的过半机制保证了zookeeper集群的数据一致性。

三、服务器为什么是奇数

leader选举算法采用了paxos协议

paxos核心思想:当多数server写成功,则任务数据写成功。

2N-1台服务器和2N台服务器的容灾能力是一样的。因此服务器数量一般为单数个。例如,如果有3个server,最多允许有一个server挂掉,如果有4个server,则同样最多允许一个server挂掉,


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。