我是靠谱客的博主 真实书包,最近开发中收集的这篇文章主要介绍zookeeper的基本概念,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        Zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂的且容易出错的分布式致性服务封装起来,构成个高效可靠的原语集,并以些简单的接口提供给用户使用zookeeper是个典型的分布式数据致性的解决方案,分布式应用程序可以基于它实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能

基本概念

      集群角色

        通常在分布式系统中,构成⼀个集群的每台机器都有自己的角色,最典型的集群就是Master/Slave模式(主备模式),此情况下把所有能够处理写操作的机器称为Master机器,把所有通过异步复制方式获取最新数据,并提供读服务的机器为Slave机器。

        而在Zookeeper中,这些概念被颠覆了。它没有沿用传递的Master/Slave概念,而是引入了Leader、Follower、Observer三种角色Zookeeper集群中的所有机器通过Leader选举来选定⼀台被称为Leader的机器,Leader服务器为客户端提供读和写服务,除Leader外,其他机器包括Follower和Observer,Follower和Observer都能提供读服务,唯的区别在于Observer不参与Leader选举过程不参与写操作过半写成功策略,因此Observer可以在不影响写性能的情况下提升集群的性能。

 

  会话(session)

        Session指客户端会话,个客户端连接是指客户端和服务端之间的TCP长连接,Zookeeper对外的服务端口默认为2181,客户端启动的时候,先会与服务器建立TCP连接,从第次连接建立始,客户端会话的生命周期也开始了,通过这个连接,客户端能够心跳检测与服务器保持有效的会话,也能够向Zookeeper服务器发送请求并接受响应,同时还能够通过该连接接受来自服务器的Watch事件通知。

  数据节点(Znode)

        在谈到分布式的时候,我们通常说的“节点”是指组成集群的每台机器。然而,在ZooKeeper中,“节点”分为两类,第类同样是指构成集群的机器,我们称之为机器节点;第类则是指数据模型中的数据单元,我们称之为数据节点--ZNode。ZooKeeper将所有数据存储在内存中,数据模型是⼀棵树(ZNode  Tree),由斜杠(/)进行分割的路径,就是Znode,例如/app/path1。每个ZNode上都会保存自己的数据内容,同时还会保存系列属性信息。

  版本

        刚刚我们提到,Zookeeper的每个Znode上都会存储数据,对于每个ZNode,Zookeeper都会为其维护⼀个叫作Stat的数据结构,Stat记录了这个ZNode的三个数据版本,分别是version(当前ZNode的版本)、cversion(当前ZNode子节点的版本)、aversion(当前ZNode的ACL版本)。

  Watcher(事件监听器)

        Wathcer(事件监听器),是Zookeeper中个很重要的特性,Zookeeper允许用户在指定节点上注册⼀Watcher,并且在些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端, 该机制是Zookeeper实现分布式协调服务的重要特性

  ACL

        Zookeeper采用ACL(Access Control Lists)策略来进行权限控制,其定义了如下五种权限:

  • CREATE:创建子节点的权限。
  • READ:获取节点数据和子节点列表的权限。
  • WRITE:更新节点数据的权限。
  • DELETE:删除子节点的权限。
  • ADMIN:设置节点ACL的权限。

其中需要注意的是,CREATE和DELETE这两种权限都是针对子节点的权限控制

最后

以上就是真实书包为你收集整理的zookeeper的基本概念的全部内容,希望文章能够帮你解决zookeeper的基本概念所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部