1,ZooKeeper概述
··· 作用:
    · ZooKeeper是为分布式应用程序提供的一个分布式开源协调框架,是Hadoop和Hbase的重要组件;
    · 主要用于解决分布式集群中应用系统的一致性问题;
    · 提供了类似于Unix的节点树方式来存储数据;
    · 可用于维护和监控存储数据的状态变化,从而达到基于数据的集群管理;
    · 提供了一组原语(机器指令),以及java和C语言的接口。
··· 特点:
    · 也是一个分布式集群,一个领导者(leader),多个跟随者(follower)。
    · 集群中只要有半数节点存活,ZooKeeper集群就可以正常服务。
    · 全局数据一致性:每个server都会保存一份相同到的副本,无论client连接哪个server,数据都是一样的。
    · 原子性:一次数据的更新,要么成功要么失败。
    · 数据的实时性:在一定时间范围内,client能够读取到最新的数据。
··· 数据模型:
    · ZooKeeper中的数据模型与Unix中的文件系统类似都是树形结构。在这个系统中没有文件和目录,而是采用节点                    (node)的概念,在这里是 znode;znode既可以保存数据,类似于文件;也可以保存其他znode,类似于目录。
    · 一个znode最多存储 1M的数据。
··· 应用场景:
    · 同一配置管理
    · 同一集群管理
    · 节点动态上下线感知
    · 软负载均衡
    · 分布式锁
    · 分布式队列
 
2,安装配置
··· 安装
    · 把ZooKeeper-3.4.14.tar.gz解压到 /opt/app/中。
    · 配置ZooKeeper环境变量。
··· 配置
    · 修改zoo.cfg文件:从conf/zoo_sample.cfg中复制一份。
    · 配置dataDir
    · 配置三个服务器的server.id,并在相应的dataDir下新建一个myid文件,内容为相应的id。
 
3,基本命令
··· zkServer.sh start :服务端命令
    · start 启动
    · stop 关闭
    · status 状态
··· zkCli.sh [-server] [ip:port]:启动客户端
    · 客户端常用命令:ls、get、set、quit、delete、create(创建时必须写入内容)
 
4,ZooKeeper工作原理
··· 选举机制
    · 基于节点在半数以上才能正常服务的要求,ZooKeeper适合安装在奇数台机器上。
    · ZooKeeper没有在配置中指定leader和follower,而是通过选举机制来选取一个leader,其他的为follower。
    · 选举时的权重:逻辑时钟(Epoch):已有票数 > 数据Id(zxid):保存的最新数据id最大 > 服务器Id(server.id)
··· 监听原理
    · 源码实现是观察者模式
    · 1,首先要有一个main线程,在main线程中创建ZooKeeper客户端。
    · 2,ZooKeeper客户端会创建两个线程,listener负责监听,connect负责网络连接通信。
    · 3,connect线程将注册的监听事件发送给ZooKeeper,ZooKeeper将这个监听事件添加到事件列表中。
    · 4,ZooKeeper监听到有数据或路径变化时,就会将这个消息发送给 listener线程。
    · 5,listener线程内部调用了 process()方法。
    · 用途:监听节点数据的变化;监听节点增减的变化。

··· 写数据流程
    · client向ZooKeeper中的Server1写数据时,如果Server1不是leader,则把请求转发给 leader。
    · leader会将请求广播给所有server,各个server写成功后就会通知leader。
    · 当leader收到半数以上的server写成功的通知后,就说明写成功了。
    · 成功后leader会通知Server1,Server1再通知client,这时写操作就算成功了。
    

 

4,ZooKeeper原理的更多相关文章

  1. Zookeeper(三) Zookeeper原理与应用

    一.zookeeper原理解析 1.进群角色描述 2.Paxos 算法概述( ZAB 协议)    分布式一致性算法 3.Zookeeper 的选主(恢复模式) 以一个简单的例子来说明整个选举的过程. ...

  2. Zookeeper原理和实战开发经典视频教程 百度云网盘下载

    Zookeeper原理和实战开发 经典视频教程 百度云网盘下载 资源下载地址:http://pan.baidu.com/s/1o7ZjPeM   密码:r5yf   

  3. 8.8.ZooKeeper 原理和选举机制

    1.ZooKeeper原理 Zookeeper虽然在配置文件中并没有指定master和slave但是,zookeeper工作时,是有一个节点为leader,其他则为follower,Leader是通 ...

  4. Apache ZooKeeper原理剖析及分布式理论名企高频面试v3.7.0

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache ZooKeeper官网 https://zookeeper.apache.org/ 最新版本3.7.0 ...

  5. (转)Zookeeper原理和作用

    本周末学习zookeeper,原理和安装配置 本文参考: http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ http:/ ...

  6. zookeeper原理解析-数据存储

    Zookeeper内存结构 Zookeeper是怎么存储数据的,什么机制保证集群中数据是一致性,在网络异常,当机以及停电等异常情况下恢复数据的,我们知道数据库给我们提供了这些功能,其实zookeepe ...

  7. Zookeeper 原理

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...

  8. zookeeper原理

    Zookeeper与paxos算法:http://www.riaos.com/ria/11299 Paxos算法1:http://blog.csdn.net/chen77716/article/det ...

  9. [转]Zookeeper原理及应用场景

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...

  10. zookeeper原理(转)

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...

随机推荐

  1. 小白学Java:奇怪的RandomAccess

    目录 小白学Java:奇怪的RandomAccess RandomAccess是个啥 forLoop与Iterator的区别 判断是否为RandomAccess 小白学Java:奇怪的RandomAc ...

  2. 洛谷 P1463 [POI2002][HAOI2007]反素数

    题目链接 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1, ...

  3. rhel

    1.查看硬盘大小 df -h 2.查看内存大小 free -h 3.配置主键名称 vim /etc/hostname# 查看 hostnamehostname 4.挂载镜像 mkdir -p /med ...

  4. 01Java语言基础

    [实验任务四]: 1.程序设计思想 根据RandomStr.java,随机生成6位字母,在对话框中输出,用户根据随机生成的验证码对应输入,程序根据用户输入的内容与系统随机生成的验证码字符比较,若相等, ...

  5. 深入学习MySQL 01 一条查询语句的执行过程

    在学习SpringCloud的同时,也在深入学习MySq中,听着<mysql45讲>,看着<高性能MySQL>,本系列文章是本人学习过程的总结,水平有限,仅供参考,若有不对之处 ...

  6. HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll

    // 摘要:     //     定义 ASP.NET 应用程序中的所有应用程序对象共有的方法.属性和事件.此类是用户在 Global.asax 文件中所定义的应用程序的基类.     [Toolb ...

  7. NOI2.5 8783:单词接龙

    描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙"中 ...

  8. basic-pentesting-1 靶机提权

    原文地址:https://www.payload.com.cn/   basic-pentesting-1 下载地址: https://www.vulnhub.com/entry/basic-pent ...

  9. Rainbow Plan团队项目第一次作业——项目计划

    团队项目--Rainbow Plan英语学习App 1.团队简介 1.1团队名称:Rainbow Plan (彩虹计划) 1.2团队成员: 队员学号 队员姓名 201731024235 何继武(组长) ...

  10. Oracle批量创建同义词

    一.介绍 Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用 ...