一、简介

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. thinkphp5.1与layui table表格使用

    第1部分:layui 的 html代码, 即第2部分 thinkphp 控制器方法 index/Dataz/returnShowUser 的view页面 <!DOCTYPE html> & ...

  2. Spring Cloud注册中心之Consul

    Consul简介 Consul是HashiCorp公司使用Golang语言开发的一中多服务解决方案工具,相比于其他服务注册中心来说,Consul的功能更为强大,丰富,其中最基本的功能包含下面几点(翻译 ...

  3. spring-boot-starter-parent和spring-boot-dependencies

    如何创建一个SpringBoot项目,SpringBoot的依赖引入都是基于starter的,通常创建一个SpringBoot项目都是通过继承关系指定pom文件中的parent. <parent ...

  4. CURLOPT_FOLLOWLOCATION

    curl爬取过程中,设置CURLOPT_FOLLOWLOCATION为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面

  5. java开发两年,这些线程知识你都不知道,你怎么涨薪?

    前言 什么是线程:程序中负责执行的哪个东东就叫做线程(执行路线,进程内部的执行序列),或者说是进程的子任务. Java中实现多线程有几种方法 继承Thread类: 实现Runnable接口: 实现Ca ...

  6. 标准库之collections

    collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter)   dict的子类,计算可hash的对象: 双端队列(deque)  类似于list ...

  7. 怎么用在线思维导图Ayoa规划个人任务

    在Ayoa的任务板功能中可以对某一任务进行详细设置,例如改变紧急情况/重要程度.添加到我的计划工具.设置开始日期.截止日期等. 图1:任务详情设置 而这里的"我的计划工具"就是一个 ...

  8. Camtasia处理音频制作BGM

    我们在剪辑自己录制的视频时经常会需要同时对音频进行处理,camtasia是一个可以对视频的音频或者单独的音频文件进行处理的软件,那我们就来看看到底如何使用camtasia 2019(Win)来处理音频 ...

  9. MindManager中主题间距/线条粗细的灵活调整

    在MindManager中,主题和线条是思维导图的基本元素,只有通过它们才能将要表达的思想呈现.并联系起来.因此,关于它们的属性设置就会多一点,如颜色.宽度.位置等.而调整主题之间的距离及线条的粗细, ...

  10. 如何使用系统清理缓存软件优化MacBook

    在我们使用我们的Mac一定的时间后,总是不可避免的出现Mac内存不足的情况,所以清理垃圾软件也就成为了我们电脑里必不可少的软件.苹果软件商店中有很多各有不同的清理垃圾软件,但我们往往很难从这一大堆软件 ...