博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zookeeper小入门(一)
阅读量:5892 次
发布时间:2019-06-19

本文共 1175 字,大约阅读时间需要 3 分钟。

最近想学东西,于是就又拿起前段时间因为“没时间”而落下的zookeeper啃了起来,第一次啃完教程发现什么都不明白,第二次啃完发现,这东西,就这么"简单"的东西啊?

先来摘抄一段让人十分讨厌又不得不看的概述

Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。

好吧,第一次看完这句话,协调两个字吸引我,其他都是废话。众所周知分布式的系统非常难以管理,如果开发一个master又会碰到同步等各种多线程(进程)碰到的问题,zookeeper给了我们什么勇气能让我们搞定这个事情,那么答案如下:

zookeeper的特性

每时每刻我们访问zookeeper的树时, 相同节点返回的数据都是一致的.

OK,那行,我相信你了啊:P。上面这句话意味着我们对Zookeeper进行访问的时候,无论是什么时间(就是并发)访问的时候,不会引起脏读重复读等等(真的是这样么?其实心中还有点疑虑)。

好吧,暂且抛开疑虑,让我们看一下zookeeper的本质。说白了zookeeper的数据结构你可以看成是linux的文件系统(是不是这么说太简单粗暴),依照这种方式,zookeeper提供以下几种特性

统一命名服务

/zk_test

/zookeeper
/zk_test/dir

这几个路径是不是看上去很眼熟啊~ 这就是zooker的DataModel了。这些用来干嘛用呢?

有些博文里把zookeeper提供的这种命名结构称之为统一命名服务。 好吧,就是给指定的结点(zookeeper里面称之为znode)提供了统一的名称。前提是知道zookeeper是分布式的,而且zookeeper足够稳定,所以你的分布式服务的每一个服务器都可以找到一个统一的配置文件服务(就是这里的一个znode啦),他们在任何时刻读到的内容都是一致的。因此你可以把你的配置文件,或者分布式的服务器列表等数据放入这个znode中,并使用watch监视,如果里面的内容被修改了,那么所有的服务器都会被通知到(这里使用了观察者模式咯)。

分布式锁服务

这个特性是最吸引我的特性了,如何实现分布式锁呢,就是使用zookeeper提供的有序临时的znode特性实现。说白了就是需要锁的程序创建一个临时结点,这个结点会在它断开或者删除的时候被删除,它只用检测下它自己的序号在所有子结点中的序号是不是最小的即可。当然详细的可以参照 这篇文章,同时写了如何避免羊群效应。

还有其他其他的一些特性。

这些特性都是基于zookeeper可靠的DataModel上来的。官网可能没有应用场景的展现。

以上是Zookeeper的介绍,我想写下一篇去介绍下官网的demo。

文章写的少,文笔好烂,如有错误,请指正,非常感谢非常感谢。

转载地址:http://uzbsx.baihongyu.com/

你可能感兴趣的文章
[原]OWC做电子表格和图表的试验
查看>>
TSP 模拟退火
查看>>
im2rec 修改resize
查看>>
NOI2007 生成树计数
查看>>
第四十二课:基于CSS的动画引擎
查看>>
学习无符号整型和有符号整型数的范围
查看>>
LeetCode 10. Regular Expression Matching
查看>>
xgboost: 速度快效果好的boosting模型
查看>>
NUC1014 排版题.输出排列成菱形的字母
查看>>
HDU1106 排序
查看>>
windows7下系统保护中出现错误“文件名、目录名或卷标语法不正确。(0x8007007B)“ 以及保护设置列表中出现“Windows7_os(c:)(找不到)”选项时的解决方法...
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>
jmeter使用HTTP代理服务器
查看>>
3G下的无压缩视频传输(基于嵌入式linux)
查看>>
Java Note
查看>>
16.创建文本节点createTextNode
查看>>
zabbix基础使用(以思科交换机为例)
查看>>
addLoadEvent
查看>>
Effective_STL 学习笔记(三十七) 用 accumulate 或 for_each 来统计区间
查看>>
python——元素列表练习
查看>>