官方的解释:Zookeeper提供了诸如统一命名空间服务,配置服务和分布式锁等分布式基础服务。

嗯,说上面这个话的人,良心不会痛吗?
Zookeeper功能如上边说到的:统一命名空间服务
其他就tm跟我们平时本地磁盘那种文件系统没多大区别
文件系统大家都知道吧,例如windows的:

我的电脑://
············C://
·················Windows
·················program files
············D://
·················相片
·················电影

如果要把window的“我的电脑”理解为根目录的话,
在Zookeeper中则是用/作为根目录。
/:
········用户自己创建的文件夹1
·························文件夹1下的某文件1
·························文件夹1下的某文件2
········用户自己创建的文件2
·························文件夹2下的某文件1
·························文件夹2下的某文件2

注意了,在我的理解中,Zookeeper这个看上去没什么特别的文件结构其实非常有用,让我来举例子吧。

例如可以用Zookeeper的这种文件结构做分布式锁
我先说一下分布式锁是什么东西:
有两台电脑都想去修改存在第三台电脑的一个文件,但是这个文件同一时刻只能由一台电脑访问,所以需要加一把锁来满足同一时刻只有同一个电脑访问这个文件的需求。

我们来看看Zookeeper是如何利用文件结构来完成这个分布式锁这个功能的:
还是上面的例子:
电脑1访问美国某电脑文件之前,先去Zookeeper中某目录(例如/readfile)下创建一个顺序文件(所谓顺序文件,就是Zookeeper会为你创建的文件加一个顺序号,这个序号由时间先后顺序递增),名字叫“我要访问A文件+顺序号”
电脑2访问美国某电脑文件之前,先去Zookeeper中与电脑1同一目录(/readfile)创建一个顺序文件,名字叫“我要访问A文件+顺序号”
电脑3访问美国某电脑文件之前,先去Zookeeper中与电脑1同一目录(/readfile)创建一个顺序文件,名字叫“我要访问A文件+顺序号”

假设现在三台电脑创建了三个文件,分别是:
电脑1创建的:我要访问A文件00000000001
电脑2创建的:我要访问A文件00000000003
电脑3创建的:我要访问A文件00000000002

其实这个过程就有点像排队拿锁的过程,电脑1创建的序列号最小,那么电脑1就拿到了锁,电脑2和电脑3就等着电脑1访问文件结束,才能访问。
这里我又需要说一下Zookeeper里面的文件类型:
1、就是我们刚刚说的顺序文件
例如电脑1创建的:我要访问A文件00000000001。
2、无顺序文件
就是创建文件后,不会在文件名后面加上数字编号。
3、临时节点
临时节点是什么意思呢?电脑1刚刚在Zookeeper中创建了一个文件,如果电脑1断开与Zookeeper的连接,这个时候电脑1创建的文件就会被Zookeeper自动删除。
4、永久节点
如果某电脑在Zookeeper上创建的是永久节点,那当某电脑与Zookeeper断开之后,创建的节点仍在存在
注:这里所说节点和文件等效,说文件是问了方便大家理解。
上面的4种类型的组合方式是:顺序临时节点,无顺序临时节点,顺序永久节点,无顺序永久节点4种。

现在再来说刚刚三台电脑访问美国某电脑上的文件,电脑1创建的其实是临时顺序节点,那当电脑1访问完美国某电脑上的文件之后,电脑1将断开与Zookeeper的连接,这个时候电脑1创建的文件被Zookeeper自动删除,电脑3创建的文件此时序号最小,所以电脑3拿到锁,然后访问美国某服务器上的文件。(这里还有一些细节没有讲到,因为这些细节涉及到Zookeeper另一个监听的特性,之后再讲)

这里再说清楚几个事情:
Zookeeper是一个集群,多台服务器对外提供服务,但是对于客户端来说是不可见的,啥意思呢?我来讲一个故事,这里也比较重要
最开始有个喜欢拽专业词汇的程序员,我们叫他小逼吧,小逼的妈妈死了,他哭瞎了眼睛。在他妈妈的葬礼上,他饿了,于是点了一份外卖。
这个时候有很多外卖小哥在等着接单,然后有一个外卖小哥先抢到单子,告诉大家:他的外卖我去送,你们等其他单子吧。于是乎这个抢到单子的外卖小哥把外卖送到小逼手上,小逼由于眼瞎,并不知道送外卖的人是谁。

Zookeeper其实是部署在很多台电脑上,但是每个电脑上部署的Zookeeper几乎一样,每个Zookeeper都可以看做外卖小哥,一个外卖小哥接到单子,也会告诉其他外卖小哥这个消息,Zookeeper文件系统也是一样,例如电脑1在某一台Zookeeper电脑上创建了一个文件,那么Zookeeper也会将这个文件同步到其他Zookeeper电脑上。
好,所以Zookeeper分布式,就是这么分布来的,Zookeeper分布在不同节点上,某台节点上有文件删除修改就跟其他节点上的Zookeeper兄弟说,然后一起同步。理解了这个再来看一开始装逼的傻逼说的充满专业术语的话:

