1.zk是什么?

  • 是一个分布式的协调服务软件

    分布式:多台机器的环境,它们各司其职,一起完成一个工作,每个人负责工作中不同的一部分。

    集群:多台机器的环境,每台机器都完成相同的工作。

    协调服务:在分布式环境下,如何控制大家有序的去做某件事。

  • zookeeper的本质:分布式的小文件存储系统

    • 存储系统:存储数据、存储文件 目录树结构
    • 小文件:上面存储的数据有大小限制
    • 分布式:可以部署在多台机器上运行,对比单机来理解。
  • zookeeper是一个标准的主从架构集群。

    主角色
    从角色
    
    主从各司其职 共同配合 对外提供服务。
    

2.zk具体的认识(具体是什么样的)

我的整体理解:

​ 首先,从微观上说,zookeeper本身是一个小文件存储系统,它的内里是树形结构,每个结点都叫znode,都可以存储数据或者有子节点,即每个结点即是目录也是文件.(临时节点除外,因为临时节点一旦客户端断开访问马上清除,如果它能有子节点,那万一子节点是永久节点,那不就乱套了嘛)

​ 其次,从宏观上说,每个电脑上都装一个zookeeper,它们共同组成一个主从结构的集群,整个集群用来帮助我们管理大数据组件的.

​ 它内部使用投票选举以及过半原则,选出主角色(主节点).外部,它可以帮助大数据集群实现例如主备切换等操作.

前置知识:

1.事务(transaction

​ 通俗理解 多个操作组成一个事务,要么一起成功,要么一起失败,不会存在中间的状态。如果中间失败了要进行回滚操作。

zk微观架构:

具体看思维导图

宏观上:

2. zookeeper集群角色 (注意:这里指的是zk集群哦,zk本身也是一个集群)

zk是标准的主从架构,只不过为了扩大集群的读写能力,同时又不增加选举复杂度,又提供了观察者角色。

  • 主角色(主节点) leader

    事务性请求的唯一调度和处理者,即增删改
    
  • 从角色(从节点) follower

    处理非事务性操作(就是查数据)  转发事务性操作给leader
    参与zk内部选举机制
    
  • 观察者角色 Observer

    除了没有投票选举权外,其他的和follower一模一样.
    
    从来特别特别大的公司,否则都不会部署它,了解即可,非得纠结,记住上面这句话就行.
    

请立刻去看总体图:图4

​ 为什么增删改都有主节点(主角色)来做呢?因为增删改都给主节点,一个节点同一时间只能干一件事情,它的好处是保证了数据的稳定性,不会因为并发导致出现问题.

3.Zookeeper的特点

全局数据一致(最重要):集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;

(下面的了解 有个印象即可)

可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。

顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;

\5. 实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。

zookeeper最重要的特性:全局数据一致性

4.全局一致性如何实现的?

zk中所有的增删改都是由主节点做的,它一旦完成这个操作,就会在一个很快的时间内,(毫秒级甚至更快)同步到其他zk子节点上,以保证全局数据的一致性.

5.主备切换

(是zk管理的Hadoop集群(比如hdfs中的namenode)的主备切换)

详见图5

6.投票机制

指的是zk自己的服务器集群选出主角色(leader)

采用过半原则(Paxos算法),只要有1个节点获取的票数超过或者等于整个集群数量的一半,它就是主节点,后来节点必须服从.

具体:

zookeeper的选举机制:

新的集群: (刚刚开启的zk集群)

把票投给myid值大的,采用过半原则.

旧的集群: (已经运行过一段时间的zk集群)

  1. 把票投给节点数(Znode)多的机器.
  2. 如果节点数一致,则投给myild值大的机器.

为什么旧的集群要把票投给节点数(Znode)多的机器呢?

​ 因为已经运行的集群,增删改都是由主节点来操作,而全局一致性是由主节点操作完成数据后往其他节点同步的,它是存在时间差的,此时若数据还没同步出去,正好新的集群加入了,重新选leader,那么投给它是不是更合理,这样保证了数据的稳定.

7.分布式和集群的区别,以及主备模式?

通俗的说,分布式是多个人干不同的事,然后构成一个整体

集群是多个人干同样的事

主备模式是一个人干活,其他人盯着

8.zk的命令

熟悉一下常用命令就可以,见笔记

原文地址:http://www.cnblogs.com/nanguyhz/p/16800189.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性