一、简介

zookeeper 主要使用场景:分布式系统的分布式协同服务。协同工作就是通过某种方式,让着节点的信息能够同步和共享,依赖于进程间的通信。通信方式有俩种.

  • 通过网络进行信息共享

    现实工作中,leader在会议上会吧任务分配下去,组员通过leader的命令或者邮件知道自己要干什么。当有任务变化时,leader会单独告诉组员,或者再次召开会议。信息通过人与人的沟通直接完成传递。

  • 通过共享存储

现实中leader.吧项目上传到svn,组员拉取代码,然后干活。其中svn就是共享存储。

二、Zookeeper如何解决分布式系统面临的问题

  • 通过共享存储

    通过zookeeper实现分布式系统的协调,共享存储。zookeeper就像是svn,存储了任务分配、完成情况等共享信息。每个分布式节点订阅这些共享信息当主节点(组leader),对某个从节点分工信息做出改变时,相关订阅从节点会得到zookeeper的通知,获取最新的任务分配。完成工作后,把完成情况,存储到zookeeper.主节点订阅了完成情况,所以将会得到zookeeper的完工通知。把上图中的svn 和邮件信息合二为一,zookeeper代替。

三、基本概念

Zookeeper是分布式系统的分布式协同服务,也是一个典型的分布式一致性解决方案。基于他可以实现数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁、和分布式队列等功能。

1、集群角色

通常在分布式系统中,构成集群的每一台机器都有自己的角色。最典型的就是Master/Slave模式(主备模式),

在zookeeper中没有沿用传统的主备模式。引入Leader、Follower、Observer三种角色。Zookeeper集群中的所有机器都通过Leader选举一台被称为Leader的机器,Leader服务器对外提供读写服务。Follower、Observer也可以对外提供读写服务,唯一的区别就是Observer不参与Leader选举的过程、不参与与写操作的过半写成功策略。因此Observer在不影响性能的情况下提升集群性能。

zookeeper 的写流程:

2、会话(Session)

session 指的是客户端会话,Zookeeper对外默认端口是2181,客户端启动的与服务器建立TCP连接,从第一次连接建立开始,客户端的生命周期也就开始了,通过心跳检测机制与服务器保持有效会话,也向Zookeeper服务器,发送请求并接受响应,同时还可以接受来着服务器Watcher的事件通知。

3、数据节点(Znode)

“节点”,在分布式系统中,指的是组成集群的每一台机器.在Zookeeper中集群节点分为俩类:

  1. 机器节点

    集群的机器

  2. 数据节点(Znode)

    Zookeeper将所有数据存储在内存中,数据模型是是一颗(Znode Tree),由 /进行分隔的路径,就是一个Znode ,例如:/app/p_1.每个Znode 都会存储自己的数据内容,和一系列属性信息

4、版本

Zookeeper 每个Znode 都会存储自己的数据内容,和一系列属性信息。对于Znode Zookeeper 会为其维护一个叫做Start的数据结构,Start记录了Znode 的三个数据库版本,分别是 version(当前Znode 版本)、cversion(Znode 子节点版本)、aversion(当前Znode ACL版本)

5、Watcher事件监听器

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

6、ACL

Zookeeper采用ACL( Access Control Lists)策略来进行权限控制,其定义了如下五种权限 CREATE:创建子节点的权限 READ:获取节点数据和子节点列表的权限 WRTE:更新节点数据的权限 DELETE:制除子节点的权限 ADMN:设置节点ACL的权限 其中需要注意的是, CREATE和 DELETE这两种权限都是针对子节点的权限控制

三、Zookeeper简介的更多相关文章

  1. Zookeeper简介与安装

    Zookeeper:A Distributed Coordination Service for Distributed Applications. 一.Zookeeper简介 众所周知,协同服务是分 ...

  2. Zookeeper简介与集群搭建

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  3. Zookeeper简介与集群搭建【转】

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  4. Zookeeper简介及使用

    一.Zookeeper简介 1.zookeeper简介 动物管理员 Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调. 2.什么是ZooKeeper? ZooKee ...

  5. ZooKeeper学习之路(一)—— ZooKeeper简介及核心概念

    一.Zookeeper简介 Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护.Zookeeper可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知. ...

  6. ZooKeeper系列(一)—— ZooKeeper 简介及核心概念

    一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调 ...

  7. ZooKeeper简介

    本文中,我们将对ZooKeeper进行介绍.简单地说,ZooKeeper是一个用来在构成应用的各个子服务之间进行协调的一个服务. 由于其本身并没有特别复杂的机制,因此我们将会把更多的笔墨集中在如何对Z ...

  8. Mybatis sql映射文件浅析 Mybatis简介(三) 简介

    Mybatis sql映射文件浅析 Mybatis简介(三)   简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML ...

  9. Zookeeper简介及单机、集群模式搭建

    1.zookeeper简介 一个开源的分布式的,为分布式应用提供协调服务的apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...

  10. Zookeeper简介及安装(一)

    1 Zookeeper入门1.1 概述Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 1.2 特点 1.3 数据结构 1.4 应用场景提供的服务包括:统一命名服务 ...

随机推荐

  1. Markdown语法+Typora快捷键

    1. Markdown语法 1.1 代码块生成 // 对于代码块,使用"```+编程语言"即可生成书写对应代码块的区域 // JS代码块 ​```javascript // Jav ...

  2. vmlinux, Image ,zImage,uImage

    kernel 源码编译生成 vmlinx,vmlinux 是 elf 文件,对 vmlinux 使用 objcopy 得到 Image,Image 是纯粹的二进制文件,vmlinux 只能在OS环境下 ...

  3. ceph unfound objects 处理

    ceph Vol 45 Issue 1 1.unfound objects blocking cluster, need help! Hi, I have a production cluster o ...

  4. Mysql数据安全备份

    数据安全备份的意义 在出现意外的时候(硬盘损坏.断点.黑客攻击),以便数据的恢复 导出生产的数据以便研发人员或者测试人员测试学习 高权限的人员那操作失误导致数据丢失,以便恢复 备份类型 完全备份:对整 ...

  5. JWT(JSON Web Token)入门

    简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案 一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样. 1.用户向服务器发送用户名和密码. 2.服务器验证 ...

  6. tp5 上传图片(自定义图片路径)

    控制器调用 /** * [goods_addimg 图片上传] * @return [type] [description] */ public function addimg(){ if (requ ...

  7. 2021版的思维导图MindManager 安装激活以及换机教程

    思维导图软件MindManager更新版本啦,相信细心的小伙伴应该已经发现了,MindManager最新版的名称变成了MindManager Windows 21,并且更新了很多新功能,点击查看Min ...

  8. 【PYTEST】第四章Fixture

    知识点: 利用fixture共享数据 conftest.py共享fixture 使用多个fixture fixture作用范围 usefixture 重命名 1. 利用fixture共享数据 test ...

  9. Python基础整理,懒得分类了,大家对付看看吧

    第一次搞这么多图

  10. js控制某个div在页面加载完成5秒后隐藏

    <div id="k">测试</div><script>setTimeout("document.getElementById('k' ...