前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《快学BigData》--Zookeeper 总结(A)(21)

《快学BigData》--Zookeeper 总结(A)(21)

作者头像
小徐
发布2023-03-06 21:13:52
1880
发布2023-03-06 21:13:52
举报
文章被收录于专栏:GreenplumGreenplum

Zookeeper 总结

学习是一种浮躁的事情,要静下心来慢慢的品味。 -- 小徐

官网:http://zookeeper.apache.org/

概述

zookeeper 主要负责管理机器的正常运行,如果一台机器突然死掉,利用zookeeper的机制可以快速的启动另一台备份的机器,zookeeper在这一方面做出了杰出的贡献,底层实现的算法是fast paxos 与baxic paxos算法,当zookeeper失去太多的leader或者太多的follower时会进入回复的状态,进行选举。

ZNode用来描述ZooKeeper中的数据节点,它持有一个状态数据结构(stat),此结构中包含数据更新的版本号、访问权限(ACL)更新的版本号、时间戳。这些版本号和时间戳使ZooKeeper可以验证缓存有效性和协调更新。每当ZNode中的数据更新时,版本号都会递增。

ZooKeeper主要的职责为管理用户提交的数据,以及为用户程序提供数据节点监听服务。

角色

Zookeeper 有两种角色分别是leader 与follower (obsever), 在选举时机器超过一半即可存活,一般的机器配置成单个数

特性

1、每台机器上保存的数据一致,用户不管访问那台机器获取的数据信息都是一致的

2、分布式的读写,更细请求转发都是由leader转发的

3、数据更新原子性,一次数据的更新要不成功要不失败

4、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

5、实时性,在一定的范围内,client能读取到最新的数据。

6、数据更新原子性,一次数据更新要么成功(半数以上节点成功),要么失败

选举机制

那么,初始化的时候,是按照上述的说明进行选举的,但是当zookeeper运行了一段时间之后,有机器down掉,重新选举时,选举过程就相对复杂了,在选举时zookeeper有Fast Paxos与Basic Paxos算法来辅助选举,系统默认的选举算法为fast paxos。

需要加入数据version、leader id和逻辑时钟。

数据version:数据新的version就大,数据每次更新都会更新version。

Leader id:就是我们配置的myid中的值,每个机器一个。

逻辑时钟:这个值从0开始递增,每次选举对应一个值,也就是说: 如果在同一次选举中,那么这个值应该是一致的 ; 逻辑时钟值越大,说明这一次选举leader的进程更新.

选举的标准就变成:

1、逻辑时钟小的选举结果被忽略,重新投票

2、统一逻辑时钟后,数据id大的胜出

3、数据id相同的情况下,leader id大的胜出

根据这个规则选出leader。

Zookeeper 节点的类型

Zookeeper有两种节点四种模式,有持久的一临时的两种节点,持久节点(PERSISTENT)、持久顺序节点(PERSISTENT_SEQUENTIAL)、临时节点(EPHEMERAL)、临时顺序节点(EPHEMERAL_SEQUENTIAL)四种模式。

Zookeeper 权限详解

ZK的节点有5种操作权限:

CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)。

代码显示所示zookeeper的权限:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 河马coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Zookeeper 总结
    • 概述
      • 角色
        • 特性
          • 选举机制
            • Zookeeper 节点的类型
              • Zookeeper 权限详解
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档