Zookeeper提供了诸如统一命名空间服务,配置服务和分布式锁等分布式基础服务。
统一命名空间服务:我们上文说了,文件系统而已。
分布式锁:我们上文也说了,就是利用文件系统创建节点来完成锁的效果。

Zookeeper白话解释的更多相关文章

  1. 用大白话解释什么是Socket

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 我在去年就学习过Java中 ...

  2. 白话解释IIS并发连接数

    做负载均衡的时候会发现有很多并发数的参数.其中有一个"IIS并发连接数"是我们要关注的. 假设"IIS并发连接数"显示为1000,这并不代表有1000个客户端在 ...

  3. 六白话经典算法系列 高速分拣 高速GET

     高速分拣,因为相同的排序效率O(N*logN)几个订购流程更高效,因此,经常使用,再加上高速分拣思想----分而治之的方法也是非常有用的,如此多的软件公司书面采访.它包含了腾讯,微软等知名IT企业宁 ...

  4. ZooKeeper系列(1):安装搭建ZooKeeper环境

    ZooKeeper系列文章:https://www.cnblogs.com/f-ck-need-u/p/7576137.html#zk ZooKeeper有三种安装模式:单机安装(standalone ...

  5. “context:include-filter”与“context:exclude-filter”标签作用解释

    注意到spring中<context:component-scan>标签中会出现include和exclude的子标签,具体是做什么用的? spring的配置文件与springmvc的配置 ...

  6. zookeeper 快速入门

    分布式系统简介 在分布式系统中另一个需要解决的重要问题就是数据的复制.我们日常开发中,很多人会碰到一个问题:客户端C1更新了一个值K1由V1更新到V2.但是客户端C2无法立即读取到K的最新值.上面的例 ...

  7. 探究Dubbo的拓展机制: 上

    这篇博文是我决心深度学习Dubbo框架时记录的笔记, 主题是Dubbo的拓展点, 下面的几个部分相对来说比较零散, 貌似是不和主题挂钩的 , 并且是一些很冷门的知识点 , 但是它们确实是深入学习Dub ...

  8. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

  9. 窥探Swift之新添数据类型元组与可选值

    今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional).上面这两个类型是Swift独有的类型,使用起来也是非常方便的,今天就通过一些 ...

随机推荐

  1. C10K问题和多进程模型

    收录编辑来自马哥教育相关课程 内核空间的相关程序在调度用户空间里的进程的时候,也占用了cpu资源...... nginx可以作为两种类型的反向代理 http 和smtp(mail) C10K问题, 当 ...

  2. luogu SP8093 后缀自动机+树状数组+dfs序

    这题解法很多,简单说几个: 1. 线段树合并,时间复杂度是 $O(nlog^2n)$ 的. 2. 暴力跳 $fail,$ 时间复杂度 $O(n\sqrt n),$ 比较暴力. 3. 建立后缀树后在 $ ...

  3. jquery.qrcode.js生成二维码(前端生成二维码)

    官网地址:http://jeromeetienne.github.io/jquery-qrcode/ 第一步引入插件: <script type='text/javascript' src='h ...

  4. 秒的换算:ms(毫秒),μs(微秒),ns(纳秒),ps(皮秒)

    皮秒 皮秒,符号ps(英语:picosecond ).1皮秒等于一万亿分之一秒(10-12秒) 1,000 皮秒 = 1纳秒 1,000,000 皮秒 = 1微秒 1,000,000,000 皮秒 = ...

  5. Vue_(Router路由)-vue-router路由的基本用法

    vue-router官网:传送门 vue-router起步:传送门 vue-router路由:Vue.js官网推出的路由管理器,方便的构建单页应用 单页应用:Single Page Applicati ...

  6. js off动画事件

    每个假期都过得如此快10月一是2017年最后一个假期.不由感叹时间过得真快.我已上个月离职,一直在家休整,今天得空吧前几天学习的知识真理一下. 今天主要整理关于,offset系列的,动画是咱们全都工作 ...

  7. 事件处理机制与Handler消息传递机制

    一.基于监听的事件处理机制 基于监听的时间处理机制模型: 事件监听机制中由事件源,事件,事件监听器三类对象组成 处理流程如下: Step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作 St ...

  8. ARP 之 发送请求arp_solicit

    概述 arp_solicit用来发送ARP请求,首先会根据ARP_ANNOUNCE参数来选取源地址,然后判断是否达到内核发送次数上限,未达到则调用内核arp_send_dst函数发送,如果达到上限,则 ...

  9. 【软件工程】Alpha冲刺 (5/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 学习调用中国天气网API,接近实现天气推送功能 对天气推送的形式进行讨论及重确 ...

  10. ubuntu进行apt-get时候出现Package ssh is not available, but is referred to by another package 错误

    今天在ubuntu进行ssh安装的时候,出现如下错误. Reading package lists... Done Building dependency tree... Done Package s ...