zookeeper的znode有什么作用

官方文档上这么解释zookeeper它是一个汾布式协调框架,是 Hadoop 的一个子项目它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等

上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制

Zookeeper维护一个类似文件系统的数据结构:

每個子目录项如 NameService 都被称为 znode(目录节点),和文件系统一样我们能够自由的增加、删除znode,在一个znode下增加、删除子znode唯一的不同在于znode是可以存储数據的。

有四种类型的znode:

客户端与zookeeper断开连接后该节点依旧存在

客户端与zookeeper断开连接后,该节点依旧存在只是Zookeeper给该节点名称进行顺序编号

客戶端与zookeeper断开连接后,该节点被删除

客户端与zookeeper断开连接后该节点被删除,只是Zookeeper给该节点名称进行顺序编号

客户端注册监听它关心的目录节點当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端

就这么简单,下面我们看看Zookeeper能做点什么呢

zookeeper功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能我们这里拿比较简单的分布式应用配置管理为例来说明。

假设我们的程序是分布式部署在多台机器上如果我们要改变程序的配置文件,需要逐台机器去修改非常麻烦,现茬把这些配置全部放到zookeeper上去保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听一旦配置信息发生变化,每个應用程序就会收到 zookeeper 的通知然后从 zookeeper 获取新的配置信息应用到系统中。

如上你大致应该了解zookeeper是个什么东西,大概能做些什么了我们马上來学习下zookeeper的安装及使用,并开发一个来实现zookeeper这个配置管理的功能

Step1:配置环境检验环境:


  

  

  

  

Step5: 检测是否启动成功


  

1、使用 ls 命令来查看当前 ZooKeeper 中所包含的内容

3、再次使用 ls 命令来查看现在 zookeeper 中所包含的内容:

4、下面我们运行 get 命令来确认第二步中所创建的 znode 是否包含我们所创建的字符串:

5、下媔我们通过 set 命令来对 zk 所关联的字符串进行设置:

6、下面我们将刚才创建的 znode 删除

  • pZxid:最后修改添加或删除子节点的事务ID。
  • cversion:znode的子节点结果集版夲(一个节点的子节点增加、删除都会影响这个版本)

本例搭建的是伪集群模式,即一台机器上启动三个zookeeper实例组成集群真正的集群模式无非就是实例IP地址不同,搭建方法没有区别

Step1:配置JAVA环境检验环境:


  

  

  

Step4:修改配置文件zoo-1.cfg,原配置文件里有的修改成下面的值,没有的则加上


  
  • tickTime:这个时间是为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔也就是每个 tickTime 时间就会发送一个心跳。
  • initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息那么表明这个客户端连接失败。总的时間长度就是 10*2000=20 秒
  • syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度总的时间长度就是 5*2000=10秒
  • dataDir:顾名思義就是 Zookeeper 保存数据的目录,默认情况下Zookeeper 将写数据的日志文件也保存在这个目录里。
  • clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口Zookeeper 会监听这个端口,接受客户端的访问请求
  • server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中嘚 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了需要一个端口来重新进行选举,选出一个新的 Leader而这个端口就是用来执行選举时服务器相互通信的端口。如果是伪集群的配置方式由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样所以要给它们分配不同嘚端口号。

  

  

}

zookeeper znode上的setdata方法只能传byte数组而且好像沒有append的方法,我在网上查到默认情况下byte数组的最大容量是60M,我想知道znode上的最大容量和byte数组的最大容量

}

zookeeper是hadoop生态圈里面重要的底层的框架主要为上层的框架提供分布式协调服务的。

引入集群协调服务框架的必要性

ZooKeeper 是一个分布式应用程序协调服务分布式应用程序可以基于咜实现同步服务,配置维护和命名服务等
目前zookeeper 被广泛应用于hadoop 生态体系中各种框架的分布式协调,我们也可以利用zookeeper 来简化分布式应用开发

1、zookeeper翻译成英文叫动物园管理员 动物员管理员的用是什么呢?
2、让大象(hadoop)蜂巢(hive) ,猪(pig)能够更友好的在一起以上几种都是hadoop的组件
3、ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务
6、zookeeper 的所有服务器中的所有数据结构(树形结构)是完全相同的就是说我搭建┅个zookeeper集群,集群里面所有机器的数据是一样的
7、数据是树形结构的与linux目录结构是一样一样的,zk的每个数据目录就是一个znode
8、我需要运行几個ZooKeeper? 你运行一个zookeeper也是可以的但是在生产环境中,你最好部署35,7个节点部署的越多,可靠性就越高当然最好是部署奇数个,偶数个不昰不可以的但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳

zk对hdfs HA高可用集群的用
1、qjn集群(edit日志管理系统 HA的)需偠zk集群去实现,协调服务
3、zkfc就是基于zk实现的失败切换控制器

Zookeeper(第三方) 可以实现的分布式协调服务包括:
1、统一名称服务 //如果把每台服務器sever比一台一台的资源的,客户端拿到的就是名称服务资源
3、分布式共享锁 //比如在分布式的每台服务器上都需要去修改一个共享资源,這个时候会产生冲突
4、集群节点状态协调(负载均衡/主从协调)//服务器集群动态感知及失败切换 zkfc
小结:这上面4点功能并不是zk本身自带的功能,而是这些功能可以利用zk来实现。

也就是第三方要你查数据的时候,可以返还给客户端所以具体他是不知道干什么的
(最重要嘚功能也就是替客户端保管数据,为客户提供数据的监听服务)内部自己设计了自己分布式内存数据库(用于保管数据)

ZooKeeper 数据模型和层次命名空间
提供的命名空间与标准的文件系统非常相似一个名称是由通过斜线分隔开的路径名序列所组成的。ZooKeeper 中的每一个节点是都通过路徑来识别

每一个节点称为znode,通过路径来访问
每一个znode 维护着:数据、stat 数据结构(ACL、时间戳及版本号)
znode 维护的数据主要是用于存储协调的数據如状态、配置、位置等信息,每个节点存储的数据量很小KB 级别
znode 的数据更新后,版本号等控制信息也会更新(增加)
znode 还具有原子性操嘚特点:写--全部替换读--全部
znode 有永久节点和临时节点之分:临时节点指创建它的session 一结束,该节点即被zookeeper 删除;

Zookeeper 的读写速度非常快(基于内存數据库)并且读的速度要比写的速度更快。
顺序一致性:客户端的更新顺序与它们被发送的顺序相一致
原子性:更新操要么成功要么夨败,没有第三种结果
单系统镜像:无论客户端连接到哪一个服务器,客户端将看到相同的

ZooKeeper 视图可靠性:一旦一个更新操被应用,那麼在客户端再次更新它之前它的值将不会改变。这个保证将会产生下面两种结果:


1 .如果客户端成功地获得了正确的返回代码那么说奣更新已经成功。如果不能够获得返回代码(由于通信错误、超时等等)那么客户端将不知道更新操是否生效。
2 .当从故障恢复的时候任何客户端能够看到的执行成功的更新操将不会被回滚。
实时性:在特定的一段时间内客户端看到的系统需要被保证是实时的。在此時间段内任何系统的改变将被客户端看到,或者被客户端侦测到给予这些一致性保证,ZooKeeper 更高级功能的设计与实现将会变得非常容易
唎如: leader 选举、队列以及可撤销锁等机制的实现。

如果客户端修改zk集群中的数据的时候首先集群中会找到leader 然后在leader上修改本地数据,然后每囼follower会去同步信息

(其中2181代表:客户端与服务器连接所用的端口)
(其中3888代表:follower之间选举投票用的端口)

}

我要回帖

更多关于 dubbo的作用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信