为什么使用Zookeeper?

为什么使用Zookeeper?:
随着大型互联网的发展,分布式系统应用越来越来越广泛,zookeeper成了分布式系统的标配。集群容错,动态负载均衡,动态扩容,异地多活等架构都依赖于zookeeper而搭建。

zookeeper是什么?

zookeeper是由雅虎创建的,基于google chubby,一个开源的分布式协调服务,是分布式数据一致性的解决方案。

zookeeper的特性

  • 顺序一致性,从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中。
  • 原子性,事务请求在所有集群是一致的,要么都成功,要么都失败。
  • 可靠性,一旦服务器成功应用某个事务,那么所有集群中一定同步并保留。
  • 实时性,一个事务被应用,客户端能立即从服务端读取到状态变化。

zookeeper的原理?

基于分布式协议pasxo,而实现了自己的zab协议。保证数据的一致性。

zookeeper的数据模型

  • 持久化节点,节点创建后一直存在,直到主动删除。
  • 持久化有序节点,每个节点都会为它的一级子节点维护一个顺序。
  • 临时节点,临时节点的生命周期和客户端会话保持一直。客户端会话失效,节点自动清理。
  • 临时有序节点,临时节点基础上多一个顺序性特性。

zookeeper使用场景有哪些?

  • 订阅发布
    • watcher机制
    • 统一配置管理(disconf)
  • 分布式锁(redis也可以)
  • 分布式队列
  • 负载均衡(dubbo)
  • ID生成器
  • master选举(kafka,hadoop,hbase)

集群角色有哪些?

leader

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

follower

  1. 处理非事务请求,以及转发事务请求到leader
  2. 参与事务请求提议的投票
  3. 参与leader选举的投票

observer

  1. 观察集群中最新状态的变化并同步到observer服务器上
  2. 增加observer不影响集群事务处理能力,还能提升非事务请求的处理能力

zookeeper集群为什么是奇数?

zookeeper事务请求提议需要超过半数的机器,假如是2(n+1)台,需要n+2台机器同意,
由于在增删改操作中需要半数以上服务器通过,来分析以下情况。
2台服务器,至少2台正常运行才行(2的半数为1,半数以上最少为2),正常运行1台服务器都不允许挂掉
3台服务器,至少2台正常运行才行(3的半数为1.5,半数以上最少为2),正常运行可以允许1台服务器挂掉
4台服务器,至少3台正常运行才行(4的半数为2,半数以上最少为3),正常运行可以允许1台服务器挂掉
5台服务器,至少3台正常运行才行(5的半数为2.5,半数以上最少为3),正常运行可以允许2台服务器挂掉
6台服务器,至少3台正常运行才行(6的半数为3,半数以上最少为4),正常运行可以允许2台服务器挂掉

zookeeper日志管理?

leader选举的原理

未完待续

如果文章对你有帮助,请去我的博客留个言吧! 我的博客

文章目录
  1. 1. zookeeper是什么?
  2. 2. zookeeper的特性
  3. 3. zookeeper的原理?
  4. 4. zookeeper的数据模型
  5. 5. zookeeper使用场景有哪些?
  6. 6. 集群角色有哪些?
    1. 6.1. leader
    2. 6.2. follower
    3. 6.3. observer
  7. 7. zookeeper集群为什么是奇数?
  8. 8. zookeeper日志管理?
  9. 9. leader选举的原理
  10. 10. 未完待续
,